Author: scabanovich
Date: 2008-02-08 09:26:35 -0500 (Fri, 08 Feb 2008)
New Revision: 6209
Modified:
trunk/common/plugins/org.jboss.tools.common.model/resources/meta/meta.dtd
trunk/common/plugins/org.jboss.tools.common.model/schema/meta.dtd
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/XActionItem.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/XActionListImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/impl/XMetaDataConstants.java
Log:
JBIDE-1670
Modified: trunk/common/plugins/org.jboss.tools.common.model/resources/meta/meta.dtd
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model/resources/meta/meta.dtd 2008-02-08
12:46:39 UTC (rev 6208)
+++ trunk/common/plugins/org.jboss.tools.common.model/resources/meta/meta.dtd 2008-02-08
14:26:35 UTC (rev 6209)
@@ -30,7 +30,7 @@
<!ELEMENT GlobalActions (XActionItem*)>
<!ATTLIST GlobalActions kind (list) #REQUIRED>
-<!ELEMENT XActionItem (XActionItem*|EntityData*)>
+<!ELEMENT XActionItem ((XActionItem|XActionItemReference)*|EntityData*)>
<!ATTLIST XActionItem kind (list|action) #REQUIRED>
<!ATTLIST XActionItem name CDATA #IMPLIED>
<!ATTLIST XActionItem group (0|1) #IMPLIED>
@@ -43,6 +43,11 @@
<!ATTLIST XActionItem HIDE (never|disabled|always) "never">
<!ATTLIST XActionItem PROPERTIES CDATA #IMPLIED>
+<!ELEMENT XActionItemReference EMPTY>
+<!ATTLIST XActionItemReference name CDATA #REQUIRED>
+<!ATTLIST XActionItemReference entity CDATA #REQUIRED>
+<!ATTLIST XActionItemReference path CDATA #IMPLIED>
+
<!ELEMENT EntityData (AttributeData*)>
<!ATTLIST EntityData EntityName CDATA #REQUIRED>
<!ATTLIST EntityData Mandatory (yes|no) "yes">
Modified: trunk/common/plugins/org.jboss.tools.common.model/schema/meta.dtd
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model/schema/meta.dtd 2008-02-08 12:46:39
UTC (rev 6208)
+++ trunk/common/plugins/org.jboss.tools.common.model/schema/meta.dtd 2008-02-08 14:26:35
UTC (rev 6209)
@@ -30,7 +30,7 @@
<!ELEMENT GlobalActions (XActionItem*)>
<!ATTLIST GlobalActions kind (list) #REQUIRED>
-<!ELEMENT XActionItem (XActionItem*|EntityData*)>
+<!ELEMENT XActionItem ((XActionItem|XActionItemReference)*|EntityData*)>
<!ATTLIST XActionItem kind (list|action) #REQUIRED>
<!ATTLIST XActionItem name CDATA #IMPLIED>
<!ATTLIST XActionItem group (0|1) #IMPLIED>
@@ -43,6 +43,11 @@
<!ATTLIST XActionItem HIDE (never|disabled|always) "never">
<!ATTLIST XActionItem PROPERTIES CDATA #IMPLIED>
+<!ELEMENT XActionItemReference EMPTY>
+<!ATTLIST XActionItemReference name CDATA #REQUIRED>
+<!ATTLIST XActionItemReference entity CDATA #REQUIRED>
+<!ATTLIST XActionItemReference path CDATA #IMPLIED>
+
<!ELEMENT EntityData (AttributeData*)>
<!ATTLIST EntityData EntityName CDATA #REQUIRED>
<!ATTLIST EntityData Mandatory (yes|no) "yes">
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/XActionItem.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/XActionItem.java 2008-02-08
12:46:39 UTC (rev 6208)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/XActionItem.java 2008-02-08
14:26:35 UTC (rev 6209)
@@ -21,6 +21,11 @@
public String getProperty(String name);
public interface Acceptor {
+ public static Acceptor DEFAULT = new Acceptor() {
+ public boolean accepts(XActionItem item) {
+ return true;
+ }
+ };
public boolean accepts(XActionItem item);
}
public XActionItem copy(Acceptor acceptor);
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/XActionListImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/XActionListImpl.java 2008-02-08
12:46:39 UTC (rev 6208)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/action/impl/XActionListImpl.java 2008-02-08
14:26:35 UTC (rev 6209)
@@ -12,6 +12,7 @@
import java.util.*;
import org.w3c.dom.*;
+import org.jboss.tools.common.meta.XModelEntity;
import org.jboss.tools.common.meta.action.*;
import org.jboss.tools.common.meta.impl.*;
@@ -28,11 +29,8 @@
}
public XActionItem getByPath(String path) {
- int i = (path == null) ? -1 : path.indexOf("/");
- if(i < 0) return getItem(path);
- XActionItem ci = getItem(path.substring(0, i));
- return (!(ci instanceof XActionListImpl)) ? null :
- ((XActionListImpl)ci).getByPath(path.substring(i + 1));
+ if(path == null) return getItem(path); // why?
+ return findItem(path);
}
public boolean isLoaded() {
@@ -65,40 +63,66 @@
}
public XActionItem getItem(String name) {
+ if(name == null) {
+ System.out.println("XActionListImpl.getItem: name=null");
+ }
for (int i = 0; i < items.length; i++) {
if(items[i].getName().equals(name)) return items[i];
}
return null;
}
+ public XActionItem findItem(String path) {
+ if(path == null || path.length() == 0) return null;
+ StringTokenizer st = new StringTokenizer(path, "./");
+ XActionItem item = this;
+ while(st.hasMoreTokens() && item != null) {
+ String part = st.nextToken();
+ item = item.getItem(part);
+ }
+ return item;
+ }
+
public XAction getAction(String path) {
- if(path == null) return null;
- int d = path.indexOf('.');
- if(d < 0) {
- XActionItem i = getItem(path);
- return (i instanceof XAction) ? (XAction)i : null;
- }
- String name = path.substring(0, d);
- path = path.substring(d + 1);
- XActionItem i = getItem(name);
- return (i instanceof XActionList) ? ((XActionList)i).getAction(path) : null;
+ XActionItem item = findItem(path);
+ return (item instanceof XAction) ? (XAction)item : null;
}
public void load(Element el) {
super.load(el);
groupfactor = (short)XMetaDataLoader.getInt(el, "group", 0);
- Element[] cs = XMetaDataLoader.getChildrenElements(el, "XActionItem");
- items = new XActionItem[cs.length];
- for (int i = 0; i < items.length; i++) {
- Element ei = cs[i];
- String kind = ei.getAttribute("kind");
- XActionItemImpl item = (kind.equals("list"))
+ NodeList ns = el.getChildNodes();
+ List<XActionItem> list = new ArrayList<XActionItem>();
+ for (int i = 0; i < ns.getLength(); i++) {
+ Node n = ns.item(i);
+ if(n.getNodeType() != Node.ELEMENT_NODE) continue;
+ Element ei = (Element)n;
+ String tag = ei.getNodeName();
+ if(XMODEL_ACTION_ITEM.equals(tag)) {
+ String kind = ei.getAttribute("kind");
+ XActionItemImpl item = (kind.equals("list"))
? (XActionItemImpl) new XActionListImpl()
: (XActionItemImpl) new XActionImpl();
- item.setParent(this);
- items[i] = item;
- item.load(ei);
+ item.setParent(this);
+ item.load(ei);
+ list.add(item);
+ } else if(XMODEL_ACTION_ITEM_REF.equals(tag)) {
+ String entityName = ei.getAttribute("entity");
+ String attrName = ei.getAttribute(NAME);
+ String path = ei.hasAttribute("path")
+ ? ei.getAttribute("path")
+ : attrName;
+
+ XModelEntity entity = getMetaModel().getEntity(entityName);
+ if(entity != null) {
+ XActionItem item = ((XActionListImpl)entity.getActionList()).findItem(path);
+ if(item != null) {
+ list.add(item.copy(Acceptor.DEFAULT));
+ }
+ }
+ }
}
+ items = list.toArray(new XActionItem[list.size()]);
}
public void merge(XActionListImpl ext) {
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/impl/XMetaDataConstants.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/impl/XMetaDataConstants.java 2008-02-08
12:46:39 UTC (rev 6208)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/meta/impl/XMetaDataConstants.java 2008-02-08
14:26:35 UTC (rev 6209)
@@ -20,6 +20,8 @@
String XMODEL_ATTRIBUTE_REF = "XModelAttributeReference";
String XMODEL_ACTIONS = "XModelActions";
String XMODEL_ACTION = "XModelAction";
+ String XMODEL_ACTION_ITEM = "XActionItem";
+ String XMODEL_ACTION_ITEM_REF = "XActionItemReference";
String XMODEL_CHILDREN = "XChildrenEntities";
String XMODEL_CHILD = "XChildEntity";
String NAME = "name";
Show replies by date