Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaudia Knobloch2011-12-16 12:47:51 +0000
committerClaudia Knobloch2011-12-16 12:47:51 +0000
commit47afeada0ee1e1b761cca442eb9fa9f9e80a1343 (patch)
tree98068ac000a9034d86bb34cffb565772309ab683
parent76675bbf61a996d9cfe3ef6c869ec5807db86775 (diff)
downloadorg.eclipse.ptp-47afeada0ee1e1b761cca442eb9fa9f9e80a1343.tar.gz
org.eclipse.ptp-47afeada0ee1e1b761cca442eb9fa9f9e80a1343.tar.xz
org.eclipse.ptp-47afeada0ee1e1b761cca442eb9fa9f9e80a1343.zip
Fix the error in LayoutAccess::getLayoutFromModel()
-rw-r--r--rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/core/util/JAXBUtil.java65
-rw-r--r--rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/internal/core/model/LayoutAccess.java70
2 files changed, 66 insertions, 69 deletions
diff --git a/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/core/util/JAXBUtil.java b/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/core/util/JAXBUtil.java
index e72f66c56..03490552f 100644
--- a/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/core/util/JAXBUtil.java
+++ b/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/core/util/JAXBUtil.java
@@ -6,6 +6,7 @@ import java.io.StringReader;
import java.io.StringWriter;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import javax.xml.bind.JAXBContext;
@@ -22,6 +23,7 @@ import org.eclipse.ptp.rm.lml.internal.core.elements.AbslayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.ChartType;
import org.eclipse.ptp.rm.lml.internal.core.elements.ChartgroupType;
import org.eclipse.ptp.rm.lml.internal.core.elements.ColumnType;
+import org.eclipse.ptp.rm.lml.internal.core.elements.ComponentType;
import org.eclipse.ptp.rm.lml.internal.core.elements.ComponentlayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.DataType;
import org.eclipse.ptp.rm.lml.internal.core.elements.GobjectType;
@@ -31,6 +33,7 @@ import org.eclipse.ptp.rm.lml.internal.core.elements.LguiType;
import org.eclipse.ptp.rm.lml.internal.core.elements.Nodedisplay;
import org.eclipse.ptp.rm.lml.internal.core.elements.NodedisplaylayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.ObjectFactory;
+import org.eclipse.ptp.rm.lml.internal.core.elements.PaneType;
import org.eclipse.ptp.rm.lml.internal.core.elements.PatternMatchType;
import org.eclipse.ptp.rm.lml.internal.core.elements.PatternType;
import org.eclipse.ptp.rm.lml.internal.core.elements.SchemeType;
@@ -180,6 +183,32 @@ public class JAXBUtil {
}
}
+ /**
+ * Search for gid-attributes of a pane and put it into neededComponents
+ * Recursively search all graphical objects referenced by this pane
+ *
+ * @param pane
+ * part of SplitLayout, which is scanned for gid-attributes
+ * @param components
+ * resulting Hashset
+ */
+ private static void collectComponents(PaneType pane, HashSet<String> components) {
+
+ if (pane.getGid() != null) {
+ components.add(pane.getGid());
+ } else {
+ // top and bottom components?
+ if (pane.getBottom() != null) {
+ collectComponents(pane.getBottom(), components);
+ collectComponents(pane.getTop(), components);
+ } else {// Left and right
+ collectComponents(pane.getLeft(), components);
+ collectComponents(pane.getRight(), components);
+ }
+ }
+
+ }
+
private JAXBUtil() {
jaxbUtil = this;
try {
@@ -272,10 +301,6 @@ public class JAXBUtil {
}
- public void addLayoutTag(LguiType lgui, LayoutType layout) {
-
- }
-
public void addPatternInclude(PatternType pattern,
PatternMatchType patternMatch) {
pattern.getIncludeAndExclude().add(
@@ -291,6 +316,38 @@ public class JAXBUtil {
table));
}
+ public void getLayoutComponents(LguiType result, LguiType lgui, HashSet<String> components) {
+
+ for (final JAXBElement<?> element : lgui.getObjectsAndRelationsAndInformation()) {
+
+ final Object object = element.getValue();
+
+ if (object instanceof LayoutType) {
+ if (object instanceof SplitlayoutType) {
+ lgui.getObjectsAndRelationsAndInformation().add(element);
+ } else if (object instanceof AbslayoutType) {
+ lgui.getObjectsAndRelationsAndInformation().add(element);
+ }
+
+ if (object instanceof SplitlayoutType) {
+ if (((SplitlayoutType) object).getLeft() != null) {
+ collectComponents(((SplitlayoutType) object).getLeft(), components);
+ collectComponents(((SplitlayoutType) object).getRight(), components);
+ }
+ } else if (object instanceof AbslayoutType) {
+ for (final ComponentType component : ((AbslayoutType) object).getComp()) {
+ components.add(component.getGid());
+ }
+ }
+ } else if (object instanceof ComponentlayoutType) {
+ if (((ComponentlayoutType) object).isActive()) {
+ addComponentLayoutElement(result, (ComponentlayoutType) object);
+ components.add(((ComponentlayoutType) object).getGid());
+ }
+ }
+ }
+ }
+
public ArrayList<Object> getObjects(LguiType lgui) {
final ArrayList<Object> list = new ArrayList<Object>();
for (final JAXBElement<?> element : lgui
diff --git a/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/internal/core/model/LayoutAccess.java b/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/internal/core/model/LayoutAccess.java
index ca3a427b6..323913e74 100644
--- a/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/internal/core/model/LayoutAccess.java
+++ b/rms/org.eclipse.ptp.rm.lml.core/src/org/eclipse/ptp/rm/lml/internal/core/model/LayoutAccess.java
@@ -31,12 +31,9 @@ import org.eclipse.ptp.rm.lml.internal.core.elements.ComponentType;
import org.eclipse.ptp.rm.lml.internal.core.elements.ComponentlayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.GobjectType;
import org.eclipse.ptp.rm.lml.internal.core.elements.InfoboxlayoutType;
-import org.eclipse.ptp.rm.lml.internal.core.elements.LayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.LguiType;
import org.eclipse.ptp.rm.lml.internal.core.elements.NodedisplaylayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.ObjectFactory;
-import org.eclipse.ptp.rm.lml.internal.core.elements.PaneType;
-import org.eclipse.ptp.rm.lml.internal.core.elements.SplitlayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.TableType;
import org.eclipse.ptp.rm.lml.internal.core.elements.TablelayoutType;
import org.eclipse.ptp.rm.lml.internal.core.elements.UsagebarlayoutType;
@@ -116,32 +113,6 @@ public class LayoutAccess extends LguiHandler {
}
/**
- * Search for gid-attributes of a pane and put it into neededComponents
- * Recursively search all graphical objects referenced by this pane
- *
- * @param pane
- * part of SplitLayout, which is scanned for gid-attributes
- * @param components
- * resulting Hashset
- */
- private static void collectComponents(PaneType pane, HashSet<String> components) {
-
- if (pane.getGid() != null) {
- components.add(pane.getGid());
- } else {
- // top and bottom components?
- if (pane.getBottom() != null) {
- collectComponents(pane.getBottom(), components);
- collectComponents(pane.getTop(), components);
- } else {// Left and right
- collectComponents(pane.getLeft(), components);
- collectComponents(pane.getRight(), components);
- }
- }
-
- }
-
- /**
* @param lguiItem
* LML-data-handler, which groups this handler and others to a
* set of LMLHandler. This instance is needed to notify all
@@ -389,52 +360,21 @@ public class LayoutAccess extends LguiHandler {
final HashSet<String> components = new HashSet<String>();
- for (final Object object : jaxbUtil.getObjects(lgui)) {
-
- // add normal global layouts
- if (object instanceof LayoutType) {
- jaxbUtil.addLayoutElement(result, object);
-
- if (object instanceof SplitlayoutType) {
- final SplitlayoutType splitLayout = (SplitlayoutType) object;
- // Collect needed components from layout recursively
- if (splitLayout.getLeft() != null) {
- collectComponents(splitLayout.getLeft(), components);
- collectComponents(splitLayout.getRight(), components);
- }
- } else if (object instanceof AbslayoutType) {
- final AbslayoutType absLayout = (AbslayoutType) object;
- // Just traverse comp-list for gid-attributes
- for (final ComponentType component : absLayout.getComp()) {
- components.add(component.getGid());
- }
- }
-
- } else if (object instanceof ComponentlayoutType) {
- if (((ComponentlayoutType) object).isActive()) {
- jaxbUtil.addComponentLayoutElement(result,
- (ComponentlayoutType) object);
- components.add(((ComponentlayoutType) object).getGid());
- }
- }
- }
+ jaxbUtil.getLayoutComponents(result, lgui, components);
- final List<GobjectType> idToGobject = new LinkedList<GobjectType>();
- // Search needed components in data-tag to discover, which type the
- // needed components have
+ final List<GobjectType> gobjectList = new LinkedList<GobjectType>();
for (final Object object : jaxbUtil.getObjects(lgui)) {
// is it a graphical object?
if (object instanceof GobjectType) {
- final GobjectType gobject = (GobjectType) object;
- if (components.contains(gobject.getId())) {
- idToGobject.add(gobject);
+ if (components.contains(((GobjectType) object).getId())) {
+ gobjectList.add((GobjectType) object);
}
}
}
// Add all gobjects in idtoGobject to the result, so that lml-model is
// valid
- for (final GobjectType gobject : idToGobject) {
+ for (final GobjectType gobject : gobjectList) {
result.getObjectsAndRelationsAndInformation().add(
JAXBUtil.minimizeGobjectType(gobject, objectFactory));
}

Back to the top