Author: scabanovich
Date: 2008-05-29 07:51:52 -0400 (Thu, 29 May 2008)
New Revision: 8423
Added:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/DeleteOutputHandler.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/OpenPageHandler.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/PageAdopt.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/ProcessAdopt.java
Modified:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/plugin.xml
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/meta/seam-pages.meta
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesConstants.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPagesProcessImpl.java
Log:
Initial import.
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/plugin.xml
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/plugin.xml 2008-05-29 11:46:53 UTC
(rev 8422)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/plugin.xml 2008-05-29 11:51:52 UTC
(rev 8423)
@@ -56,6 +56,14 @@
class="org.jboss.tools.seam.pages.xml.model.handlers.AddRuleHandler"/>
<xclass
id="org.jboss.tools.seam.pages.xml.model.handlers.AddExceptionHandler"
class="org.jboss.tools.seam.pages.xml.model.handlers.AddExceptionHandler"/>
+ <xclass id="org.jboss.tools.seam.pages.xml.model.handlers.ProcessAdopt"
+ class="org.jboss.tools.seam.pages.xml.model.handlers.ProcessAdopt"/>
+ <xclass id="org.jboss.tools.seam.pages.xml.model.handlers.PageAdopt"
+ class="org.jboss.tools.seam.pages.xml.model.handlers.PageAdopt"/>
+ <xclass
id="org.jboss.tools.seam.pages.xml.model.handlers.DeleteOutputHandler"
+ class="org.jboss.tools.seam.pages.xml.model.handlers.DeleteOutputHandler"/>
+ <xclass
id="org.jboss.tools.seam.pages.xml.model.handlers.OpenPageHandler"
+ class="org.jboss.tools.seam.pages.xml.model.handlers.OpenPageHandler"/>
</extension>
<extension point="org.eclipse.wst.xml.core.catalogContributions">
Modified:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/meta/seam-pages.meta
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/meta/seam-pages.meta 2008-05-29
11:46:53 UTC (rev 8422)
+++
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/meta/seam-pages.meta 2008-05-29
11:51:52 UTC (rev 8423)
@@ -1654,8 +1654,10 @@
ICON="action.paste" displayName="Paste" kind="action"
name="Paste"/>
</XActionItem>
<XActionItem ICON="action.delete" displayName="Delete"
kind="list" name="DeleteActions">
- <XActionItem BaseActionName="Delete"
HandlerClassName="%Delete%"
- ICON="action.delete" displayName="Delete"
kind="action" name="Delete"/>
+ <XActionItem BaseActionName="Delete"
HandlerClassName="%Redirect%"
+ ICON="action.delete"
+ PROPERTIES="sourcepath=..;actionpath=DeleteActions/Delete"
+ displayName="Delete" kind="action" name="Delete"/>
</XActionItem>
<XActionItem ICON="action.empty" kind="list"
name="Properties">
<XActionItem HandlerClassName="%Properties%"
ICON="action.empty"
@@ -2320,8 +2322,10 @@
ICON="action.paste" displayName="Paste" kind="action"
name="Paste"/>
</XActionItem>
<XActionItem ICON="action.delete" displayName="Delete"
kind="list" name="DeleteActions">
- <XActionItem BaseActionName="Delete"
HandlerClassName="%Delete%"
- ICON="action.delete" displayName="Delete"
kind="action" name="Delete"/>
+ <XActionItem BaseActionName="Delete"
HandlerClassName="%Redirect%"
+ ICON="action.delete"
+ PROPERTIES="sourcepath=..;actionpath=DeleteActions/Delete"
+ displayName="Delete" kind="action" name="Delete"/>
</XActionItem>
<XActionItem ICON="action.empty" kind="list"
name="Properties">
<XActionItem HandlerClassName="%Properties%"
ICON="action.empty"
@@ -2393,8 +2397,10 @@
ICON="action.paste" displayName="Paste" kind="action"
name="Paste"/>
</XActionItem>
<XActionItem ICON="action.delete" displayName="Delete"
kind="list" name="DeleteActions">
- <XActionItem BaseActionName="Delete"
HandlerClassName="%Delete%"
- ICON="action.delete" displayName="Delete"
kind="action" name="Delete"/>
+ <XActionItem BaseActionName="Delete"
HandlerClassName="%Redirect%"
+ ICON="action.delete"
+ PROPERTIES="sourcepath=..;actionpath=DeleteActions/Delete"
+ displayName="Delete" kind="action" name="Delete"/>
</XActionItem>
<XActionItem ICON="action.empty" kind="list"
name="Properties">
<XActionItem HandlerClassName="%Properties%"
ICON="action.empty"
@@ -2457,8 +2463,10 @@
ICON="action.paste" displayName="Paste" kind="action"
name="Paste"/>
</XActionItem>
<XActionItem ICON="action.delete" displayName="Delete"
kind="list" name="DeleteActions">
- <XActionItem BaseActionName="Delete"
HandlerClassName="%Delete%"
- ICON="action.delete" displayName="Delete"
kind="action" name="Delete"/>
+ <XActionItem BaseActionName="Delete"
HandlerClassName="%Redirect%"
+ ICON="action.delete"
+ PROPERTIES="sourcepath=..;actionpath=DeleteActions/Delete"
+ displayName="Delete" kind="action" name="Delete"/>
</XActionItem>
<XActionItem ICON="action.empty" kind="list"
name="Properties">
<XActionItem HandlerClassName="%Properties%"
ICON="action.empty"
@@ -2708,7 +2716,7 @@
<XDependencies/>
</XModelEntity>
<XModelEntity
- AdoptManagerClass="org.jboss.tools.jsf.model.handlers.ProcessAdopt"
+
AdoptManagerClass="org.jboss.tools.seam.pages.xml.model.handlers.ProcessAdopt"
ImplementingClass="org.jboss.tools.seam.pages.xml.model.impl.SeamPagesProcessImpl"
name="SeamPagesProcess">
<XChildrenEntities>
<XChildEntity name="SeamPagesProcessItem"/>
@@ -2755,7 +2763,7 @@
<XActionItem HIDE="disabled"
HandlerClassName="org.jboss.tools.jst.web.model.handlers.FindItemOnDiagramHandler"
ICON="action.empty"
-
PROPERTIES="help=JSFProcess_SelectItem;wizard=org.jboss.tools.jsf.ui.editor.wizard.SelectItemWizard"
+
PROPERTIES="help=JSFProcess_SelectItem;wizard=org.jboss.tools.seam.ui.pages.editor.wizard.SelectItemWizard"
displayName="Select Element" kind="action"
name="SelectItem"/>
<XActionItem HIDE="always"
HandlerClassName="org.jboss.tools.jst.web.model.handlers.ShowHideCommentsHandler"
@@ -2787,6 +2795,7 @@
<XDependencies/>
</XModelEntity>
<XModelEntity
+ AdoptManagerClass="org.jboss.tools.seam.pages.xml.model.handlers.PageAdopt"
ImplementingClass="org.jboss.tools.seam.pages.xml.model.impl.ReferenceObjectImpl"
XMLSUBPATH="PROCESS-ITEM" name="SeamPagesProcessItem">
<XChildrenEntities>
@@ -2798,7 +2807,7 @@
</ICONS>
</XEntityRenderer>
<XModelAttributes>
- <XModelAttribute default="navigation-rule" loader="ElementType"
name="element type">
+ <XModelAttribute default="page" loader="ElementType"
name="element type">
<Editor name="Uneditable"/>
</XModelAttribute>
<XModelAttribute name="name" xmlname="NAME">
@@ -2837,10 +2846,18 @@
HandlerClassName="org.jboss.tools.jsf.model.handlers.JSFItemRegirectHandler"
ICON="action.new.jsf.case"
PROPERTIES="actionpath=CreateActions/CreateCase"
- WizardClassName="%Default%" displayName="Case..."
kind="action" name="CreateCase"/>
+ WizardClassName="%Default%" displayName="Rule..."
kind="action" name="CreateRule"/>
+ <XActionItem HIDE="always"
+
HandlerClassName="org.jboss.tools.struts.model.handlers.CreateCommentForItemHandler"
+ ICON="action.empty" WizardClassName="%OneParameter%"
+ displayName="Create Comment..." kind="action"
name="CreateComment">
+ <EntityData EntityName="JSFProcessComment">
+ <AttributeData AttributeName="comment"/>
+ </EntityData>
+ </XActionItem>
</XActionItem>
<XActionItem HIDE="disabled"
- HandlerClassName="org.jboss.tools.jsf.model.handlers.OpenPageHandler"
+
HandlerClassName="org.jboss.tools.seam.pages.xml.model.handlers.OpenPageHandler"
ICON="action.empty" PROPERTIES="actionpath=Open"
displayName="Open Page" kind="action"
name="OpenPage"/>
<XActionItem kind="list" name="EditActions">
@@ -2916,7 +2933,7 @@
</ICONS>
</XEntityRenderer>
<XModelAttributes>
- <XModelAttribute default="navigation-case" loader="ElementType"
name="element type">
+ <XModelAttribute default="rule" loader="ElementType"
name="element type">
<Editor name="Uneditable"/>
</XModelAttribute>
<XModelAttribute name="name" xmlname="NAME">
@@ -2964,7 +2981,7 @@
HandlerClassName="org.jboss.tools.jsf.model.handlers.AutolayoutTransitionHandler"
ICON="action.empty" displayName="Auto Layout"
kind="action" name="Autolayout"/>
<XActionItem HIDE="disabled"
- HandlerClassName="org.jboss.tools.jsf.model.handlers.OpenPageHandler"
+
HandlerClassName="org.jboss.tools.seam.pages.xml.model.handlers.OpenPageHandler"
ICON="action.empty" PROPERTIES="actionpath=Open"
displayName="Open Page" kind="action"
name="OpenPage"/>
<XActionItem kind="list" name="RunActions">
@@ -3013,7 +3030,7 @@
</XActionItem>
<XActionItem ICON="action.delete" displayName="Delete"
kind="list" name="DeleteActions">
<XActionItem BaseActionName="Delete"
- HandlerClassName="org.jboss.tools.jsf.model.handlers.DeleteOutputHandler"
+
HandlerClassName="org.jboss.tools.seam.pages.xml.model.handlers.DeleteOutputHandler"
ICON="action.delete" displayName="Delete"
kind="action" name="Delete"/>
</XActionItem>
<XActionItem displayName="move" kind="list"
name="MoveActions">
Modified:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesConstants.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesConstants.java 2008-05-29
11:46:53 UTC (rev 8422)
+++
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesConstants.java 2008-05-29
11:51:52 UTC (rev 8423)
@@ -30,7 +30,11 @@
public String ENT_NAVIGATION = "SeamPageNavigation";
public String ENT_NAVIGATION_RULE = "SeamPageNavigationRule";
-
+
+ public String ENT_RULE = "SeamPageRule";
+ public String ENT_RULE_12 = "SeamPageRule" + SUFF_12;
+ public String ENT_RULE_20 = "SeamPageRule" + SUFF_20;
+
public String ATTR_NAME = "name"; //$NON-NLS-1$
public String ATTR_PATH = "path"; //$NON-NLS-1$
public String ATTR_VALUE = "value"; //$NON-NLS-1$
@@ -53,4 +57,8 @@
public String TYPE_EXCEPTION = "exception"; //$NON-NLS-1$
public String SUBTYPE_UNKNOWN = "unknown"; //$NON-NLS-1$
+ //common struts & jsf constants //TODO compare to JSF, move to common
+ public static final String ENT_FILEJSP = "FileJSP";
+ public static final String ENT_FILEHTML = "FileHTML";
+ public static final String ENT_FILEXHTML = "FileXHTML";
}
Added:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/DeleteOutputHandler.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/DeleteOutputHandler.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/DeleteOutputHandler.java 2008-05-29
11:51:52 UTC (rev 8423)
@@ -0,0 +1,26 @@
+package org.jboss.tools.seam.pages.xml.model.handlers;
+
+import java.util.Properties;
+
+import org.jboss.tools.common.meta.action.impl.handlers.DefaultRemoveHandler;
+import org.jboss.tools.common.model.XModelException;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesProcessStructureHelper;
+
+public class DeleteOutputHandler extends DefaultRemoveHandler {
+
+ public void executeHandler(XModelObject object, Properties p) throws XModelException {
+ XModelObject redirect = SeamPagesProcessStructureHelper.instance.getReference(object);
+ if(redirect == null) return;
+ XModelObject rule = redirect.getParent();
+ XModelObject g = rule.getParent();
+ XModelObject group = object.getParent();
+ super.removeFromParent(rule);
+ boolean q = true;
+ if(q && g.getChildren().length == 0 &&
g.getModelEntity().getName().startsWith(SeamPagesConstants.ENT_NAVIGATION)) {
+ group.getModel().changeObjectAttribute(group, "persistent",
"true");
+ super.removeFromParent(g);
+ }
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/OpenPageHandler.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/OpenPageHandler.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/OpenPageHandler.java 2008-05-29
11:51:52 UTC (rev 8423)
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.pages.xml.model.handlers;
+
+import org.jboss.tools.common.meta.action.impl.handlers.*;
+import org.jboss.tools.common.model.*;
+import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+
+public class OpenPageHandler extends DefaultRedirectHandler implements SeamPagesConstants
{
+
+ protected XModelObject getTrueSource(XModelObject source) {
+ String entity = source.getModelEntity().getName();
+ String attr = ATTR_VIEW_ID;
+ if(entity.startsWith(ENT_NAVIGATION_RULE)
+ || entity.startsWith(ENT_RULE)) {
+ source = source.getChildByPath("target");
+ attr = ATTR_VIEW_ID;
+ } else if(ENT_PROCESS_ITEM.equals(entity) ||
+ ENT_PROCESS_ITEM_OUTPUT.equals(entity)) {
+ attr = ATTR_PATH;
+ }
+ if(attr == null) return null;
+ String path = source.getAttributeValue(attr);
+ if(path == null || path.length() == 0 || path.indexOf('*') >= 0) return
null;
+ path = path.replace('\\', '/');
+ if(path.indexOf('?') >= 0) {
+ path = path.substring(0, path.indexOf('?'));
+ }
+ return (path.startsWith("/")) ? source.getModel().getByPath(path) : null;
+ }
+
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/PageAdopt.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/PageAdopt.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/PageAdopt.java 2008-05-29
11:51:52 UTC (rev 8423)
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.pages.xml.model.handlers;
+
+import java.util.*;
+import org.jboss.tools.common.meta.*;
+import org.jboss.tools.common.meta.action.impl.handlers.DefaultCreateHandler;
+import org.jboss.tools.common.meta.action.impl.handlers.DefaultRemoveHandler;
+import org.jboss.tools.common.model.*;
+import org.jboss.tools.jst.web.model.ReferenceObject;
+import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+
+public class PageAdopt implements XAdoptManager, SeamPagesConstants {
+
+ public static boolean move_case = false;
+
+ public boolean isAdoptable(XModelObject target, XModelObject object) {
+ String entity = object.getModelEntity().getName();
+ if(ENT_PROCESS_ITEM_OUTPUT.equals(entity)) {
+ if(move_case) {
+ return canMoveCase(target, object);
+ }
+ return canBeOutputTarget(target);
+ }
+ if(ENT_PROCESS_ITEM.equals(entity)) {
+ return canBeOutputTarget(target);
+ }
+ if(entity.startsWith(ENT_SEAM_PAGE)) {
+ return canBeOutputTarget(target);
+ }
+ return false;
+ }
+
+ private boolean canBeOutputTarget(XModelObject group) {
+ String path = group.getAttributeValue("path");
+ if(path == null) path = group.getAttributeValue(ATTR_VIEW_ID);
+ if(path == null) return false;
+ if(path.length() == 0 || path.indexOf("*") >= 0) return false;
+ return true;
+ }
+
+ private boolean canMoveCase(XModelObject target, XModelObject object) {
+ XModelObject case_ = null;
+ if(object instanceof ReferenceObject) {
+ case_ = ((ReferenceObject)object).getReference();
+ } else {
+ case_ = object;
+ }
+ XModelObject rule = null;
+ if(target instanceof ReferenceObject) {
+ rule = ((ReferenceObject)target).getReference();
+ } else {
+ rule = target;
+ }
+ return (case_ != null && rule == null || rule != case_.getParent());
+ }
+
+ public void adopt(XModelObject target, XModelObject object, Properties p) throws
XModelException {
+ String entity = object.getModelEntity().getName();
+ if(ENT_PROCESS_ITEM_OUTPUT.equals(entity)) {
+ if(move_case) {
+ moveOutput(object, target, p);
+ } else {
+ adoptOutput(object, target, p);
+ }
+ }
+ else if(ENT_PROCESS_ITEM.equals(entity)) adoptItem(object, target, p);
+ else if(entity.startsWith(ENT_SEAM_PAGE)) adoptSeamPage(object, target, p);
+ }
+
+ protected void adoptOutput(XModelObject source, XModelObject target, Properties p)
throws XModelException {
+ ReferenceObject i = (ReferenceObject)source;
+ adoptCase(i.getReference(), target, p);
+ }
+
+ protected void adoptCase(XModelObject source, XModelObject target, Properties p) throws
XModelException {
+ //TODO provide that source is redirect or render
+ source.getModel().changeObjectAttribute(source, ATTR_VIEW_ID,
target.getAttributeValue(ATTR_PATH));
+ }
+
+ protected void adoptItem(XModelObject source, XModelObject target, Properties p) throws
XModelException {
+ ReferenceObject i = (ReferenceObject)source;
+ adoptSeamPage(i.getReference(), target, p);
+ }
+
+ protected void adoptSeamPage(XModelObject source, XModelObject target, Properties p)
throws XModelException {
+ String path = target.getAttributeValue(ATTR_PATH);
+ String n = path;
+ if(n.lastIndexOf('.') > 0) n = n.substring(0, n.lastIndexOf('.'));
+ if(n.lastIndexOf('/') >= 0) n = n.substring(n.lastIndexOf('/') +
1);
+ String suffix = ProcessAdopt.getPageSuffix(source.getModelEntity().getName());
+ XModelObject cs = source.getModel().createModelObject(ENT_NAVIGATION_RULE + suffix,
null);
+ XModelObject redirect =
source.getModel().createModelObject("SeamPageRedirect" + suffix, null);
+ redirect.setAttributeValue(ATTR_VIEW_ID, path);
+ cs.addChild(redirect);
+//TODO
+// cs.setAttributeValue(ATT_FROM_OUTCOME, n);
+// int i = 0;
+// while (source.getChildByPath(cs.getPathPart()) != null)
+// cs.setAttributeValue(ATT_FROM_OUTCOME, n + (++i));
+ DefaultCreateHandler.addCreatedObject(source, cs, p);
+ }
+
+ void moveOutput(XModelObject source, XModelObject target, Properties p) throws
XModelException {
+ ReferenceObject i = (ReferenceObject)source;
+ moveCase(i.getReference(), target, p);
+ }
+
+ void moveCase(XModelObject source, XModelObject target, Properties p) throws
XModelException {
+ XModelObject rule = null;
+ if(target instanceof ReferenceObject) {
+ rule = ((ReferenceObject)target).getReference();
+ if(rule == null) {
+// JSFNavigationModel nm =
(JSFNavigationModel)JSFProcessStructureHelper.instance.getParentFile(target);
+// String path = target.getAttributeValue(ATT_PATH);
+// rule = nm.addRule(path);
+ }
+ } else {
+ rule = target;
+ }
+ if(rule == null || source.getParent() == rule) return;
+ DefaultRemoveHandler.removeFromParent(source);
+ DefaultCreateHandler.addCreatedObject(rule, source, p);
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/ProcessAdopt.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/ProcessAdopt.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/handlers/ProcessAdopt.java 2008-05-29
11:51:52 UTC (rev 8423)
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.pages.xml.model.handlers;
+
+import java.util.*;
+import org.jboss.tools.common.meta.XAdoptManager;
+import org.jboss.tools.common.meta.action.XActionInvoker;
+import org.jboss.tools.common.meta.action.impl.handlers.DefaultCreateHandler;
+import org.jboss.tools.common.model.XModelException;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.util.XModelObjectLoaderUtil;
+import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesProcessHelper;
+
+public class ProcessAdopt implements XAdoptManager, SeamPagesConstants {
+
+ public void adopt(XModelObject target, XModelObject object, java.util.Properties p)
throws XModelException {
+ if(isAdoptableJSP(target, object)) {
+ adoptJSP(target, object, p);
+ } else if(isAdoptableItem(target, object)) {
+ adoptItem(target, object, p);
+ }
+ }
+
+ public boolean isAdoptable(XModelObject target, XModelObject object) {
+ if(isAdoptableJSP(target, object)) return true;
+ if(isAdoptableItem(target, object)) return true;
+ return false;
+ }
+
+ static String ADOPTABLE_JSP = "." + ENT_FILEJSP + "."
+ + ENT_FILEHTML + "."
+ + ENT_FILEXHTML + "."
+ + "FileXML" + ".";
+
+ private boolean isAdoptableJSP(XModelObject target, XModelObject object) {
+ String entity = object.getModelEntity().getName();
+ if (ADOPTABLE_JSP.indexOf("." + entity + ".") >= 0) {
+ String path = XModelObjectLoaderUtil.getResourcePath(object);
+ if (target.getModelEntity().getName().startsWith(ENT_FILE_SEAM_PAGES)) {
+ target = target.getChildByPath(ELM_PROCESS);
+ }
+ return SeamPagesProcessHelper.getHelper(target).getPage(path) == null;
+ }
+ return false;
+ }
+
+ private void adoptJSP(XModelObject target, XModelObject object, Properties p) throws
XModelException {
+ if (target.getModelEntity().getName().startsWith(ENT_FILE_SEAM_PAGES)) {
+ target = target.getChildByPath(ELM_PROCESS);
+ }
+ addRuleByPageAdopt(target, object, p);
+/*
+ Properties runningProperties = new Properties();
+ runningProperties.put("preselectedObject", object);
+ if(p != null) runningProperties.putAll(p);
+ XActionInvoker.invoke("CreateActions.CreatePage", target,
runningProperties);
+*/
+ }
+
+ private void addRuleByPageAdopt(XModelObject process, XModelObject page, Properties p)
throws XModelException {
+ String path = XModelObjectLoaderUtil.getResourcePath(page);
+ XModelObject pageItem = SeamPagesProcessHelper.getHelper(process).getPage(path);
+ if(pageItem != null) return;
+ boolean doNotCreateEmptyRule = false; //or read preferences, compare JSF
+ pageItem = SeamPagesProcessHelper.getHelper(process).findOrCreateItem(path, null,
TYPE_PAGE);
+ setShape(pageItem, p);
+ if(doNotCreateEmptyRule) {
+ pageItem.setAttributeValue("persistent", "true");
+ pageItem.setModified(true);
+ } else {
+ XModelObject pages = process.getParent().getChildByPath(FOLDER_PAGES);
+ String suffix = getPageSuffix(process.getParent().getModelEntity().getName());
+ XModelObject rule = pages.getModel().createModelObject(ENT_SEAM_PAGE + suffix, null);
+ rule.setAttributeValue(ATTR_VIEW_ID, path);
+ DefaultCreateHandler.addCreatedObject(pages, rule, p);
+ }
+ }
+
+ public static String getPageSuffix(String entity) {
+ if(entity.endsWith(SUFF_12)) {
+ return SUFF_12;
+ } else {
+ return SUFF_20;
+ }
+ }
+
+ public static void setShape(XModelObject group, Properties p) {
+ String x = (p == null) ? null : p.getProperty("process.mouse.x");
+ String y = (p == null) ? null : p.getProperty("process.mouse.y");
+ if(x != null && y != null) {
+ group.setAttributeValue("shape", "" + x + "," + y +
",0,0");
+ }
+ }
+
+ private boolean isAdoptableItem(XModelObject target, XModelObject object) {
+ return ENT_PROCESS.equals(object.getModelEntity().getName());
+ }
+
+ private void adoptItem(XModelObject target, XModelObject object, Properties p) {
+// String path = object.getAttributeValue(ATT_PATH);
+ p.put("sample", object);
+ XActionInvoker.invoke("CreateActions.AddRule", target, p);
+ }
+
+}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPagesProcessImpl.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPagesProcessImpl.java 2008-05-29
11:46:53 UTC (rev 8422)
+++
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPagesProcessImpl.java 2008-05-29
11:51:52 UTC (rev 8423)
@@ -2,12 +2,13 @@
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.impl.OrderedObjectImpl;
+import org.jboss.tools.jst.web.model.ReferenceObject;
import org.jboss.tools.jst.web.model.WebProcess;
import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesProcessHelper;
import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesUpdateHelper;
-public class SeamPagesProcessImpl extends OrderedObjectImpl implements WebProcess,
SeamPagesConstants {
+public class SeamPagesProcessImpl extends OrderedObjectImpl implements WebProcess,
ReferenceObject, SeamPagesConstants {
private static final long serialVersionUID = 1981573715076399163L;
protected XModelObject reference;
protected SeamPagesProcessHelper phelper = new SeamPagesProcessHelper(this);