mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-27 02:43:07 +00:00
136 lines
3.9 KiB
Java
136 lines
3.9 KiB
Java
/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License
|
|
* Version 1.0 (the "License"); you may not use this file except in
|
|
* compliance with the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS"
|
|
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
|
|
* the License for the specific language governing rights and limitations
|
|
* under the License.
|
|
*
|
|
* The Original Code is the Grendel mail/news client.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape Communications
|
|
* Corporation. Portions created by Netscape are Copyright (C) 1997
|
|
* Netscape Communications Corporation. All Rights Reserved.
|
|
*
|
|
* Created: Will Scullin <scullin@netscape.com>, 4 Nov 1997.
|
|
*/
|
|
|
|
package grendel.search;
|
|
|
|
import java.awt.Component;
|
|
import java.awt.Container;
|
|
import java.awt.Dimension;
|
|
import java.awt.IllegalComponentStateException;
|
|
import java.awt.Insets;
|
|
import java.awt.LayoutManager2;
|
|
|
|
class OperatorLayout implements LayoutManager2 {
|
|
int fMargin = 4;
|
|
Component fOperator;
|
|
|
|
public final static String kOperator = "Operator";
|
|
|
|
public void addLayoutComponent(Component aComponent, Object aConstraint) {
|
|
addLayoutComponent((String) aConstraint, aComponent);
|
|
}
|
|
|
|
public void addLayoutComponent(String aConstraint, Component aComponent) {
|
|
if (aConstraint != null && aConstraint.equals(kOperator)) {
|
|
if (fOperator == null) {
|
|
fOperator = aComponent;
|
|
} else {
|
|
throw new java.awt.IllegalComponentStateException();
|
|
}
|
|
}
|
|
}
|
|
|
|
public void removeLayoutComponent(Component aComponent) {
|
|
if (aComponent == fOperator) {
|
|
fOperator = null;
|
|
}
|
|
}
|
|
|
|
public void layoutContainer(Container aParent) {
|
|
int count = aParent.getComponentCount();
|
|
Component c[] = aParent.getComponents();
|
|
Insets insets = aParent.getInsets();
|
|
Dimension size = aParent.getSize();
|
|
int x = insets.left + fMargin;
|
|
int y = insets.top + fMargin;
|
|
int w = size.width - insets.left - insets.right - fMargin * 2;
|
|
|
|
if (fOperator != null) {
|
|
Dimension dim = fOperator.getPreferredSize();
|
|
//x += dim.width + fMargin;
|
|
w -= dim.width + fMargin;
|
|
}
|
|
|
|
for (int i = 0; i < count; i++) {
|
|
if (c[i] != fOperator) {
|
|
Dimension dim = c[i].getPreferredSize();
|
|
c[i].setBounds(x, y, w, dim.height);
|
|
y += dim.height + fMargin;
|
|
}
|
|
}
|
|
|
|
if (fOperator != null) {
|
|
Dimension dim = fOperator.getPreferredSize();
|
|
//fOperator.setBounds(insets.left + fMargin,
|
|
fOperator.setBounds(x + w + fMargin,
|
|
(y - dim.height) / 2,
|
|
dim.width, dim.height);
|
|
}
|
|
}
|
|
|
|
public Dimension preferredLayoutSize(Container aParent) {
|
|
int count = aParent.getComponentCount();
|
|
Component c[] = aParent.getComponents();
|
|
Insets insets = aParent.getInsets();
|
|
int h = fMargin * 2;
|
|
int w = 0;
|
|
|
|
for (int i = 0; i < count; i++) {
|
|
if (c[i] != fOperator) {
|
|
Dimension dim = c[i].getPreferredSize();
|
|
if (dim.width > w) {
|
|
w = dim.width;
|
|
}
|
|
h += dim.height;
|
|
}
|
|
}
|
|
|
|
w += insets.left + insets.right + fMargin * 2;
|
|
h += insets.top + insets.bottom + (count - 1) * fMargin;
|
|
|
|
if (fOperator != null) {
|
|
Dimension dim = fOperator.getPreferredSize();
|
|
w += dim.width;
|
|
}
|
|
|
|
return new Dimension(w, h);
|
|
}
|
|
|
|
public Dimension minimumLayoutSize(Container aParent) {
|
|
return preferredLayoutSize(aParent);
|
|
}
|
|
|
|
public Dimension maximumLayoutSize(Container aParent) {
|
|
return preferredLayoutSize(aParent);
|
|
}
|
|
|
|
public float getLayoutAlignmentX(Container aParent) {
|
|
return 0;
|
|
}
|
|
|
|
public float getLayoutAlignmentY(Container aParent) {
|
|
return 0;
|
|
}
|
|
|
|
public void invalidateLayout(Container aParent) {
|
|
}
|
|
}
|