mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
127 lines
3.7 KiB
Java
127 lines
3.7 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.Insets;
|
||
|
import java.awt.LayoutManager2;
|
||
|
import java.awt.IllegalComponentStateException;
|
||
|
|
||
|
class AttributeLayout implements LayoutManager2 {
|
||
|
int fMargin = 4;
|
||
|
Component fAttribute;
|
||
|
Component fOperator;
|
||
|
Component fValue;
|
||
|
|
||
|
public static final String kAttribute = "attribute";
|
||
|
public static final String kOperator = "operator";
|
||
|
public static final String kValue = "value";
|
||
|
|
||
|
public void addLayoutComponent(Component aComponent, Object aConstraint) {
|
||
|
if (aConstraint.equals(kAttribute) && fAttribute == null) {
|
||
|
fAttribute = aComponent;
|
||
|
} else if (aConstraint.equals(kOperator) && fOperator == null) {
|
||
|
fOperator = aComponent;
|
||
|
} else if (aConstraint.equals(kValue) && fValue == null) {
|
||
|
fValue = aComponent;
|
||
|
} else {
|
||
|
throw new IllegalComponentStateException();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void addLayoutComponent(String aConstraint, Component aComponent) {
|
||
|
addLayoutComponent(aComponent, aConstraint);
|
||
|
}
|
||
|
|
||
|
public void removeLayoutComponent(Component aComponent) {
|
||
|
if (aComponent == fAttribute) {
|
||
|
fAttribute = null;
|
||
|
} else if (aComponent == fOperator) {
|
||
|
fOperator = null;
|
||
|
} else if (aComponent == fValue) {
|
||
|
fValue = 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.top;
|
||
|
int y = insets.left;
|
||
|
int w = size.width - fMargin * (count - 1) - insets.left - insets.right;
|
||
|
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
Dimension dim = c[i].getPreferredSize();
|
||
|
if (c[i] == fValue) {
|
||
|
dim.width = w / 2 + w % 4;
|
||
|
} else {
|
||
|
dim.width = w / 4;
|
||
|
}
|
||
|
c[i].setBounds(x, y, dim.width, dim.height);
|
||
|
x += dim.width + fMargin;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public Dimension preferredLayoutSize(Container aParent) {
|
||
|
int count = aParent.getComponentCount();
|
||
|
Component c[] = aParent.getComponents();
|
||
|
Insets insets = aParent.getInsets();
|
||
|
int h = 0;
|
||
|
int w = 0;
|
||
|
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
Dimension dim = c[i].getPreferredSize();
|
||
|
if (dim.height > h) {
|
||
|
h = dim.height;
|
||
|
}
|
||
|
w += dim.width;
|
||
|
}
|
||
|
w += insets.left + insets.right + (count - 1) * fMargin;
|
||
|
h += insets.top + insets.bottom;
|
||
|
|
||
|
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) {
|
||
|
}
|
||
|
}
|