Rollback of change for bug 84731
diff --git a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
index 5da7fdd..7bb3d2a 100644
--- a/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
+++ b/bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
@@ -34,7 +34,10 @@
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.custom.TreeEditor;
+import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.KeyAdapter;
@@ -47,11 +50,9 @@
import org.eclipse.swt.events.TreeListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.swt.widgets.Widget;
/**
@@ -218,23 +219,17 @@
}
}
- tree.getParent().addControlListener(new ControlAdapter() {
- public void controlResized(ControlEvent e) {
- updateColumnSizes();
- }
- });
+ tree.addControlListener(new ControlAdapter() {
+ public void controlResized(ControlEvent e) {
+ Rectangle area = tree.getClientArea();
+ TreeColumn[] columns = tree.getColumns();
+ columns[0].setWidth(area.width * 40 / 100);
+ columns[1].setWidth(area.width - columns[0].getWidth() - 4);
+ }
+ });
+
}
- private void updateColumnSizes() {
- // the parent has not yet layed out the tree; force the tree's size to be updated earlier
- tree.getParent().layout();
-
- int w = tree.getSize().x;
- TreeColumn[] columns = tree.getColumns();
- columns[0].setWidth(w * 40 / 100);
- columns[1].setWidth(w - columns[0].getWidth() - 4);
- }
-
/**
* Asks the entry currently being edited to apply its current cell editor
* value.
@@ -256,7 +251,12 @@
*/
private void createChildren(Widget widget) {
// get the current child items
- TreeItem[] childItems = getChildItems(widget);
+ TreeItem[] childItems;
+ if (widget == tree)
+ childItems = tree.getItems();
+ else {
+ childItems = ((TreeItem) widget).getItems();
+ }
if (childItems.length > 0) {
Object data = childItems[0].getData();
@@ -479,17 +479,6 @@
return cellEditor;
}
- private TreeItem[] getChildItems(Widget widget) {
- if (widget instanceof Tree) {
- return ((Tree) widget).getItems();
- }
- else if (widget instanceof TreeItem) {
- return ((TreeItem) widget).getItems();
- }
- // shouldn't happen
- return new TreeItem[0];
- }
-
/**
* Returns the children of the given category or entry
*
@@ -1070,13 +1059,16 @@
category = (PropertySheetCategory) node;
// get the current child tree items
- TreeItem[] childItems = getChildItems(widget);
+ TreeItem item = null;
+ TreeItem[] childItems;
+ if (node == rootEntry) {
+ childItems = tree.getItems();
+ } else {
+ item = (TreeItem) widget;
+ childItems = item.getItems();
+ }
// optimization! prune collapsed subtrees
- TreeItem item = null;
- if (widget instanceof TreeItem) {
- item = (TreeItem) widget;
- }
if (item != null && !item.getExpanded()) {
// remove all children
for (int i = 0; i < childItems.length; i++) {
@@ -1087,17 +1079,17 @@
// append a dummy if necessary
if (category != null || entry.hasChildEntries()) {
- // may already have a dummy
- // It is either a category (which always has at least one child)
+ //may already have a dummy
+ // its is either a category (which always has at least one
+ // child)
// or an entry with chidren.
// Note that this test is not perfect, if we have filtering on
// then there in fact may be no entires to show when the user
// presses the "+" expand icon. But this is an acceptable
// compromise.
- childItems = getChildItems(widget);
- if (childItems.length == 0) {
+ if (childItems.length != 1 || childItems[0].getData() != null)
+ //if already a dummy - do nothing
new TreeItem(item, SWT.NULL);
- }
}
return;
}
@@ -1146,7 +1138,10 @@
}
// get the child tree items after our changes
- childItems = getChildItems(widget);
+ if (entry == rootEntry)
+ childItems = tree.getItems();
+ else
+ childItems = item.getItems();
// update the child items
// This ensures that the children are in the correct order