diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java')
-rw-r--r-- | plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java | 72 |
1 files changed, 63 insertions, 9 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java index 01c3600c045..d684d7e0ca2 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java @@ -12,8 +12,10 @@ package org.eclipse.osee.ats.util.widgets.role; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.logging.Level; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; @@ -49,16 +51,21 @@ import org.eclipse.osee.framework.ui.swt.ImageManager; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Sash; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Tree; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.forms.widgets.ScrolledForm; /** * @author Donald G. Dunne @@ -72,10 +79,8 @@ public class XUserRoleViewer extends XWidget implements IArtifactWidget, IFramew private static ToolItem newUserRoleItem, deleteUserRoleItem; private Label extraInfoLabel; private ToolBar toolBar; + private static Map<IReviewArtifact, Integer> tableHeight = new HashMap<IReviewArtifact, Integer>(); - /** - * @param label - */ public XUserRoleViewer() { super("Roles"); @@ -93,7 +98,7 @@ public class XUserRoleViewer extends XWidget implements IArtifactWidget, IFramew } } - Composite mainComp = new Composite(parent, SWT.BORDER); + final Composite mainComp = new Composite(parent, SWT.BORDER); mainComp.setLayoutData(new GridData(GridData.FILL_BOTH)); mainComp.setLayout(ALayout.getZeroMarginLayout()); if (toolkit != null) { @@ -103,8 +108,6 @@ public class XUserRoleViewer extends XWidget implements IArtifactWidget, IFramew createTaskActionBar(mainComp); xViewer = new UserRoleXViewer(mainComp, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION, this); - xViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); - xViewer.setContentProvider(new UserRoleContentProvider(xViewer)); xViewer.setLabelProvider(new UserRoleLabelProvider(xViewer)); xViewer.addSelectionChangedListener(new ISelectionChangedListener() { @@ -118,16 +121,67 @@ public class XUserRoleViewer extends XWidget implements IArtifactWidget, IFramew toolkit.adapt(xViewer.getStatusLabel(), false, false); } + refreshTableSize(); + // NOTE: Don't adapt the tree using xToolkit cause will loose xViewer's context menu + + final Sash sash = new Sash(parent, SWT.HORIZONTAL); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.heightHint = 3; + sash.setLayoutData(gd); + sash.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY)); + sash.addListener(SWT.MouseUp, new Listener() { + public void handleEvent(Event e) { + Rectangle treeRect = xViewer.getTree().getClientArea(); + int newHeight = treeRect.height + e.y; + setTableHeight(newHeight); + refreshTableSize(); + mainComp.layout(); + xViewer.refresh(); + if (getForm(mainComp) != null) { + getForm(mainComp).reflow(true); + } + } + }); + + loadTable(); + } + + private void refreshTableSize() { Tree tree = xViewer.getTree(); GridData gridData = new GridData(GridData.FILL_BOTH); - gridData.heightHint = 100; + gridData.heightHint = getTableHeight(); tree.setLayout(ALayout.getZeroMarginLayout()); tree.setLayoutData(gridData); tree.setHeaderVisible(true); tree.setLinesVisible(true); - // NOTE: Don't adapt the tree using xToolkit cause will loose xViewer's context menu + } - loadTable(); + public ScrolledForm getForm(Composite composite) { + ScrolledForm form = null; + if (composite == null) { + return null; + } + if (composite instanceof ScrolledForm) { + return (ScrolledForm) composite; + } + if (!(composite instanceof ScrolledForm)) { + form = getForm(composite.getParent()); + } + return form; + } + + private int getTableHeight() { + if (reviewArt != null && tableHeight.containsKey(reviewArt)) { + return tableHeight.get(reviewArt); + } + return 100; + } + + private void setTableHeight(int newHeight) { + if (reviewArt != null) { + if (newHeight < 100) newHeight = 100; + tableHeight.put(reviewArt, newHeight); + } } public void createTaskActionBar(Composite parent) { |