summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid W. Miller2012-07-27 11:30:55 (EDT)
committerRoberto E. Escobar2012-07-27 11:30:55 (EDT)
commit00cfc360887611f9d6253bd39f6cf991fa280ec7 (patch)
tree3fb931f27cdabd2c2b17da97c6efff2e6fd55eb9
parent04c88de1ea8f852eef0f90d5847b62d7684d5b30 (diff)
downloadorg.eclipse.osee-00cfc360887611f9d6253bd39f6cf991fa280ec7.zip
org.eclipse.osee-00cfc360887611f9d6253bd39f6cf991fa280ec7.tar.gz
org.eclipse.osee-00cfc360887611f9d6253bd39f6cf991fa280ec7.tar.bz2
feature[ats_04296]: Improve composite creation for SwtXWidgetRenderer &
XText widget
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java13
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java215
2 files changed, 123 insertions, 105 deletions
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java
index b7698c0..87fe1ed 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XText.java
@@ -154,19 +154,16 @@ public class XText extends XWidget {
sText = new StyledText(composite, getTextStyle());
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
if (verticalLabel) {
gd.horizontalSpan = horizontalSpan;
} else {
gd.horizontalSpan = horizontalSpan - 1;
}
- gd.grabExcessHorizontalSpace = true;
- gd.horizontalAlignment = GridData.FILL;
- if (fillVertically) {
- gd.grabExcessVerticalSpace = true;
- gd.verticalAlignment = GridData.FILL;
- }
- if (fillVertically) {
+
+ if (!fillVertically) {
+ gd.grabExcessVerticalSpace = false;
+ } else {
if (height > 0) {
gd.heightHint = height;
}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java
index 3862ad5..333c0d0 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java
@@ -57,8 +57,7 @@ public class SwtXWidgetRenderer {
public static final String XWIDGET = "XWidget";
private final Set<XWidgetRendererItem> datas = new LinkedHashSet<XWidgetRendererItem>();
- private final Map<String, XWidgetRendererItem> nameToLayoutData =
- new HashMap<String, XWidgetRendererItem>();
+ private final Map<String, XWidgetRendererItem> nameToLayoutData = new HashMap<String, XWidgetRendererItem>();
private final Collection<ArrayList<String>> orRequired = new ArrayList<ArrayList<String>>();
private final Collection<ArrayList<String>> xorRequired = new ArrayList<ArrayList<String>>();
@@ -80,122 +79,135 @@ public class SwtXWidgetRenderer {
return toolkit != null ? toolkit.createComposite(parent, SWT.WRAP) : new Composite(parent, SWT.NONE);
}
+ private Group buildGroupComposite(Composite given, String name, int numColumns, FormToolkit toolkit) {
+ Group groupComp = new Group(given, SWT.None);
+ if (Strings.isValid(name)) {
+ groupComp.setText(name);
+ }
+ groupComp.setLayout(ALayout.getZeroMarginLayout(numColumns, false));
+ groupComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ if (toolkit != null) {
+ toolkit.adapt(groupComp);
+ }
+ return groupComp;
+ }
+
+ private Composite buildChildComposite(Composite given, int numColumns, FormToolkit toolkit) {
+ Composite outComp = createComposite(given, toolkit);
+ GridLayout zeroMarginLayout = ALayout.getZeroMarginLayout(numColumns, false);
+ zeroMarginLayout.marginWidth = 4;
+ zeroMarginLayout.horizontalSpacing = 8;
+ outComp.setLayout(zeroMarginLayout);
+ outComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ if (toolkit != null) {
+ toolkit.adapt(outComp);
+ }
+ return outComp;
+ }
+
+ private XWidget setupXWidget(XWidgetRendererItem xWidgetLayoutData, boolean isEditable) throws OseeCoreException {
+ XWidget xWidget = xWidgetLayoutData.getXWidget();
+ xWidgets.add(xWidget);
+
+ if (Strings.isValid(xWidgetLayoutData.getName())) {
+ xWidget.setLabel(xWidgetLayoutData.getName().replaceFirst("^.*?\\.", ""));
+ }
+
+ if (Strings.isValid(xWidgetLayoutData.getToolTip())) {
+ xWidget.setToolTip(xWidgetLayoutData.getToolTip());
+ }
+
+ xWidget.setRequiredEntry(xWidgetLayoutData.isRequired());
+ xWidget.setEditable(xWidgetLayoutData.getXOptionHandler().contains(XOption.EDITABLE) && isEditable);
+
+ return xWidget;
+ }
+
public void createBody(IManagedForm managedForm, Composite parent, Artifact artifact, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException {
final FormToolkit toolkit = managedForm != null ? managedForm.getToolkit() : null;
- Composite attrComp = createComposite(parent, toolkit);
+ Composite topLevelComp = createComposite(parent, toolkit);
GridLayout layout = new GridLayout(1, false);
layout.marginWidth = 2;
layout.marginHeight = 2;
- attrComp.setLayout(layout);
- attrComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ topLevelComp.setLayout(layout);
+ topLevelComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
if (toolkit != null) {
- toolkit.adapt(attrComp);
+ toolkit.adapt(topLevelComp);
}
- boolean inChildComposite = false, inGroupComposite = false;
+ boolean inChildComposite = false;
+ boolean inGroupComposite = false;
Composite childComp = null;
Group groupComp = null;
// Create Attributes
for (XWidgetRendererItem xWidgetLayoutData : getLayoutDatas()) {
- Composite useComp = attrComp;
+ Composite currentComp = null;
- GridData gd = new GridData();
- useComp.setLayoutData(gd);
- gd.horizontalAlignment = SWT.FILL;
- gd.verticalAlignment = SWT.FILL;
+ // first, check if this one is a group, if so, we set the group up and are done with this loop iteration
- // defaults to grab horizontal, causes scrollbars on items that extend past the provided window space
- gd.grabExcessHorizontalSpace = true;
-
- if (xWidgetLayoutData.getXOptionHandler().contains(XOption.FILL_VERTICALLY)) {
- gd.grabExcessVerticalSpace = true;
- }
-
- if (xWidgetLayoutData.getBeginGroupComposite() > 0) {
- groupComp = new Group(attrComp, SWT.None);
- if (Strings.isValid(xWidgetLayoutData.getName())) {
- groupComp.setText(xWidgetLayoutData.getName());
- }
- groupComp.setLayout(ALayout.getZeroMarginLayout(xWidgetLayoutData.getBeginGroupComposite(), false));
- groupComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- if (toolkit != null) {
- toolkit.adapt(groupComp);
- }
+ int i = xWidgetLayoutData.getBeginGroupComposite();
+ if (i > 0) {
inGroupComposite = true;
- // No XWidget associated, so go to next one
+ groupComp = buildGroupComposite(topLevelComp, xWidgetLayoutData.getName(), i, toolkit);
continue;
}
- if (xWidgetLayoutData.getBeginComposite() > 0) {
- childComp = createComposite((inGroupComposite ? groupComp : attrComp), toolkit);
- GridLayout zeroMarginLayout = ALayout.getZeroMarginLayout(xWidgetLayoutData.getBeginComposite(), false);
- zeroMarginLayout.marginWidth = 4;
- zeroMarginLayout.horizontalSpacing = 8;
- childComp.setLayout(zeroMarginLayout);
- childComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- if (toolkit != null) {
- toolkit.adapt(childComp);
- }
- inChildComposite = true;
- }
if (inGroupComposite) {
- useComp = groupComp;
+ System.out.println("debug: groupcomp is " + groupComp);
+ currentComp = groupComp;
if (xWidgetLayoutData.isEndGroupComposite()) {
inGroupComposite = false;
// No XWidget associated, so go to next one
continue;
}
+
+ } else {
+ currentComp = topLevelComp;
+ }
+
+ if (currentComp == null) {
+ System.out.println("debug: got null composite");
}
+
+ // defaults to grab horizontal, causes scrollbars on items that extend past the provided window space
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);
+ currentComp.setLayoutData(gd);
+
+ if (xWidgetLayoutData.getXOptionHandler().contains(XOption.FILL_VERTICALLY)) {
+ gd.grabExcessVerticalSpace = true;
+ }
+
+ int j = xWidgetLayoutData.getBeginComposite();
+ if (j > 0) {
+ inChildComposite = true;
+ childComp = buildChildComposite(currentComp, j, toolkit);
+ }
+
if (inChildComposite) {
- useComp = childComp;
+ System.out.println("debug: childcomp is " + childComp);
+
+ currentComp = childComp;
if (xWidgetLayoutData.isEndComposite()) {
inChildComposite = false;
}
} else if (xWidgetLayoutData.getXOptionHandler().contains(XOption.HORIZONTAL_LABEL)) {
- useComp = createComposite(attrComp, toolkit);
- useComp.setLayout(ALayout.getZeroMarginLayout(2, false));
- useComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ currentComp = createComposite(topLevelComp, toolkit);
+ currentComp.setLayout(ALayout.getZeroMarginLayout(2, false));
+ currentComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
if (toolkit != null) {
- toolkit.adapt(useComp);
+ toolkit.adapt(currentComp);
}
}
- XWidget xWidget = xWidgetLayoutData.getXWidget();
- xWidgets.add(xWidget);
-
- if (Strings.isValid(xWidgetLayoutData.getName())) {
- xWidget.setLabel(xWidgetLayoutData.getName().replaceFirst("^.*?\\.", ""));
- }
-
- if (Strings.isValid(xWidgetLayoutData.getToolTip())) {
- xWidget.setToolTip(xWidgetLayoutData.getToolTip());
- }
-
- xWidget.setRequiredEntry(xWidgetLayoutData.isRequired());
- xWidget.setEditable(xWidgetLayoutData.getXOptionHandler().contains(XOption.EDITABLE) && isEditable);
+ XWidget xWidget = setupXWidget(xWidgetLayoutData, isEditable);
if (dynamicWidgetLayoutListener != null) {
dynamicWidgetLayoutListener.widgetCreating(xWidget, toolkit, artifact, this, xModListener, isEditable);
}
- if (artifact != null) {
- if (xWidget instanceof IAttributeWidget) {
- try {
- IAttributeType attributeType = AttributeTypeManager.getType(xWidgetLayoutData.getStoreName());
- ((IAttributeWidget) xWidget).setAttributeType(artifact, attributeType);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
- }
- } else if (xWidget instanceof IArtifactWidget) {
- try {
- ((IArtifactWidget) xWidget).setArtifact(artifact);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- }
+ setupArtifactInfo(artifact, xWidgetLayoutData, xWidget);
if (xWidget instanceof XText) {
XText xText = (XText) xWidget;
@@ -207,34 +219,15 @@ public class SwtXWidgetRenderer {
}
}
- xWidget.createWidgets(managedForm, useComp, 2);
+ xWidget.createWidgets(managedForm, currentComp, 2);
if (xWidget instanceof XText) {
XText xText = (XText) xWidget;
- if (xWidgetLayoutData.getXOptionHandler().contains(XOption.FILL_HORIZONTALLY) && xWidgetLayoutData.getXOptionHandler().contains(
- XOption.FILL_VERTICALLY)) {
-
- GridData gdi = new GridData(SWT.FILL, SWT.FILL, true, true);
- //gdi.minimumWidth = 60;
- //gdi.minimumHeight = 60;
- xText.getStyledText().setLayoutData(gdi);
- } else if (xWidgetLayoutData.getXOptionHandler().contains(XOption.FILL_HORIZONTALLY)) {
-
- GridData gdi = new GridData(SWT.FILL, SWT.FILL, true, false);
- //gdi.minimumWidth = 60;
- xText.getStyledText().setLayoutData(gdi);
- } else if (xWidgetLayoutData.getXOptionHandler().contains(XOption.FILL_VERTICALLY)) {
-
- GridData gdi = new GridData(SWT.FILL, SWT.FILL, true, true);
- //gdi.minimumHeight = 60;
- xText.getStyledText().setLayoutData(gdi);
- }
if (xWidgetLayoutData.isHeightSet()) {
xText.setHeight(xWidgetLayoutData.getHeight());
}
}
- //useComp.layout();
if (xModListener != null) {
xWidget.addXModifiedListener(xModListener);
@@ -248,6 +241,14 @@ public class SwtXWidgetRenderer {
xModListener, isEditable);
}
}
+ topLevelComp.layout();
+
+ if (inChildComposite) {
+ System.out.println("debug: unclosed child");
+ }
+ if (inGroupComposite) {
+ System.out.println("debug: unclosed group");
+ }
Displays.ensureInDisplayThread(new Runnable() {
@Override
@@ -263,6 +264,26 @@ public class SwtXWidgetRenderer {
}
});
}
+
+ private void setupArtifactInfo(Artifact artifact, XWidgetRendererItem xWidgetLayoutData, XWidget xWidget) {
+ if (artifact == null) {
+ return;
+ }
+ if (xWidget instanceof IAttributeWidget) {
+ try {
+ IAttributeType attributeType = AttributeTypeManager.getType(xWidgetLayoutData.getStoreName());
+ ((IAttributeWidget) xWidget).setAttributeType(artifact, attributeType);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ } else if (xWidget instanceof IArtifactWidget) {
+ try {
+ ((IArtifactWidget) xWidget).setArtifact(artifact);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ }
private final XModifiedListener refreshRequiredModListener = new XModifiedListener() {
@Override
public void widgetModified(XWidget widget) {