JBoss Tools SVN: r8380 - in trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test: wizard and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: vrubezhny
Date: 2008-05-27 14:59:52 -0400 (Tue, 27 May 2008)
New Revision: 8380
Modified:
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java
trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-2004 Create JUnit tests for New Seam Action/Form/Conversation/Entity wizards. It should invoke seam-gen and check results of its work.
JUnit TestCases are created (No test project templates are required)
Modified: trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java
===================================================================
--- trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java 2008-05-27 18:48:15 UTC (rev 8379)
+++ trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java 2008-05-27 18:59:52 UTC (rev 8380)
@@ -51,22 +51,10 @@
suite.addTestSuite(SeamELContentAssistJbide1645Test.class);
suite.addTest(new ProjectImportTestSetup(new TestSuite(SeamSettingsPreferencesPageTest.class), "org.jboss.tools.seam.ui.test", "projects/TestSeamSettingsPreferencesPage", "TestSeamSettingsPreferencesPage"));
- suite.addTest(new ProjectImportTestSetup(new TestSuite(Seam12EARNewOperationTest.class),
- "org.jboss.tools.seam.ui.test",
- new String[]{"projects/seam_ear", "projects/seam_ear-ejb", "projects/seam_ear-test"},
- new String[]{"seam_ear", "seam_ear-ejb", "seam_ear-test"}));
- suite.addTest(new ProjectImportTestSetup(new TestSuite(Seam12WARNewOperationTest.class),
- "org.jboss.tools.seam.ui.test",
- new String[]{"projects/seam_war", "projects/seam_war-test"},
- new String[]{"seam_war", "seam_war-test"}));
- suite.addTest(new ProjectImportTestSetup(new TestSuite(Seam20EARNewOperationTest.class),
- "org.jboss.tools.seam.ui.test",
- new String[]{"projects/seam_ear", "projects/seam_ear-ejb", "projects/seam_ear-test"},
- new String[]{"seam_ear", "seam_ear-ejb", "seam_ear-test"}));
- suite.addTest(new ProjectImportTestSetup(new TestSuite(Seam20WARNewOperationTest.class),
- "org.jboss.tools.seam.ui.test",
- new String[]{"projects/seam_war", "projects/seam_war-test"},
- new String[]{"seam_war", "seam_war-test"}));
+ suite.addTestSuite(Seam12EARNewOperationTest.class);
+ suite.addTestSuite(Seam12WARNewOperationTest.class);
+ suite.addTestSuite(Seam20EARNewOperationTest.class);
+ suite.addTestSuite(Seam20WARNewOperationTest.class);
return suite;
}
Modified: trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java
===================================================================
--- trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
+++ trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java 2008-05-27 18:59:52 UTC (rev 8380)
@@ -12,8 +12,12 @@
import java.io.File;
import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
import java.util.Map;
+import java.util.Set;
import junit.framework.TestCase;
@@ -36,12 +40,19 @@
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
+import org.jboss.tools.seam.core.SeamProjectsSet;
import org.jboss.tools.seam.core.project.facet.SeamRuntime;
import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
import org.jboss.tools.seam.core.project.facet.SeamVersion;
import org.jboss.tools.seam.internal.core.project.facet.ISeamFacetDataModelProperties;
+import org.jboss.tools.seam.internal.core.project.facet.SeamFacetInstallDataModelProvider;
import org.jboss.tools.seam.ui.widget.editor.IFieldEditor;
import org.jboss.tools.seam.ui.wizard.IParameter;
import org.jboss.tools.seam.ui.wizard.SeamWizardFactory;
@@ -76,15 +87,50 @@
private static final IUndoableOperation CREATE_SEAM_CONVERSATION = new SeamConversationCreateOperation();
private static final IUndoableOperation CREATE_SEAM_ENTITY = new SeamEntityCreateOperation();
-
+ protected final Set<IResource> resourcesToCleanup = new HashSet<IResource>();
+
+ protected static final IProjectFacetVersion dynamicWebVersion;
+ protected static final IProjectFacetVersion javaVersion;
+ protected static final IProjectFacetVersion javaFacesVersion;
+ private static final IProjectFacet seamFacet;
+
+ static {
+ javaVersion = ProjectFacetsManager.getProjectFacet("jst.java").getVersion("5.0");
+ dynamicWebVersion = ProjectFacetsManager.getProjectFacet("jst.web").getVersion("2.5");
+ javaFacesVersion = ProjectFacetsManager.getProjectFacet("jst.jsf").getVersion("1.2");
+ seamFacet = ProjectFacetsManager.getProjectFacet("jst.seam");
+ }
+
public AbstractSeamNewOperationTest() {
}
protected void setUp() throws Exception {
super.setUp();
+ try { EditorTestHelper.joinBackgroundActivities(); }
+ catch (Exception e) { JUnitUtils.fail(e.getMessage(), e); }
+ EditorTestHelper.runEventQueue(3000);
}
protected void tearDown() throws Exception {
+ // Wait until all jobs is finished to avoid delete project problems
+ EditorTestHelper.joinBackgroundActivities();
+ EditorTestHelper.runEventQueue(3000);
+ Exception last = null;
+ for (IResource r : this.resourcesToCleanup) {
+ try {
+ System.out.println("Deleting " + r);
+ r.delete(true, null);
+ } catch(Exception e) {
+ System.out.println("Error deleting " + r);
+ e.printStackTrace();
+ last = e;
+ }
+ }
+
+ if(last!=null) throw last;
+
+ resourcesToCleanup.clear();
+
super.tearDown();
}
@@ -120,20 +166,13 @@
return seamProject;
}
- protected void setUpSeamProject(IProject project, String seamRTName) {
- File folder = getSeamHomeFolder(seamRTName);
- assertNotNull("An error occured while getting the SEAM HOME folder for: " + seamRTName, folder);
-
- SeamRuntimeManager.getInstance().addRuntime(seamRTName, folder.getAbsolutePath(), getSeamRTVersion(seamRTName), true);
- SeamRuntime sr = SeamRuntimeManager.getInstance().findRuntimeByName(seamRTName);
- assertNotNull("An error occured while getting the SEAM RUNTIME for: " + seamRTName, sr);
-
+ protected void setUpSeamProject(IProject project) {
IScopeContext projectScope = new ProjectScope(project);
IEclipsePreferences prefs = projectScope.getNode(SeamCorePlugin.PLUGIN_ID);
assertNotNull("An error occured while getting the preferences for project: " + project.getName(), prefs);
prefs.put(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME,
- seamRTName);
+ getSeamRTName());
try {
prefs.flush();
@@ -142,6 +181,96 @@
}
}
+ protected IFacetedProject createSeamWarProject(String name) throws CoreException {
+ final IFacetedProject fproj = createSeamProject(name, createSeamDataModel("war"));
+
+ final IProject proj = fproj.getProject();
+
+ assertNotNull(proj);
+ assertTrue(proj.exists());
+
+ assertTrue(proj.getWorkspace().getRoot().getProject(proj.getName() + "-test").exists());
+ IProject testProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-test");
+ this.addResourceToCleanup(testProject);
+ this.addResourceToCleanup(proj);
+
+ return fproj;
+ }
+
+ protected IDataModel createSeamDataModel(String deployType) {
+ IDataModel config = (IDataModel) new SeamFacetInstallDataModelProvider().create();
+ config.setStringProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME, getSeamRTName());
+ config.setBooleanProperty(ISeamFacetDataModelProperties.DB_ALREADY_EXISTS, true);
+ config.setBooleanProperty(ISeamFacetDataModelProperties.RECREATE_TABLES_AND_DATA_ON_DEPLOY, false);
+ config.setStringProperty(ISeamFacetDataModelProperties.JBOSS_AS_DEPLOY_AS, deployType);
+ config.setStringProperty(ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_NAME, "org.session.beans");
+ config.setStringProperty(ISeamFacetDataModelProperties.ENTITY_BEAN_PACKAGE_NAME, "org.entity.beans");
+ config.setStringProperty(ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_NAME, "org.test.beans");
+ config.setStringProperty(ISeamFacetDataModelProperties.SEAM_CONNECTION_PROFILE, "noop-connection");
+ config.setProperty(ISeamFacetDataModelProperties.JDBC_DRIVER_JAR_PATH, new String[] { "noop-driver.jar" });
+ return config;
+ }
+
+ protected IFacetedProject createSeamProject(String baseProjectName, IDataModel config) throws CoreException {
+ final IFacetedProject fproj = ProjectFacetsManager.create(baseProjectName, null,
+ null);
+
+ installDependentFacets(fproj);
+// new SeamFacetPreInstallDelegate().execute(fproj.getProject(), getSeamFacetVersion(), config, null);
+ fproj.installProjectFacet(getSeamFacetVersion(getSeamRTName()), config, null);
+
+ SeamProjectsSet seamProjectsSet = new SeamProjectsSet(fproj.getProject());
+ assertTrue(seamProjectsSet.getActionFolder().exists());
+ assertTrue(seamProjectsSet.getModelFolder().exists());
+
+ return fproj;
+ }
+
+ protected void installDependentFacets(final IFacetedProject fproj) throws CoreException {
+ fproj.installProjectFacet(javaVersion, null, null);
+ fproj.installProjectFacet(dynamicWebVersion, null, null);
+ fproj.installProjectFacet(javaFacesVersion, null, null);
+ }
+
+ protected IProjectFacetVersion getSeamFacetVersion(String seamRTName) {
+ assertTrue("Wrong SEAM run-time name is specified: " + seamRTName,
+ (SEAM_1_2.equals(seamRTName) || SEAM_2_0.equals(seamRTName)));
+ if (SEAM_1_2.equals(seamRTName)) {
+ return seamFacet.getVersion("1.2");
+ } else if (SEAM_2_0.equals(seamRTName)) {
+ return seamFacet.getVersion("2.0");
+ }
+ return null;
+ }
+
+ protected final void addResourceToCleanup(final IResource resource) {
+ this.resourcesToCleanup.add(resource);
+ }
+
+ protected IFacetedProject createSeamEarProject(String name) throws CoreException {
+ final IFacetedProject fproj = createSeamProject(name, createSeamDataModel("ear"));
+
+ final IProject proj = fproj.getProject();
+ assertNotNull(proj);
+
+ IProject testProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-test");
+ IProject ejbProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-ejb");
+ IProject earProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-ear");
+
+ this.resourcesToCleanup.add(proj);
+ this.resourcesToCleanup.add(testProject);
+ this.resourcesToCleanup.add(ejbProject);
+ this.resourcesToCleanup.add(earProject);
+
+ assertTrue(proj.exists());
+ assertTrue(testProject.exists());
+ assertTrue(ejbProject.exists());
+ assertTrue(earProject.exists());
+
+ return fproj;
+ }
+
+
protected File getSeamHomeFolder(String seamRTName) {
if (SEAM_1_2.equals(seamRTName)) {
return new File(System.getProperty(SEAM_1_2_HOME, SEAM_1_2_HOME_DEFAULT));
@@ -160,7 +289,9 @@
return null;
}
-
+
+ abstract protected String getSeamRTName() ;
+
protected String getPackagePath(String packageName) {
return (packageName == null ? "" : packageName.replace('.', '/'));
}
Modified: trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java
===================================================================
--- trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
+++ trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java 2008-05-27 18:59:52 UTC (rev 8380)
@@ -10,6 +10,8 @@
******************************************************************************/
package org.jboss.tools.seam.ui.test.wizard;
+import java.io.File;
+
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -17,16 +19,22 @@
import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.core.SeamProjectsSet;
+import org.jboss.tools.seam.core.project.facet.SeamRuntime;
+import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
import org.jboss.tools.seam.ui.wizard.IParameter;
+import org.jboss.tools.test.util.JUnitUtils;
import org.jboss.tools.test.util.ProjectImportTestSetup;
+import org.jboss.tools.test.util.xpl.EditorTestHelper;
public class Seam12EARNewOperationTest extends AbstractSeamNewOperationTest {
private static final String SEAM_EAR_PROJECTNAME = "seam_ear";
private static final String SEAM_EAR_EJB_PROJECTNAME = "seam_ear-ejb";
+ private static final String SEAM_EAR_EAR_PROJECTNAME = "seam_ear-ear";
private static final String SEAM_EAR_TEST_PROJECTNAME = "seam_ear-test";
- protected IProject earProject = null;
- private IProject earEjbProject = null;
- private IProject testProject = null;
+ protected static IProject earProject = null;
+ private static IProject earEjbProject = null;
+ private static IProject earEarProject = null;
+ private static IProject testProject = null;
private ISeamProject seamEarProject = null;
private ISeamProject seamEarEjbProject = null;
private ISeamProject seamTestProject = null;
@@ -38,12 +46,32 @@
protected void setUp() throws Exception {
super.setUp();
+
+ File folder = getSeamHomeFolder(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM HOME folder for: " + getSeamRTName(), folder);
+
+ SeamRuntimeManager.getInstance().addRuntime(getSeamRTName(), folder.getAbsolutePath(), getSeamRTVersion(getSeamRTName()), true);
+ SeamRuntime sr = SeamRuntimeManager.getInstance().findRuntimeByName(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM RUN-TIME for: " + getSeamRTName(), sr);
+
+ if (earProject == null && earEjbProject == null && earEarProject == null && testProject == null)
+ createSeamEarProject(SEAM_EAR_PROJECTNAME);
+
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
if(earProject==null) {
earProject = ProjectImportTestSetup.loadProject(SEAM_EAR_PROJECTNAME);
}
if(earEjbProject==null) {
earEjbProject = ProjectImportTestSetup.loadProject(SEAM_EAR_EJB_PROJECTNAME);
}
+ if(earEarProject==null) {
+ earEarProject = ProjectImportTestSetup.loadProject(SEAM_EAR_EAR_PROJECTNAME);
+ }
if(testProject==null) {
testProject = ProjectImportTestSetup.loadProject(SEAM_EAR_TEST_PROJECTNAME);
}
@@ -54,10 +82,22 @@
seamEarEjbProject = loadSeamProject(earEjbProject);
}
if(seamTestProject==null) {
- seamTestProject = loadSeamProject(earProject);
+ seamTestProject = loadSeamProject(testProject);
}
}
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ earProject = null;
+ earEjbProject = null;
+ earEarProject = null;
+ testProject = null;
+ seamEarProject = null;
+ seamEarEjbProject = null;
+ seamTestProject = null;
+ }
+
+
protected IProject getProject() {
return earProject;
}
@@ -66,6 +106,7 @@
void assertProjectsAreCreated() {
assertTrue("Test project \"" + SEAM_EAR_PROJECTNAME + "\" is not loaded", (earProject != null));
assertTrue("Test project \"" + SEAM_EAR_EJB_PROJECTNAME + "\" is not loaded", (earEjbProject != null));
+ assertTrue("Test project \"" + SEAM_EAR_EAR_PROJECTNAME + "\" is not loaded", (earEarProject != null));
assertTrue("Test project \"" + SEAM_EAR_TEST_PROJECTNAME + "\" is not loaded", (testProject != null));
assertTrue("Test Seam project \"" + SEAM_EAR_PROJECTNAME + "\" is not loaded", (seamEarProject != null));
assertTrue("Test Seam project \"" + SEAM_EAR_EJB_PROJECTNAME + "\" is not loaded", (seamEarEjbProject != null));
@@ -74,7 +115,7 @@
@Override
void setUpSeamProjects() {
- setUpSeamProject(earProject, AbstractSeamNewOperationTest.SEAM_1_2);
+ setUpSeamProject(earProject);
}
@Override
@@ -268,4 +309,9 @@
void assertNewFormFilesAreCreatedSuccessfully(AdaptableRegistry data) {
assertNewActionFilesAreCreatedSuccessfully(data);
}
+
+ @Override
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_1_2;
+ }
}
Modified: trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java
===================================================================
--- trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
+++ trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java 2008-05-27 18:59:52 UTC (rev 8380)
@@ -11,6 +11,8 @@
package org.jboss.tools.seam.ui.test.wizard;
+import java.io.File;
+
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -18,8 +20,13 @@
import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.core.SeamProjectsSet;
+import org.jboss.tools.seam.core.project.facet.SeamRuntime;
+import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
+import org.jboss.tools.seam.core.project.facet.SeamVersion;
import org.jboss.tools.seam.ui.wizard.IParameter;
+import org.jboss.tools.test.util.JUnitUtils;
import org.jboss.tools.test.util.ProjectImportTestSetup;
+import org.jboss.tools.test.util.xpl.EditorTestHelper;
public class Seam12WARNewOperationTest extends AbstractSeamNewOperationTest {
private static final String SEAM_WAR_PROJECTNAME = "seam_war";
@@ -36,6 +43,22 @@
protected void setUp() throws Exception {
super.setUp();
+
+ File folder = getSeamHomeFolder(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM HOME folder for: " + getSeamRTName(), folder);
+
+ SeamRuntimeManager.getInstance().addRuntime(getSeamRTName(), folder.getAbsolutePath(), getSeamRTVersion(getSeamRTName()), true);
+ SeamRuntime sr = SeamRuntimeManager.getInstance().findRuntimeByName(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM RUN-TIME for: " + getSeamRTName(), sr);
+
+ createSeamWarProject(SEAM_WAR_PROJECTNAME);
+
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
if(warProject==null) {
warProject = ProjectImportTestSetup.loadProject(SEAM_WAR_PROJECTNAME);
}
@@ -46,7 +69,7 @@
seamWarProject = loadSeamProject(warProject);
}
if(seamTestProject==null) {
- seamTestProject = loadSeamProject(warProject);
+ seamTestProject = loadSeamProject(testProject);
}
}
@@ -64,9 +87,14 @@
@Override
void setUpSeamProjects() {
- setUpSeamProject(warProject, AbstractSeamNewOperationTest.SEAM_1_2);
+ setUpSeamProject(warProject);
}
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_1_2;
+ }
+
+
@Override
void assertNewActionFilesAreCreatedSuccessfully(AdaptableRegistry data) {
IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(warProject);
Modified: trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java
===================================================================
--- trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
+++ trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java 2008-05-27 18:59:52 UTC (rev 8380)
@@ -13,6 +13,11 @@
public class Seam20EARNewOperationTest extends Seam12EARNewOperationTest {
@Override
void setUpSeamProjects() {
- setUpSeamProject(earProject, AbstractSeamNewOperationTest.SEAM_2_0);
+ setUpSeamProject(earProject);
}
+
+ @Override
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_2_0;
+ }
}
Modified: trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java
===================================================================
--- trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
+++ trunk/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java 2008-05-27 18:59:52 UTC (rev 8380)
@@ -13,6 +13,11 @@
public class Seam20WARNewOperationTest extends Seam12WARNewOperationTest {
@Override
void setUpSeamProjects() {
- setUpSeamProject(warProject, AbstractSeamNewOperationTest.SEAM_2_0);
+ setUpSeamProject(warProject);
}
+
+ @Override
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_2_0;
+ }
}
16 years
JBoss Tools SVN: r8379 - in branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test: wizard and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: vrubezhny
Date: 2008-05-27 14:48:15 -0400 (Tue, 27 May 2008)
New Revision: 8379
Added:
branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java
branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java
branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java
branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java
branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java
Modified:
branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-2004 Create JUnit tests for New Seam Action/Form/Conversation/Entity wizards. It should invoke seam-gen and check results of its work.
JUnit TestCases are created (No test project templates are required)
Modified: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java
===================================================================
--- branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java 2008-05-27 16:22:17 UTC (rev 8378)
+++ branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/SeamUiAllTests.java 2008-05-27 18:48:15 UTC (rev 8379)
@@ -22,6 +22,10 @@
import org.jboss.tools.seam.ui.test.preferences.SeamSettingsPreferencesPageTest;
import org.jboss.tools.seam.ui.test.view.SeamComponentsViewAllTests;
import org.jboss.tools.seam.ui.test.wizard.OpenSeamComponentDialogTest;
+import org.jboss.tools.seam.ui.test.wizard.Seam12EARNewOperationTest;
+import org.jboss.tools.seam.ui.test.wizard.Seam12WARNewOperationTest;
+import org.jboss.tools.seam.ui.test.wizard.Seam20EARNewOperationTest;
+import org.jboss.tools.seam.ui.test.wizard.Seam20WARNewOperationTest;
import org.jboss.tools.seam.ui.test.wizard.SeamFormNewWizardTest;
import org.jboss.tools.seam.ui.test.wizard.SeamProjectNewWizardTest;
import org.jboss.tools.test.util.ProjectImportTestSetup;
@@ -34,6 +38,7 @@
public static Test suite() {
TestSuite suite = new TestSuite("Seam UI tests");
+
suite.addTestSuite(OpenSeamComponentDialogTest.class);
suite.addTest(SeamComponentsViewAllTests.suite());
suite.addTestSuite(SeamProjectNewWizardTest.class);
@@ -44,6 +49,11 @@
suite.addTestSuite(SeamELContentAssistJbide1676Test.class);
suite.addTestSuite(SeamELContentAssistJbide1645Test.class);
suite.addTest(new ProjectImportTestSetup(new TestSuite(SeamSettingsPreferencesPageTest.class), "org.jboss.tools.seam.ui.test", "projects/TestSeamSettingsPreferencesPage", "TestSeamSettingsPreferencesPage"));
+
+ suite.addTestSuite(Seam12EARNewOperationTest.class);
+ suite.addTestSuite(Seam12WARNewOperationTest.class);
+ suite.addTestSuite(Seam20EARNewOperationTest.class);
+ suite.addTestSuite(Seam20WARNewOperationTest.class);
return suite;
}
}
\ No newline at end of file
Added: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java
===================================================================
--- branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java (rev 0)
+++ branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
@@ -0,0 +1,546 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.test.wizard;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.commands.operations.IUndoableOperation;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.jboss.tools.seam.core.ISeamProject;
+import org.jboss.tools.seam.core.SeamCorePlugin;
+import org.jboss.tools.seam.core.SeamProjectsSet;
+import org.jboss.tools.seam.core.project.facet.SeamRuntime;
+import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
+import org.jboss.tools.seam.core.project.facet.SeamVersion;
+import org.jboss.tools.seam.internal.core.project.facet.ISeamFacetDataModelProperties;
+import org.jboss.tools.seam.internal.core.project.facet.SeamFacetInstallDataModelProvider;
+import org.jboss.tools.seam.ui.widget.editor.IFieldEditor;
+import org.jboss.tools.seam.ui.wizard.IParameter;
+import org.jboss.tools.seam.ui.wizard.SeamWizardFactory;
+import org.jboss.tools.seam.ui.wizard.SeamWizardUtils;
+import org.jboss.tools.seam.ui.wizard.SeamActionWizard.SeamActionCreateOperation;
+import org.jboss.tools.seam.ui.wizard.SeamConversationWizard.SeamConversationCreateOperation;
+import org.jboss.tools.seam.ui.wizard.SeamEntityWizard.SeamEntityCreateOperation;
+import org.jboss.tools.seam.ui.wizard.SeamFormWizard.SeamFormCreateOperation;
+import org.jboss.tools.test.util.JUnitUtils;
+import org.jboss.tools.test.util.xpl.EditorTestHelper;
+import org.osgi.service.prefs.BackingStoreException;
+
+abstract public class AbstractSeamNewOperationTest extends TestCase {
+ protected static final IWorkspace ws = ResourcesPlugin.getWorkspace();
+ protected static final IWorkbench wb = PlatformUI.getWorkbench();
+
+ protected static final String SEAM_1_2 = "Seam 1.2.0";
+ protected static final String SEAM_2_0 = "Seam 2.0.0";
+
+ protected static final String SEAM_1_2_HOME = "jbosstools.test.seam.1.2.1.eap.home";
+ protected static final String SEAM_2_0_HOME = "jbosstools.test.seam.2.0.0.home";
+ protected static final String SEAM_1_2_HOME_DEFAULT = "F:/jbdevstudio-ga/jboss-eap/seam";
+ protected static final String SEAM_2_0_HOME_DEFAULT = "E:/Java/JBoss/Seam/jboss-seam-2.0.1.GA";
+
+ private static final String SEAM_ACTION_COMPONENT_NAME = "TestAction";
+ private static final String SEAM_FORM_COMPONENT_NAME = "TestForm";
+ private static final String SEAM_CONVERSATION_COMPONENT_NAME = "TestConversation";
+ private static final String SEAM_ENTITY_COMPONENT_NAME = "TestEntity";
+
+ private static final IUndoableOperation CREATE_SEAM_ACTION = new SeamActionCreateOperation();
+ private static final IUndoableOperation CREATE_SEAM_FORM = new SeamFormCreateOperation();
+ private static final IUndoableOperation CREATE_SEAM_CONVERSATION = new SeamConversationCreateOperation();
+ private static final IUndoableOperation CREATE_SEAM_ENTITY = new SeamEntityCreateOperation();
+
+ protected final Set<IResource> resourcesToCleanup = new HashSet<IResource>();
+
+ protected static final IProjectFacetVersion dynamicWebVersion;
+ protected static final IProjectFacetVersion javaVersion;
+ protected static final IProjectFacetVersion javaFacesVersion;
+ private static final IProjectFacet seamFacet;
+
+ static {
+ javaVersion = ProjectFacetsManager.getProjectFacet("jst.java").getVersion("5.0");
+ dynamicWebVersion = ProjectFacetsManager.getProjectFacet("jst.web").getVersion("2.5");
+ javaFacesVersion = ProjectFacetsManager.getProjectFacet("jst.jsf").getVersion("1.2");
+ seamFacet = ProjectFacetsManager.getProjectFacet("jst.seam");
+ }
+
+ public AbstractSeamNewOperationTest() {
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ try { EditorTestHelper.joinBackgroundActivities(); }
+ catch (Exception e) { JUnitUtils.fail(e.getMessage(), e); }
+ EditorTestHelper.runEventQueue(3000);
+ }
+
+ protected void tearDown() throws Exception {
+ // Wait until all jobs is finished to avoid delete project problems
+ EditorTestHelper.joinBackgroundActivities();
+ EditorTestHelper.runEventQueue(3000);
+ Exception last = null;
+ for (IResource r : this.resourcesToCleanup) {
+ try {
+ System.out.println("Deleting " + r);
+ r.delete(true, null);
+ } catch(Exception e) {
+ System.out.println("Error deleting " + r);
+ e.printStackTrace();
+ last = e;
+ }
+ }
+
+ if(last!=null) throw last;
+
+ resourcesToCleanup.clear();
+
+ super.tearDown();
+ }
+
+ abstract protected IProject getProject();
+
+ abstract void setUpSeamProjects();
+
+ abstract void assertProjectsAreCreated();
+
+ abstract void assertNewActionFilesAreCreatedSuccessfully(AdaptableRegistry data);
+ abstract void assertNewFormFilesAreCreatedSuccessfully(AdaptableRegistry data);
+ abstract void assertNewConversationFilesAreCreatedSuccessfully(AdaptableRegistry data);
+ abstract void assertNewEntityFilesAreCreatedSuccessfully(AdaptableRegistry data);
+
+ protected void assertResourceIsCreatedAndHasNoProblems(IResource resource, String path) {
+ assertNotNull("Resource isn't created: " + path, resource);
+ assertTrue("Resource isn't created: " + path, resource.exists());
+
+ int maxSevarityMarkersCount = -1;
+ try {
+ maxSevarityMarkersCount = resource.findMaxProblemSeverity(IMarker.PROBLEM, false, IResource.DEPTH_INFINITE);
+ } catch (CoreException e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+ assertFalse("At least one problem marker exists on resource: " + path, (maxSevarityMarkersCount >= 0));
+ }
+
+
+ protected ISeamProject loadSeamProject(IProject project) throws CoreException {
+ ISeamProject seamProject = SeamCorePlugin.getSeamProject(project, true);
+ assertNotNull("Seam project for " + project.getName() + " is null", seamProject);
+ EditorTestHelper.joinBackgroundActivities();
+ return seamProject;
+ }
+
+ protected void setUpSeamProject(IProject project) {
+ IScopeContext projectScope = new ProjectScope(project);
+ IEclipsePreferences prefs = projectScope.getNode(SeamCorePlugin.PLUGIN_ID);
+ assertNotNull("An error occured while getting the preferences for project: " + project.getName(), prefs);
+
+ prefs.put(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME,
+ getSeamRTName());
+
+ try {
+ prefs.flush();
+ } catch (BackingStoreException e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+ }
+
+ protected IFacetedProject createSeamWarProject(String name) throws CoreException {
+ final IFacetedProject fproj = createSeamProject(name, createSeamDataModel("war"));
+
+ final IProject proj = fproj.getProject();
+
+ assertNotNull(proj);
+ assertTrue(proj.exists());
+
+ assertTrue(proj.getWorkspace().getRoot().getProject(proj.getName() + "-test").exists());
+ IProject testProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-test");
+ this.addResourceToCleanup(testProject);
+ this.addResourceToCleanup(proj);
+
+ return fproj;
+ }
+
+ protected IDataModel createSeamDataModel(String deployType) {
+ IDataModel config = (IDataModel) new SeamFacetInstallDataModelProvider().create();
+ config.setStringProperty(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME, getSeamRTName());
+ config.setBooleanProperty(ISeamFacetDataModelProperties.DB_ALREADY_EXISTS, true);
+ config.setBooleanProperty(ISeamFacetDataModelProperties.RECREATE_TABLES_AND_DATA_ON_DEPLOY, false);
+ config.setStringProperty(ISeamFacetDataModelProperties.JBOSS_AS_DEPLOY_AS, deployType);
+ config.setStringProperty(ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_NAME, "org.session.beans");
+ config.setStringProperty(ISeamFacetDataModelProperties.ENTITY_BEAN_PACKAGE_NAME, "org.entity.beans");
+ config.setStringProperty(ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_NAME, "org.test.beans");
+ config.setStringProperty(ISeamFacetDataModelProperties.SEAM_CONNECTION_PROFILE, "noop-connection");
+ config.setProperty(ISeamFacetDataModelProperties.JDBC_DRIVER_JAR_PATH, new String[] { "noop-driver.jar" });
+ return config;
+ }
+
+ protected IFacetedProject createSeamProject(String baseProjectName, IDataModel config) throws CoreException {
+ final IFacetedProject fproj = ProjectFacetsManager.create(baseProjectName, null,
+ null);
+
+ installDependentFacets(fproj);
+// new SeamFacetPreInstallDelegate().execute(fproj.getProject(), getSeamFacetVersion(), config, null);
+ fproj.installProjectFacet(getSeamFacetVersion(getSeamRTName()), config, null);
+
+ SeamProjectsSet seamProjectsSet = new SeamProjectsSet(fproj.getProject());
+ assertTrue(seamProjectsSet.getActionFolder().exists());
+ assertTrue(seamProjectsSet.getModelFolder().exists());
+
+ return fproj;
+ }
+
+ protected void installDependentFacets(final IFacetedProject fproj) throws CoreException {
+ fproj.installProjectFacet(javaVersion, null, null);
+ fproj.installProjectFacet(dynamicWebVersion, null, null);
+ fproj.installProjectFacet(javaFacesVersion, null, null);
+ }
+
+ protected IProjectFacetVersion getSeamFacetVersion(String seamRTName) {
+ assertTrue("Wrong SEAM run-time name is specified: " + seamRTName,
+ (SEAM_1_2.equals(seamRTName) || SEAM_2_0.equals(seamRTName)));
+ if (SEAM_1_2.equals(seamRTName)) {
+ return seamFacet.getVersion("1.2");
+ } else if (SEAM_2_0.equals(seamRTName)) {
+ return seamFacet.getVersion("2.0");
+ }
+ return null;
+ }
+
+ protected final void addResourceToCleanup(final IResource resource) {
+ this.resourcesToCleanup.add(resource);
+ }
+
+ protected IFacetedProject createSeamEarProject(String name) throws CoreException {
+ final IFacetedProject fproj = createSeamProject(name, createSeamDataModel("ear"));
+
+ final IProject proj = fproj.getProject();
+ assertNotNull(proj);
+
+ IProject testProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-test");
+ IProject ejbProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-ejb");
+ IProject earProject = proj.getWorkspace().getRoot().getProject(proj.getName() + "-ear");
+
+ this.resourcesToCleanup.add(proj);
+ this.resourcesToCleanup.add(testProject);
+ this.resourcesToCleanup.add(ejbProject);
+ this.resourcesToCleanup.add(earProject);
+
+ assertTrue(proj.exists());
+ assertTrue(testProject.exists());
+ assertTrue(ejbProject.exists());
+ assertTrue(earProject.exists());
+
+ return fproj;
+ }
+
+
+ protected File getSeamHomeFolder(String seamRTName) {
+ if (SEAM_1_2.equals(seamRTName)) {
+ return new File(System.getProperty(SEAM_1_2_HOME, SEAM_1_2_HOME_DEFAULT));
+ } else if (SEAM_2_0.equals(seamRTName)) {
+ return new File(System.getProperty(SEAM_2_0_HOME, SEAM_2_0_HOME_DEFAULT));
+ }
+ return null;
+ }
+
+ protected SeamVersion getSeamRTVersion(String seamRTName) {
+ if (SEAM_1_2.equals(seamRTName)) {
+ return SeamVersion.SEAM_1_2;
+ } else if (SEAM_2_0.equals(seamRTName)) {
+ return SeamVersion.SEAM_2_0;
+ }
+ return null;
+ }
+
+
+ abstract protected String getSeamRTName() ;
+
+ protected String getPackagePath(String packageName) {
+ return (packageName == null ? "" : packageName.replace('.', '/'));
+ }
+
+ protected String getSessionBeanPackageName(IEclipsePreferences seamFacetPrefs) {
+ return seamFacetPrefs.get(IParameter.SESSION_BEAN_PACKAGE_NAME, "");
+ }
+
+ protected String getEntityBeanPackageName(IEclipsePreferences seamFacetPrefs) {
+ return seamFacetPrefs.get(IParameter.ENTITY_BEAN_PACKAGE_NAME, "");
+ }
+
+ protected String getTestCasesPackageName(IEclipsePreferences seamFacetPrefs) {
+ return seamFacetPrefs.get(IParameter.TEST_CASES_PACKAGE_NAME, "");
+ }
+
+ /**
+ * Test Seam Action for http://jira.jboss.com/jira/browse/JBIDE-2004
+ */
+ public void testNewSeamActionOperation() {
+ try { EditorTestHelper.joinBackgroundActivities(); }
+ catch (Exception e) { JUnitUtils.fail(e.getMessage(), e); }
+
+ assertProjectsAreCreated();
+
+ setUpSeamProjects();
+
+ AdaptableRegistry registry = new AdaptableRegistry();
+
+ registry.createData();
+ registry.fillDataDefaults(SEAM_ACTION_COMPONENT_NAME, getProject().getName());
+ performOperation(CREATE_SEAM_ACTION, registry);
+
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
+ assertNewActionFilesAreCreatedSuccessfully(registry);
+ }
+
+ /**
+ * Test Seam Form for http://jira.jboss.com/jira/browse/JBIDE-2004
+ */
+ public void testNewSeamFormOperation() {
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+ assertProjectsAreCreated();
+
+ setUpSeamProjects();
+
+ AdaptableRegistry registry = new AdaptableRegistry();
+ registry.createData();
+ registry.fillDataDefaults(SEAM_FORM_COMPONENT_NAME, getProject().getName());
+ performOperation(CREATE_SEAM_FORM, registry);
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
+ assertNewFormFilesAreCreatedSuccessfully(registry);
+ }
+ /**
+ * Test Seam Action for http://jira.jboss.com/jira/browse/JBIDE-2004
+ */
+ public void testNewSeamConversationOperation() {
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+ assertProjectsAreCreated();
+
+ setUpSeamProjects();
+
+ AdaptableRegistry registry = new AdaptableRegistry();
+ registry.createData();
+ registry.fillDataDefaults(SEAM_CONVERSATION_COMPONENT_NAME, getProject().getName());
+ performOperation(CREATE_SEAM_CONVERSATION, registry);
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
+ assertNewConversationFilesAreCreatedSuccessfully(registry);
+ }
+
+ /**
+ * Test Seam Action for http://jira.jboss.com/jira/browse/JBIDE-2004
+ */
+ public void testNewSeamEntityOperation() {
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
+ assertProjectsAreCreated();
+
+ setUpSeamProjects();
+
+ AdaptableRegistry registry = new AdaptableRegistry() {
+ protected void fillDataDefaults(String componentName, String projectName) {
+ super.fillDataDefaults(componentName, projectName);
+ setDefaultValue(IParameter.SEAM_PACKAGE_NAME, getEntityBeanPackageName(getSeamFacetPreferences(projectName)));
+ }
+
+ };
+ registry.createData();
+ registry.fillDataDefaults(SEAM_ENTITY_COMPONENT_NAME, getProject().getName());
+ performOperation(CREATE_SEAM_ENTITY, registry);
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
+ assertNewEntityFilesAreCreatedSuccessfully(registry);
+ }
+
+ protected IEclipsePreferences getSeamFacetPreferences(String selectedProject) {
+ if(selectedProject!=null && selectedProject.length()>0) {
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(selectedProject);
+ if(project!=null) {
+ return SeamCorePlugin.getSeamPreferences(project);
+ }
+ }
+
+ return null;
+ }
+
+ protected String getDefaultPackageName(String selectedProject) {
+ String packageName = "";
+ if(selectedProject!=null && selectedProject.length()>0) {
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(selectedProject);
+ if(project!=null) {
+ IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(project);
+ packageName = getDefaultPackageName(seamFacetPrefs);
+ }
+ }
+
+ return packageName;
+ }
+
+ protected String getDefaultPackageName(IEclipsePreferences seamFacetPrefs) {
+ return seamFacetPrefs.get(ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_NAME, "");
+ }
+
+ private void performOperation(final IUndoableOperation operation, final AdaptableRegistry data) {
+
+ // TODO lock only current project, not entire workspace
+ try {
+ wb.getActiveWorkbenchWindow().run(false, false, new WorkspaceModifyOperation(){
+ @Override
+ protected void execute(IProgressMonitor monitor)
+ throws CoreException, InvocationTargetException,
+ InterruptedException {
+ IStatus result;
+ IOperationHistory operationHistory = wb.getOperationSupport().getOperationHistory();
+ IUndoContext undoContext = wb.getOperationSupport().getUndoContext();
+ operation.addContext(undoContext);
+ try {
+ result = operationHistory.execute(operation, monitor, data);
+ } catch (ExecutionException e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+ }
+ });
+ } catch (InvocationTargetException e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ } catch (InterruptedException e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+ return;
+ }
+
+ class AdaptableRegistry implements IAdaptable {
+ Map<String,IFieldEditor> editorRegistry;
+
+ AdaptableRegistry () {
+ editorRegistry = new HashMap<String,IFieldEditor>();
+ }
+
+ public Object getAdapter(Class adapter) {
+ if(adapter == Map.class)
+ return editorRegistry;
+ return null;
+ }
+
+ /**
+ *
+ * @param id
+ * @param editor
+ */
+ protected void add(IFieldEditor editor) {
+ editorRegistry.put(editor.getName(), editor);
+ }
+
+ protected void createData() {
+ add(SeamWizardFactory.createSeamProjectSelectionFieldEditor(getProject().getName()));
+ add(SeamWizardFactory.createSeamComponentNameFieldEditor());
+ add(SeamWizardFactory.createSeamLocalInterfaceNameFieldEditor());
+ add(SeamWizardFactory.createSeamBeanNameFieldEditor());
+ add(SeamWizardFactory.createSeamMethodNameFieldEditor());
+ add(SeamWizardFactory.createSeamMasterPageNameFieldEditor());
+ add(SeamWizardFactory.createSeamPageNameFieldEditor());
+ add(SeamWizardFactory.createSeamEntityClasNameFieldEditor());
+ IProject rootSeamProject = SeamWizardUtils.getRootSeamProject(getProject());
+ String selectedProject = (rootSeamProject == null) ? "" : rootSeamProject.getName();
+ String packageName = getDefaultPackageName(selectedProject);
+ add(SeamWizardFactory.createSeamJavaPackageSelectionFieldEditor(packageName));
+ }
+
+ protected void fillDataDefaults(String componentName, String projectName) {
+ String valueU = componentName.substring(0,1).toUpperCase() + componentName.substring(1);
+ String valueL = componentName.substring(0,1).toLowerCase() + componentName.substring(1);
+ setDefaultValue(IParameter.SEAM_COMPONENT_NAME, valueU); //$NON-NLS-1$
+ setDefaultValue(IParameter.SEAM_LOCAL_INTERFACE_NAME, valueU); //$NON-NLS-1$
+ setDefaultValue(IParameter.SEAM_BEAN_NAME, valueU+"Bean"); //$NON-NLS-1$
+ setDefaultValue(IParameter.SEAM_ENTITY_CLASS_NAME, valueU); //$NON-NLS-1$
+ setDefaultValue(IParameter.SEAM_METHOD_NAME, valueL); //$NON-NLS-1$
+ setDefaultValue(IParameter.SEAM_MASTER_PAGE_NAME, valueL+"List");
+ setDefaultValue(IParameter.SEAM_PAGE_NAME, valueL); //$NON-NLS-1$
+ setSeamProjectNameData(projectName);
+ setDefaultValue(IParameter.SEAM_PACKAGE_NAME, getDefaultPackageName(projectName));
+ }
+
+ protected void setDefaultValue(String name, Object value) {
+ IFieldEditor editor = editorRegistry.get(name);
+ if (editor != null)
+ editor.setValue(value);
+ }
+
+ protected void setSeamProjectNameData(String projectName) {
+ IFieldEditor editor = editorRegistry.get(IParameter.SEAM_PACKAGE_NAME);
+ if(editor!=null) {
+ editor.setData(IParameter.SEAM_PROJECT_NAME, projectName);
+ }
+ }
+
+ public String getValue(String key) {
+ IFieldEditor editor = editorRegistry.get(key);
+ return (editor == null ? null : editor.getValueAsString());
+ }
+ }
+}
Property changes on: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/AbstractSeamNewOperationTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java
===================================================================
--- branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java (rev 0)
+++ branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
@@ -0,0 +1,317 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.test.wizard;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.jboss.tools.seam.core.ISeamProject;
+import org.jboss.tools.seam.core.SeamCorePlugin;
+import org.jboss.tools.seam.core.SeamProjectsSet;
+import org.jboss.tools.seam.core.project.facet.SeamRuntime;
+import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
+import org.jboss.tools.seam.ui.wizard.IParameter;
+import org.jboss.tools.test.util.JUnitUtils;
+import org.jboss.tools.test.util.ProjectImportTestSetup;
+import org.jboss.tools.test.util.xpl.EditorTestHelper;
+
+public class Seam12EARNewOperationTest extends AbstractSeamNewOperationTest {
+ private static final String SEAM_EAR_PROJECTNAME = "seam_ear";
+ private static final String SEAM_EAR_EJB_PROJECTNAME = "seam_ear-ejb";
+ private static final String SEAM_EAR_EAR_PROJECTNAME = "seam_ear-ear";
+ private static final String SEAM_EAR_TEST_PROJECTNAME = "seam_ear-test";
+ protected static IProject earProject = null;
+ private static IProject earEjbProject = null;
+ private static IProject earEarProject = null;
+ private static IProject testProject = null;
+ private ISeamProject seamEarProject = null;
+ private ISeamProject seamEarEjbProject = null;
+ private ISeamProject seamTestProject = null;
+
+
+ public Seam12EARNewOperationTest() {
+ super();
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ File folder = getSeamHomeFolder(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM HOME folder for: " + getSeamRTName(), folder);
+
+ SeamRuntimeManager.getInstance().addRuntime(getSeamRTName(), folder.getAbsolutePath(), getSeamRTVersion(getSeamRTName()), true);
+ SeamRuntime sr = SeamRuntimeManager.getInstance().findRuntimeByName(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM RUN-TIME for: " + getSeamRTName(), sr);
+
+ if (earProject == null && earEjbProject == null && earEarProject == null && testProject == null)
+ createSeamEarProject(SEAM_EAR_PROJECTNAME);
+
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
+ if(earProject==null) {
+ earProject = ProjectImportTestSetup.loadProject(SEAM_EAR_PROJECTNAME);
+ }
+ if(earEjbProject==null) {
+ earEjbProject = ProjectImportTestSetup.loadProject(SEAM_EAR_EJB_PROJECTNAME);
+ }
+ if(earEarProject==null) {
+ earEarProject = ProjectImportTestSetup.loadProject(SEAM_EAR_EAR_PROJECTNAME);
+ }
+ if(testProject==null) {
+ testProject = ProjectImportTestSetup.loadProject(SEAM_EAR_TEST_PROJECTNAME);
+ }
+ if(seamEarProject==null) {
+ seamEarProject = loadSeamProject(earProject);
+ }
+ if(seamEarEjbProject==null) {
+ seamEarEjbProject = loadSeamProject(earEjbProject);
+ }
+ if(seamTestProject==null) {
+ seamTestProject = loadSeamProject(testProject);
+ }
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ earProject = null;
+ earEjbProject = null;
+ earEarProject = null;
+ testProject = null;
+ seamEarProject = null;
+ seamEarEjbProject = null;
+ seamTestProject = null;
+ }
+
+
+ protected IProject getProject() {
+ return earProject;
+ }
+
+ @Override
+ void assertProjectsAreCreated() {
+ assertTrue("Test project \"" + SEAM_EAR_PROJECTNAME + "\" is not loaded", (earProject != null));
+ assertTrue("Test project \"" + SEAM_EAR_EJB_PROJECTNAME + "\" is not loaded", (earEjbProject != null));
+ assertTrue("Test project \"" + SEAM_EAR_EAR_PROJECTNAME + "\" is not loaded", (earEarProject != null));
+ assertTrue("Test project \"" + SEAM_EAR_TEST_PROJECTNAME + "\" is not loaded", (testProject != null));
+ assertTrue("Test Seam project \"" + SEAM_EAR_PROJECTNAME + "\" is not loaded", (seamEarProject != null));
+ assertTrue("Test Seam project \"" + SEAM_EAR_EJB_PROJECTNAME + "\" is not loaded", (seamEarEjbProject != null));
+ assertTrue("Test Seam project \"" + SEAM_EAR_TEST_PROJECTNAME + "\" is not loaded", (seamTestProject != null));
+ }
+
+ @Override
+ void setUpSeamProjects() {
+ setUpSeamProject(earProject);
+ }
+
+ @Override
+ void assertNewActionFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject);
+ SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject);
+
+ String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
+ String testCasesPackagePath = getPackagePath(getTestCasesPackageName(seamFacetPrefs));
+
+ IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
+ IContainer testSourceFolder = seamPrjSet.getTestsFolder();
+ IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
+
+ String seamPageName = data.getValue(IParameter.SEAM_PAGE_NAME);
+ String seamLocalInterfaceName = data.getValue(IParameter.SEAM_LOCAL_INTERFACE_NAME);
+ String seamBeanName = data.getValue(IParameter.SEAM_BEAN_NAME);
+
+//
+// "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+// ${" + IParameter.SEAM_BEAN_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource beanJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamBeanName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(beanJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamBeanName + ".java");
+
+//
+// "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+// ${" + IParameter.SEAM_LOCAL_INTERFACE_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource localInterfaceJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(localInterfaceJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+
+//
+// "${" + IParameter.TEST_SOURCE_FOLDER + "}/
+// ${" + ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_PATH + "}/
+// ${"+ IParameter.SEAM_LOCAL_INTERFACE_NAME +"}Test.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource localInterfaceTestJava = testSourceFolder.findMember(
+ testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.java");
+ assertResourceIsCreatedAndHasNoProblems(localInterfaceTestJava,
+ testSourceFolder.toString() + "/" +
+ testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.java");
+
+// "${" + IParameter.TEST_SOURCE_FOLDER + "}/
+// ${" + ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_PATH + "}/
+// ${"+ IParameter.SEAM_LOCAL_INTERFACE_NAME +"}Test.xml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource localInterfaceTestXml = testSourceFolder.findMember(
+ testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.xml");
+ assertResourceIsCreatedAndHasNoProblems(localInterfaceTestXml,
+ testSourceFolder.toString() + "/" +
+ testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.xml");
+
+//
+// "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+// ${" + IParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamPageName + ".xhtml");
+ }
+
+ @Override
+ void assertNewConversationFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject);
+ SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject);
+
+ String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
+
+ IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
+ IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
+
+ String seamPageName = data.getValue(IParameter.SEAM_PAGE_NAME);
+ String seamLocalInterfaceName = data.getValue(IParameter.SEAM_LOCAL_INTERFACE_NAME);
+ String seamBeanName = data.getValue(IParameter.SEAM_BEAN_NAME);
+
+//
+// "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+// ${" + IParameter.SEAM_BEAN_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource beanJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamBeanName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(beanJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamBeanName + ".java");
+
+//
+// "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+// ${" + IParameter.SEAM_LOCAL_INTERFACE_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource localInterfaceJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(localInterfaceJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+
+//
+// "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+// ${" + IParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamPageName + ".xhtml");
+ }
+
+ @Override
+ void assertNewEntityFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(earProject);
+ SeamProjectsSet seamPrjSet = new SeamProjectsSet(earProject);
+
+ String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
+ String entityBeanPackagePath = getPackagePath(getEntityBeanPackageName(seamFacetPrefs));
+
+ IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
+ IContainer seamProjectSrcModelFolder = seamPrjSet.getModelFolder();
+ IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
+
+ String seamPageName = data.getValue(IParameter.SEAM_PAGE_NAME);
+ String seamMasterPageName = data.getValue(IParameter.SEAM_MASTER_PAGE_NAME);
+ String seamEntityClassName = data.getValue(IParameter.SEAM_ENTITY_CLASS_NAME);
+
+//
+// "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+// ${" + IParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamPageName + ".xhtml");
+
+//
+// "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+// ${" + IParameter.SEAM_MASTER_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+ IResource seamMasterPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamMasterPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamMasterPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamMasterPageName + ".xhtml");
+
+//
+// "${" + IParameter.SEAM_PROJECT_SRC_MODEL + "}/
+// ${" + ISeamFacetDataModelProperties.ENTITY_BEAN_PACKAGE_PATH + "}/
+// ${" + IParameter.SEAM_ENTITY_CLASS_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource entityClassJava = seamProjectSrcModelFolder.findMember(
+ entityBeanPackagePath + "/" + seamEntityClassName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(entityClassJava,
+ seamProjectSrcModelFolder.toString() + "/" +
+ entityBeanPackagePath + "/" + seamEntityClassName + ".java");
+
+//
+// "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+// ${" + IParameter.SEAM_ENTITY_CLASS_NAME +"}Home.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource entityHomeJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
+ assertResourceIsCreatedAndHasNoProblems(entityHomeJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
+
+//
+// "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+// ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+// ${" + IParameter.SEAM_ENTITY_CLASS_NAME +"}List.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ IResource entityListJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
+ assertResourceIsCreatedAndHasNoProblems(entityListJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
+ }
+
+ @Override
+ void assertNewFormFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ assertNewActionFilesAreCreatedSuccessfully(data);
+ }
+
+ @Override
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_1_2;
+ }
+}
Property changes on: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12EARNewOperationTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java
===================================================================
--- branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java (rev 0)
+++ branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
@@ -0,0 +1,253 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.seam.ui.test.wizard;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.jboss.tools.seam.core.ISeamProject;
+import org.jboss.tools.seam.core.SeamCorePlugin;
+import org.jboss.tools.seam.core.SeamProjectsSet;
+import org.jboss.tools.seam.core.project.facet.SeamRuntime;
+import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
+import org.jboss.tools.seam.core.project.facet.SeamVersion;
+import org.jboss.tools.seam.ui.wizard.IParameter;
+import org.jboss.tools.test.util.JUnitUtils;
+import org.jboss.tools.test.util.ProjectImportTestSetup;
+import org.jboss.tools.test.util.xpl.EditorTestHelper;
+
+public class Seam12WARNewOperationTest extends AbstractSeamNewOperationTest {
+ private static final String SEAM_WAR_PROJECTNAME = "seam_war";
+ private static final String SEAM_WAR_TEST_PROJECTNAME = "seam_war-test";
+ protected IProject warProject = null;
+ private IProject testProject = null;
+ private ISeamProject seamWarProject = null;
+ private ISeamProject seamTestProject = null;
+
+
+ public Seam12WARNewOperationTest() {
+ super();
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ File folder = getSeamHomeFolder(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM HOME folder for: " + getSeamRTName(), folder);
+
+ SeamRuntimeManager.getInstance().addRuntime(getSeamRTName(), folder.getAbsolutePath(), getSeamRTVersion(getSeamRTName()), true);
+ SeamRuntime sr = SeamRuntimeManager.getInstance().findRuntimeByName(getSeamRTName());
+ assertNotNull("An error occured while getting the SEAM RUN-TIME for: " + getSeamRTName(), sr);
+
+ createSeamWarProject(SEAM_WAR_PROJECTNAME);
+
+ try {
+ EditorTestHelper.joinBackgroundActivities();
+ } catch (Exception e) {
+ JUnitUtils.fail(e.getMessage(), e);
+ }
+
+ if(warProject==null) {
+ warProject = ProjectImportTestSetup.loadProject(SEAM_WAR_PROJECTNAME);
+ }
+ if(testProject==null) {
+ testProject = ProjectImportTestSetup.loadProject(SEAM_WAR_TEST_PROJECTNAME);
+ }
+ if(seamWarProject==null) {
+ seamWarProject = loadSeamProject(warProject);
+ }
+ if(seamTestProject==null) {
+ seamTestProject = loadSeamProject(testProject);
+ }
+ }
+
+ protected IProject getProject() {
+ return warProject;
+ }
+
+ @Override
+ void assertProjectsAreCreated() {
+ assertTrue("Test project \"" + SEAM_WAR_PROJECTNAME + "\" is not loaded", (warProject != null));
+ assertTrue("Test project \"" + SEAM_WAR_TEST_PROJECTNAME + "\" is not loaded", (testProject != null));
+ assertTrue("Test Seam project \"" + SEAM_WAR_PROJECTNAME + "\" is not loaded", (seamWarProject != null));
+ assertTrue("Test Seam project \"" + SEAM_WAR_TEST_PROJECTNAME + "\" is not loaded", (seamTestProject != null));
+ }
+
+ @Override
+ void setUpSeamProjects() {
+ setUpSeamProject(warProject);
+ }
+
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_1_2;
+ }
+
+
+ @Override
+ void assertNewActionFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(warProject);
+ SeamProjectsSet seamPrjSet = new SeamProjectsSet(warProject);
+
+ String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
+ String testCasesPackagePath = getPackagePath(getTestCasesPackageName(seamFacetPrefs));
+
+ IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
+ IContainer testSourceFolder = seamPrjSet.getTestsFolder();
+ IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
+
+ String seamPageName = data.getValue(IParameter.SEAM_PAGE_NAME);
+ String seamLocalInterfaceName = data.getValue(IParameter.SEAM_LOCAL_INTERFACE_NAME);
+
+ IResource localInterfaceJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(localInterfaceJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+
+ IResource localInterfaceTestJava = testSourceFolder.findMember(
+ testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.java");
+ assertResourceIsCreatedAndHasNoProblems(localInterfaceTestJava,
+ testSourceFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+
+ IResource localInterfaceTestXml = testSourceFolder.findMember(
+ testCasesPackagePath + "/" + seamLocalInterfaceName + "Test.xml");
+ assertResourceIsCreatedAndHasNoProblems(localInterfaceTestXml,
+ testSourceFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamLocalInterfaceName + ".java");
+
+ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamPageName + ".xhtml");
+
+/*
+ "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+ ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+ ${" + IParameter.SEAM_LOCAL_INTERFACE_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "${" + IParameter.TEST_SOURCE_FOLDER + "}/
+ ${" + ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_PATH + "}/
+ ${"+ IParameter.SEAM_LOCAL_INTERFACE_NAME +"}Test.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "${" + IParameter.TEST_SOURCE_FOLDER + "}/
+ ${" + ISeamFacetDataModelProperties.TEST_CASES_PACKAGE_PATH + "}/
+ ${"+ IParameter.SEAM_LOCAL_INTERFACE_NAME +"}Test.xml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+ ${" + IParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+*/
+ }
+
+ @Override
+ void assertNewConversationFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(warProject);
+ SeamProjectsSet seamPrjSet = new SeamProjectsSet(warProject);
+
+ String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
+
+ IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
+ IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
+
+ String seamPageName = data.getValue(IParameter.SEAM_PAGE_NAME);
+ String seamBeanName = data.getValue(IParameter.SEAM_BEAN_NAME);
+
+ IResource seamBeanJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamBeanName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(seamBeanJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamBeanName + ".java");
+
+ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamPageName + ".xhtml");
+
+/*
+ "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+ ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+ ${" + IParameter.SEAM_BEAN_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+ ${" + IParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+*/
+ }
+
+ @Override
+ void assertNewEntityFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ IEclipsePreferences seamFacetPrefs = SeamCorePlugin.getSeamPreferences(warProject);
+ SeamProjectsSet seamPrjSet = new SeamProjectsSet(warProject);
+
+ String sessionBeanPackagePath = getPackagePath(getSessionBeanPackageName(seamFacetPrefs));
+ String entityBeanPackagePath = getPackagePath(getEntityBeanPackageName(seamFacetPrefs));
+
+ IContainer seamProjectSrcActionFolder = seamPrjSet.getActionFolder();
+ IContainer seamProjectSrcModelFolder = seamPrjSet.getModelFolder();
+ IContainer seamProjectWebContentFolder = seamPrjSet.getViewsFolder();
+
+ String seamPageName = data.getValue(IParameter.SEAM_PAGE_NAME);
+ String seamMasterPageName = data.getValue(IParameter.SEAM_MASTER_PAGE_NAME);
+ String seamEntityClassName = data.getValue(IParameter.SEAM_ENTITY_CLASS_NAME);
+
+ IResource seamPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamPageName + ".xhtml");
+
+ IResource seamMasterPageNameXhtml = seamProjectWebContentFolder.findMember(
+ seamMasterPageName + ".xhtml");
+ assertResourceIsCreatedAndHasNoProblems(seamMasterPageNameXhtml,
+ seamProjectWebContentFolder.toString() + "/" +
+ seamMasterPageName + ".xhtml");
+
+ IResource entityClassJava = seamProjectSrcModelFolder.findMember(
+ entityBeanPackagePath + "/" + seamEntityClassName + ".java");
+ assertResourceIsCreatedAndHasNoProblems(entityClassJava,
+ seamProjectSrcModelFolder.toString() + "/" +
+ entityBeanPackagePath + "/" + seamEntityClassName + ".java");
+
+ IResource entityHomeJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
+ assertResourceIsCreatedAndHasNoProblems(entityHomeJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamEntityClassName + "Home.java");
+
+ IResource entityListJava = seamProjectSrcActionFolder.findMember(
+ sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
+ assertResourceIsCreatedAndHasNoProblems(entityListJava,
+ seamProjectSrcActionFolder.toString() + "/" +
+ sessionBeanPackagePath + "/" + seamEntityClassName + "List.java");
+
+/*
+ "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+ ${" + IParameter.SEAM_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ "${" + IParameter.SEAM_PROJECT_WEBCONTENT_PATH + "}/
+ ${" + IParameter.SEAM_MASTER_PAGE_NAME +"}.xhtml", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ "${" + IParameter.SEAM_PROJECT_SRC_MODEL + "}/
+ ${" + ISeamFacetDataModelProperties.ENTITY_BEAN_PACKAGE_PATH + "}/
+ ${" + IParameter.SEAM_ENTITY_CLASS_NAME +"}.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+ ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+ ${" + IParameter.SEAM_ENTITY_CLASS_NAME +"}Home.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "${" + IParameter.SEAM_PROJECT_SRC_ACTION + "}/
+ ${" + ISeamFacetDataModelProperties.SESSION_BEAN_PACKAGE_PATH + "}/
+ ${" + IParameter.SEAM_ENTITY_CLASS_NAME +"}List.java", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+*/
+ }
+
+ @Override
+ void assertNewFormFilesAreCreatedSuccessfully(AdaptableRegistry data) {
+ assertNewActionFilesAreCreatedSuccessfully(data);
+ }
+}
Property changes on: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam12WARNewOperationTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java
===================================================================
--- branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java (rev 0)
+++ branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.test.wizard;
+
+public class Seam20EARNewOperationTest extends Seam12EARNewOperationTest {
+ @Override
+ void setUpSeamProjects() {
+ setUpSeamProject(earProject);
+ }
+
+ @Override
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_2_0;
+ }
+}
Property changes on: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20EARNewOperationTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java
===================================================================
--- branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java (rev 0)
+++ branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java 2008-05-27 18:48:15 UTC (rev 8379)
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.test.wizard;
+
+public class Seam20WARNewOperationTest extends Seam12WARNewOperationTest {
+ @Override
+ void setUpSeamProjects() {
+ setUpSeamProject(warProject);
+ }
+
+ @Override
+ protected String getSeamRTName() {
+ return AbstractSeamNewOperationTest.SEAM_2_0;
+ }
+}
Property changes on: branches/jbosstools-2.1.x/seam/tests/org.jboss.tools.seam.ui.test/src/org/jboss/tools/seam/ui/test/wizard/Seam20WARNewOperationTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
16 years
JBoss Tools SVN: r8378 - trunk/seam/plugins/org.jboss.tools.seam.ui.pages.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-05-27 12:22:17 -0400 (Tue, 27 May 2008)
New Revision: 8378
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/plugin.xml
Log:
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/plugin.xml
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/plugin.xml 2008-05-27 16:03:13 UTC (rev 8377)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/plugin.xml 2008-05-27 16:22:17 UTC (rev 8378)
@@ -10,6 +10,13 @@
icon="images/xstudio/editors/seam-pages.gif"
name="Seam Pages">
</xmlEditor>
+ <xmlEditor
+ class="org.jboss.tools.jst.web.ui.editors.WebCompoundEditor"
+ contributorClass="org.jboss.tools.common.model.ui.texteditors.MultiPageContributor"
+ entities="FileSeamPage12,FileSeamPage20"
+ icon="images/xstudio/editors/seam-components.gif"
+ name="Seam Page">
+ </xmlEditor>
</extension>
16 years
JBoss Tools SVN: r8377 - trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor.
by jbosstools-commits@lists.jboss.org
Author: dazarov
Date: 2008-05-27 12:03:13 -0400 (Tue, 27 May 2008)
New Revision: 8377
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-1189
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java 2008-05-27 15:45:48 UTC (rev 8376)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java 2008-05-27 16:03:13 UTC (rev 8377)
@@ -373,22 +373,22 @@
.setUserModificationPermission(PaletteSeparator.PERMISSION_NO_MODIFICATION);
entries.add(sep); //$NON-NLS-1$
-// connectionCreationTool = new GEFConnectionCreationToolEntry(
-// FacesConfigEditorMessages.JSFDIAGRAM_CREATE_NEW_CONNECTION,
-// FacesConfigEditorMessages.JSFDIAGRAM_CREATE_NEW_CONNECTION,
-// null, ImageDescriptor.createFromFile(PagesEditor.class,
-// "icons/transition.gif"),//$NON-NLS-1$
-// null//$NON-NLS-1$
-// ) {
-// protected void dragFinished() {
-// XModelTransferBuffer.getInstance().disable();
-// }
-// };
-// connectionCreationTool.setUnloadWhenFinished(switchToSelectionTool);
-// entries.add(connectionCreationTool);
-//
-// entries.add(sep);
+ connectionCreationTool = new GEFConnectionCreationToolEntry(
+ "New Link",
+ "New Link",
+ null, ImageDescriptor.createFromFile(PagesEditor.class,
+ "icons/transition.gif"),//$NON-NLS-1$
+ null//$NON-NLS-1$
+ ) {
+ protected void dragFinished() {
+ XModelTransferBuffer.getInstance().disable();
+ }
+ };
+ connectionCreationTool.setUnloadWhenFinished(switchToSelectionTool);
+ entries.add(connectionCreationTool);
+ entries.add(sep);
+
// CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry(
// FacesConfigEditorMessages.JSFDIAGRAM_VIEW_TEMPLATE,
// FacesConfigEditorMessages.JSFDIAGRAM_VIEW_TEMPLATE,
@@ -399,7 +399,7 @@
// );
// entries.add(combined);
//
-// controlGroup.addAll(entries);
+ controlGroup.addAll(entries);
return controlGroup;
}
public void gotoMarker(IMarker marker) {
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java 2008-05-27 15:45:48 UTC (rev 8376)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java 2008-05-27 16:03:13 UTC (rev 8377)
@@ -92,8 +92,8 @@
// gui.setJSFModel(model);
-// gui.init((IEditorSite)getSite(), (IEditorInput)input);
-// gui.createPartControl(guiControl);
+ gui.init((IEditorSite)getSite(), (IEditorInput)input);
+ gui.createPartControl(guiControl);
control = guiControl.getChildren()[0];
control.setLayoutData(new GridData(GridData.FILL_BOTH));
guiControl.layout();
16 years
JBoss Tools SVN: r8376 - in trunk/jsf/plugins/org.jboss.tools.jsf: src/org/jboss/tools/jsf/model/handlers and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-05-27 11:45:48 -0400 (Tue, 27 May 2008)
New Revision: 8376
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/.classpath
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/handlers/JSFItemRegirectHandler.java
Log:
Modified: trunk/jsf/plugins/org.jboss.tools.jsf/.classpath
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/.classpath 2008-05-27 15:45:13 UTC (rev 8375)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/.classpath 2008-05-27 15:45:48 UTC (rev 8376)
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/"/>
<classpathentry kind="src" path="resources/"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified: trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/handlers/JSFItemRegirectHandler.java
===================================================================
--- trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/handlers/JSFItemRegirectHandler.java 2008-05-27 15:45:13 UTC (rev 8375)
+++ trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/handlers/JSFItemRegirectHandler.java 2008-05-27 15:45:48 UTC (rev 8376)
@@ -12,13 +12,13 @@
import org.jboss.tools.common.meta.action.impl.handlers.*;
import org.jboss.tools.common.model.*;
-import org.jboss.tools.jsf.model.*;
+import org.jboss.tools.jst.web.model.ReferenceObject;
public class JSFItemRegirectHandler extends DefaultRedirectHandler {
protected XModelObject getTrueSource(XModelObject source) {
- if(!(source instanceof ReferenceObjectImpl)) return null;
- ReferenceObjectImpl r = (ReferenceObjectImpl)source;
+ if(!(source instanceof ReferenceObject)) return null;
+ ReferenceObject r = (ReferenceObject)source;
return r.getReference();
}
16 years
JBoss Tools SVN: r8375 - in trunk/seam/plugins/org.jboss.tools.seam.pages.xml: resources/help and 3 other directories.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-05-27 11:45:13 -0400 (Tue, 27 May 2008)
New Revision: 8375
Modified:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/plugin.xml
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/help/keys-seam-pages.properties
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/SeamPagesEntityRecognizer.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesUpdateManager.java
Log:
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-27 15:43:12 UTC (rev 8374)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/plugin.xml 2008-05-27 15:45:13 UTC (rev 8375)
@@ -18,6 +18,8 @@
</extension>
<extension point="org.jboss.tools.common.model.classes">
+ <xclass id="org.jboss.tools.seam.pages.xml.model.FileSeamPageImpl"
+ class="org.jboss.tools.seam.pages.xml.model.FileSeamPageImpl"/>
<xclass id="org.jboss.tools.seam.pages.xml.model.FileSeamPagesImpl"
class="org.jboss.tools.seam.pages.xml.model.FileSeamPagesImpl"/>
<xclass id="org.jboss.tools.seam.pages.xml.model.SeamPagesFileLoader"
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/help/keys-seam-pages.properties
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/help/keys-seam-pages.properties 2008-05-27 15:43:12 UTC (rev 8374)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/help/keys-seam-pages.properties 2008-05-27 15:45:13 UTC (rev 8375)
@@ -0,0 +1,2 @@
+FileSeamPage12.editorTitle=Seam Page Editor
+FileSeamPage20.editorTitle=Seam Page Editor
\ No newline at end of file
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-27 15:43:12 UTC (rev 8374)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/meta/seam-pages.meta 2008-05-27 15:45:13 UTC (rev 8375)
@@ -5,8 +5,8 @@
<VERSION DEPENDS="Model:1.0" MODULE="Struts Editor" VERSION="1.0"/>
<MAPPINGS>
<MAPPING name="FileVersions">
- <PAIR name="SeamPage_1.2" value="FileSeamPages12"/>
- <PAIR name="SeamPage_2.0" value="FileSeamPages20"/>
+ <PAIR name="SeamPage_1.2" value="FileSeamPage12"/>
+ <PAIR name="SeamPage_2.0" value="FileSeamPage20"/>
<PAIR name="SeamPages1.2" value="FileSeamPages12"/>
<PAIR name="SeamPages2.0" value="FileSeamPages20"/>
</MAPPING>
@@ -384,6 +384,21 @@
<XModelAttribute default="xml" name="extension" xmlname="EXTENSION">
<Editor name="Uneditable"/>
</XModelAttribute>
+ <XModelAttribute PROPERTIES="category=advanced"
+ name="no conversation view id" xmlname="no-conversation-view-id">
+ <Constraint loader="Tree">
+ <value name="JSFPageTree"/>
+ <value name="extensions=jsp,html,htm,xhtml,xml"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=advanced" name="login view id" xmlname="login-view-id">
+ <Constraint loader="Tree">
+ <value name="JSFPageTree"/>
+ <value name="extensions=jsp,html,htm,xhtml,xml"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
<XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
<Editor name="Note"/>
</XModelAttribute>
@@ -532,8 +547,9 @@
<XModelAttribute default="xml" name="extension" xmlname="EXTENSION">
<Editor name="Uneditable"/>
</XModelAttribute>
- <XModelAttributeReference attributes="no conversation view id"
- entity="SeamPage12" name="page"/>
+ <XModelAttributeReference
+ attributes="no conversation view id,login view id"
+ entity="FileSeamPages12" name="page2"/>
<XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
<Editor name="Note"/>
</XModelAttribute>
@@ -685,8 +701,16 @@
<XModelAttribute default="page" loader="ElementType" name="element type">
<Editor name="Uneditable"/>
</XModelAttribute>
- <XModelAttribute PROPERTIES="id=true;category=general" name="view id" xmlname="view-id"/>
- <XModelAttribute TRIM="no" name="action" visibility="false" xmlname="action"/>
+ <XModelAttribute PROPERTIES="category=general;id=true" name="view id" xmlname="view-id">
+ <Constraint loader="Tree">
+ <value name="JSFPageTree"/>
+ <value name="extensions=jsp,html,htm,xhtml,xml"/>
+ <value name="linkAction=OpenPage"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=general" TRIM="no"
+ name="action" xmlname="action"/>
<XModelAttribute PROPERTIES="category=advanced" name="switch" xmlname="switch">
<Constraint loader="ListString">
<value/>
@@ -696,7 +720,13 @@
<Editor name="ListString"/>
</XModelAttribute>
<XModelAttribute PROPERTIES="category=advanced"
- name="no conversation view id" xmlname="no-conversation-view-id"/>
+ name="no conversation view id" xmlname="no-conversation-view-id">
+ <Constraint loader="Tree">
+ <value name="JSFPageTree"/>
+ <value name="extensions=jsp,html,htm,xhtml,xml"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
<XModelAttribute PROPERTIES="category=advanced"
default="default(false)" name="conversation required" xmlname="conversation-required">
<Constraint loader="ListString">
@@ -1494,6 +1524,7 @@
displayName="Page..." kind="action" name="AddPage">
<EntityData EntityName="SeamPage12">
<AttributeData AttributeName="view id"/>
+ <AttributeData AttributeName="action" Mandatory="no"/>
</EntityData>
</XActionItem>
</XActionItem>
@@ -1544,6 +1575,7 @@
displayName="Page..." kind="action" name="AddPage">
<EntityData EntityName="SeamPage20">
<AttributeData AttributeName="view id"/>
+ <AttributeData AttributeName="action" Mandatory="no"/>
</EntityData>
</XActionItem>
</XActionItem>
@@ -2227,7 +2259,14 @@
<Editor name="Uneditable"/>
</XModelAttribute>
<XModelAttribute PROPERTIES="id=true" default="target" name="name" visibility="false"/>
- <XModelAttribute PROPERTIES="category=general" name="view id" xmlname="view-id"/>
+ <XModelAttribute PROPERTIES="category=general" name="view id" xmlname="view-id">
+ <Constraint loader="Tree">
+ <value name="JSFPageTree"/>
+ <value name="extensions=jsp,html,htm,xhtml,xml"/>
+ <value name="linkAction=OpenPage"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
<XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
<Editor name="Note"/>
</XModelAttribute>
@@ -2293,7 +2332,14 @@
<Editor name="Uneditable"/>
</XModelAttribute>
<XModelAttribute PROPERTIES="id=true" default="target" name="name" visibility="false"/>
- <XModelAttribute PROPERTIES="category=general" name="view id" xmlname="view-id"/>
+ <XModelAttribute PROPERTIES="category=general" name="view id" xmlname="view-id">
+ <Constraint loader="Tree">
+ <value name="JSFPageTree"/>
+ <value name="extensions=jsp,html,htm,xhtml,xml"/>
+ <value name="linkAction=OpenPage"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
<XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
<Editor name="Note"/>
</XModelAttribute>
@@ -2358,7 +2404,14 @@
<Editor name="Uneditable"/>
</XModelAttribute>
<XModelAttribute PROPERTIES="id=true" default="target" name="name" visibility="false"/>
- <XModelAttribute PROPERTIES="category=general" name="view id" xmlname="view-id"/>
+ <XModelAttribute PROPERTIES="category=general" name="view id" xmlname="view-id">
+ <Constraint loader="Tree">
+ <value name="JSFPageTree"/>
+ <value name="extensions=jsp,html,htm,xhtml,xml"/>
+ <value name="linkAction=OpenPage"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
<XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
<Editor name="Note"/>
</XModelAttribute>
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesEntityRecognizer.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesEntityRecognizer.java 2008-05-27 15:43:12 UTC (rev 8374)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesEntityRecognizer.java 2008-05-27 15:45:13 UTC (rev 8375)
@@ -32,6 +32,7 @@
public String getEntityName(String ext, String body) {
if(body == null) return null;
if(body.indexOf(PUBLIC_ID_12) >= 0) {
+ if(body.indexOf("<page") > 0 && body.indexOf("<pages") < 0) return ENT_FILE_SEAM_PAGE_12;
return ENT_FILE_SEAM_PAGES_12;
}
if(!isPagesSchema(body)) {
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java 2008-05-27 15:43:12 UTC (rev 8374)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java 2008-05-27 15:45:13 UTC (rev 8375)
@@ -300,7 +300,7 @@
for (int i = 0; i < cases.length && i < outputs.length; i++) {
ReferenceObject r = (ReferenceObject)outputs[i];
if(r.getReference() == cases[i]) continue;
- String pp = cases[i].getPathPart();
+ String pp = cases[i].getAttributeValue(ATTR_VIEW_ID);
String id = outputs[i].getAttributeValue(ATTR_ID);
if(!pp.equals(id)) return false;
}
@@ -309,7 +309,7 @@
private XModelObject createOutput(XModelObject item, XModelObject rulecase) {
XModelObject output = item.getModel().createModelObject(ENT_PROCESS_ITEM_OUTPUT, null);
- output.setAttributeValue(ATTR_ID, rulecase.getPathPart());
+ output.setAttributeValue(ATTR_ID, rulecase.getAttributeValue(ATTR_VIEW_ID));
output.setAttributeValue(ATTR_PATH, rulecase.getAttributeValue(ATTR_VIEW_ID));
String name = XModelObjectUtil.createNewChildName("output", item);
output.setAttributeValue(ATTR_NAME, name);
@@ -321,7 +321,7 @@
if(output.isUpToDate()) return;
output.notifyUpdate();
XModelObject rulecase = output.getReference();
- output.setAttributeValue(ATTR_ID, rulecase.getPathPart());
+ output.setAttributeValue(ATTR_ID, rulecase.getAttributeValue(ATTR_VIEW_ID));
String path = rulecase.getAttributeValue(ATTR_VIEW_ID);
output.setAttributeValue(ATTR_PATH, path);
// String title = SeamPagesProcessStructureHelper.createItemOutputPresentation(rulecase);
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesUpdateManager.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesUpdateManager.java 2008-05-27 15:43:12 UTC (rev 8374)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesUpdateManager.java 2008-05-27 15:45:13 UTC (rev 8375)
@@ -6,7 +6,7 @@
public class SeamPagesUpdateManager extends WebProcessUpdateManager {
public static synchronized SeamPagesUpdateManager getInstance(XModel model) {
- SeamPagesUpdateManager instance = (SeamPagesUpdateManager)model.getManager("JSFUpdateManager");
+ SeamPagesUpdateManager instance = (SeamPagesUpdateManager)model.getManager("SeamPagesUpdateManager");
if (instance == null) {
instance = new SeamPagesUpdateManager();
model.addManager("SeamPagesUpdateManager", instance);
16 years
JBoss Tools SVN: r8374 - in trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor: edit/xpl and 2 other directories.
by jbosstools-commits@lists.jboss.org
Author: dazarov
Date: 2008-05-27 11:43:12 -0400 (Tue, 27 May 2008)
New Revision: 8374
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPart.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPolicy.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionDragTracker.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionHandle.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/xpl/
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/xpl/PagesConnectionRouter.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/ConnectionFigure.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/FigureFactory.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/NodeFigure.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFeedbackFigure.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFigure.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/xpl/
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/xpl/FixedConnectionAnchor.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-1189
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPart.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPart.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPart.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.edit;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.draw2d.*;
+import org.eclipse.draw2d.geometry.PointList;
+import org.jboss.tools.common.model.ui.dnd.DnDUtil;
+import org.eclipse.gef.AccessibleEditPart;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartListener;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.editparts.AbstractConnectionEditPart;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.graphics.Image;
+
+import org.jboss.tools.common.meta.action.XAction;
+import org.jboss.tools.common.model.XModelException;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.gef.GEFGraphicalViewer;
+import org.jboss.tools.common.gef.edit.GEFRootEditPart;
+import org.jboss.tools.common.gef.figures.GEFLabel;
+import org.jboss.tools.common.gef.figures.xpl.CustomLocator;
+import org.jboss.tools.seam.ui.pages.editor.PagesEditor;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
+import org.jboss.tools.seam.ui.pages.editor.figures.ConnectionFigure;
+import org.jboss.tools.seam.ui.pages.editor.figures.FigureFactory;
+
+public class LinkEditPart extends AbstractConnectionEditPart implements
+ PropertyChangeListener, EditPartListener {
+ public static final Image icon = ImageDescriptor.createFromFile(
+ PagesEditor.class, "icons/shortcut.gif").createImage();
+
+ AccessibleEditPart acc;
+
+ private boolean shortcut;
+
+ private CustomLocator shortcutLocator;
+
+ private GEFLabel shortcutLabel;
+
+ private CustomLocator pathLocator;
+
+ private GEFLabel pathLabel;
+
+ public void activate() {
+ super.activate();
+ addEditPartListener(this);
+ }
+
+ public void activateFigure() {
+ super.activateFigure();
+ getFigure().addPropertyChangeListener(
+ Connection.PROPERTY_CONNECTION_ROUTER, this);
+ }
+
+ /**
+ * Adds extra EditPolicies as required.
+ */
+ protected void createEditPolicies() {
+ installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,
+ new LinkEndpointEditPolicy());
+ installEditPolicy(EditPolicy.CONNECTION_ROLE, new LinkEditPolicy());
+ }
+
+ protected IFigure createFigure() {
+ if (getLink() == null)
+ return null;
+ ConnectionFigure conn = FigureFactory.createNewBendableWire(this,
+ getLink());
+// PointList list = getLink().getPointList();
+// if (list.size() > 0) {
+// conn.setManual(true);
+// conn.setOldPoints(list.getFirstPoint(), list.getLastPoint());
+// conn.setPoints(list);
+// }
+
+ pathLabel = new GEFLabel(getLink().getName(),
+ FigureFactory.normalColor);
+// pathLabel.setFont(getLink().getJSFModel().getOptions()
+// .getLinkPathFont());
+ pathLabel.setIcon(null);
+ pathLabel.setTextAlignment(Label.LEFT);
+ pathLabel.setLabelAlignment(Label.LEFT);
+
+ pathLocator = new CustomLocator(conn, false);
+ pathLocator.setUDistance(5);
+ pathLocator.setVDistance(-13);
+ if (!getLink().isShortcut())
+ conn.add(pathLabel, pathLocator);
+
+ String text = "";
+// if (getLink().getJSFModel().getOptions().showShortcutPath())
+// text = getLink().getToGroup().getVisiblePath();
+ shortcutLabel = new GEFLabel(text, FigureFactory.normalColor);
+// if (getLink().getJSFModel().getOptions().showShortcutIcon())
+// shortcutLabel.setIcon(icon);
+// shortcutLabel.setFont(getLink().getJSFModel().getOptions()
+// .getLinkPathFont());
+ shortcutLabel.setTextAlignment(Label.LEFT);
+ shortcutLabel.setLabelAlignment(Label.LEFT);
+ shortcutLabel.setIconAlignment(Label.LEFT);
+
+ shortcutLocator = new CustomLocator(conn, false);
+ shortcutLocator.setUDistance(18);
+ shortcutLocator.setVDistance(-6);
+ if (getLink().isShortcut())
+ conn.add(shortcutLabel, shortcutLocator);
+
+ return conn;
+ }
+
+ public Link getLinkModel() {
+ return (Link) getModel();
+ }
+
+ public void save() {
+ PointList list = ((ConnectionFigure) getFigure()).getPoints();
+ //getLink().savePointList(list);
+ }
+
+ public void clear() {
+ //getLink().clearPointList();
+ }
+
+ public void deactivate() {
+ removeEditPartListener(this);
+ //getLink().removePropertyChangeListener(this);
+ super.deactivate();
+ }
+
+ public void deactivateFigure() {
+ getFigure().removePropertyChangeListener(
+ Connection.PROPERTY_CONNECTION_ROUTER, this);
+ super.deactivateFigure();
+ }
+
+ public AccessibleEditPart getAccessibleEditPart() {
+ if (acc == null)
+ acc = new AccessibleGraphicalEditPart() {
+ public void getName(AccessibleEvent e) {
+ e.result = "Link";
+ }
+ };
+ return acc;
+ }
+
+ protected Link getLink() {
+ return (Link) getModel();
+ }
+
+ protected ConnectionFigure getLinkFigure() {
+ return (ConnectionFigure) getFigure();
+ }
+
+ public void propertyChange(PropertyChangeEvent event) {
+ String property = event.getPropertyName();
+ if ("value".equals(property)) //$NON-NLS-1$
+ refreshVisuals();
+ }
+
+ /**
+ * Refreshes the visual aspects of this, based upon the model (Wire). It
+ * changes the wire color depending on the state of Wire.
+ *
+ */
+ protected void refreshVisuals() {
+ }
+
+ public void setModel(Object model) {
+ super.setModel(model);
+ //((ILink) model).addLinkListener(this);
+ shortcut = getLink().isShortcut();
+ }
+
+ public boolean isLinkListenerEnable() {
+ return true;
+ }
+
+ public void linkChange(Link source) {
+ pathLabel.setText(getLink().getName());
+// if (getLinkModel().getJSFModel().getOptions().showShortcutPath())
+// shortcutLabel.setText(getLink().getToGroup().getVisiblePath());
+// else
+// shortcutLabel.setText("");
+// if (getLinkModel().getJSFModel().getOptions().showShortcutIcon())
+// shortcutLabel.setIcon(icon);
+// else
+// shortcutLabel.setIcon(null);
+
+ getLinkFigure().refreshFont();
+ if (shortcut != getLink().isShortcut()) {
+ shortcut = getLink().isShortcut();
+ if (shortcut) {
+ getLinkFigure().add(shortcutLabel, shortcutLocator);
+ getLinkFigure().remove(pathLabel);
+ } else {
+ getLinkFigure().remove(shortcutLabel);
+ getLinkFigure().add(pathLabel, pathLocator);
+ }
+ refresh();
+ }
+
+// if (getLinkFigure().isManual()
+// && getLink().getPathFromModel().equals("")) {
+// getLinkFigure().setManual(false);
+// refresh();
+// } else if (!getLinkFigure().isManual()
+// && !getLink().getPathFromModel().equals("")) {
+// getLinkFigure().setManual(true);
+// refresh();
+// }
+
+ }
+
+ public void childAdded(EditPart child, int index) {
+ }
+
+ public void partActivated(EditPart editpart) {
+ }
+
+ public void partDeactivated(EditPart editpart) {
+ }
+
+ public void removingChild(EditPart child, int index) {
+ }
+
+ public void selectedStateChanged(EditPart editpart) {
+ if (this.getSelected() == EditPart.SELECTED_PRIMARY) {
+ ((GEFRootEditPart) getParent()).setToFront(this);
+
+ }
+ }
+
+}
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPolicy.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPolicy.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEditPolicy.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.edit;
+
+import org.eclipse.gef.commands.Command;
+
+import org.eclipse.gef.requests.GroupRequest;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
+
+
+
+public class LinkEditPolicy
+ extends org.eclipse.gef.editpolicies.ConnectionEditPolicy {
+
+ protected Command getDeleteCommand(GroupRequest request) {
+// ConnectionCommand c = new ConnectionCommand();
+// c.setLink((Link)getHost().getModel());
+// return c;
+ return null;
+ }
+
+}
\ No newline at end of file
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.edit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.ConnectionLocator;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.gef.ConnectionEditPart;
+import org.eclipse.gef.DragTracker;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.handles.AbstractHandle;
+import org.eclipse.gef.handles.ConnectionHandle;
+import org.eclipse.gef.tools.ConnectionEndpointTracker;
+import org.jboss.tools.seam.ui.pages.editor.figures.FigureFactory;
+
+
+public class LinkEndpointEditPolicy
+ extends org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy {
+ private List JSFhandles = null;
+
+ private void addJSFHandles() {
+ removeJSFHandles();
+ JSFhandles = createJSFHandles();
+ IFigure layer = getLayer(LayerConstants.HANDLE_LAYER);
+ for (int i = 0; i < JSFhandles.size(); i++)
+ layer.add((IFigure) JSFhandles.get(i));
+
+ }
+
+ private void removeJSFHandles() {
+ if (JSFhandles == null)
+ return;
+ IFigure layer = getLayer(LayerConstants.HANDLE_LAYER);
+ for (int i = 0; i < JSFhandles.size(); i++)
+ layer.remove((IFigure) JSFhandles.get(i));
+ JSFhandles = null;
+ }
+
+ protected void addSelectionHandles() {
+
+ super.addSelectionHandles();
+ addJSFHandles();
+
+ getConnectionFigure().setForegroundColor(FigureFactory.selectedColor);
+ }
+
+ protected PolylineConnection getConnectionFigure() {
+ return (PolylineConnection) ((GraphicalEditPart) getHost()).getFigure();
+ }
+
+ protected void removeSelectionHandles() {
+ super.removeSelectionHandles();
+ removeJSFHandles();
+ getConnectionFigure().setForegroundColor(FigureFactory.normalColor);
+ }
+
+ protected List createSelectionHandles() {
+ List<ConnectionHandle> list = new ArrayList<ConnectionHandle>();
+ list.add(new LinkEndHandle((ConnectionEditPart) getHost()));
+ list.add(new LinkStartHandle((ConnectionEditPart) getHost()));
+ return list;
+ }
+
+ protected List createJSFHandles() {
+ List<AbstractHandle> list = new ArrayList<AbstractHandle>();
+ PolylineConnection conn = getConnectionFigure();
+ boolean flag = true;
+ for (int i = 0; i < conn.getPoints().size() - 3; i++) {
+ if (flag)
+ flag = false;
+ else
+ flag = true;
+ list.add(new PagesConnectionHandle((ConnectionEditPart) getHost(),
+ flag, i + 1));
+ }
+
+ return list;
+ }
+
+ class LinkEndHandle extends ConnectionHandle {
+
+ public LinkEndHandle(ConnectionEditPart owner) {
+ setOwner(owner);
+ setLocator(new ConnectionLocator(getConnection(),
+ ConnectionLocator.TARGET));
+ }
+
+ public LinkEndHandle(ConnectionEditPart owner, boolean fixed) {
+ super(fixed);
+ setOwner(owner);
+ setLocator(new ConnectionLocator(getConnection(),
+ ConnectionLocator.TARGET));
+ }
+
+ public LinkEndHandle() {
+ }
+
+ protected DragTracker createDragTracker() {
+ if (isFixed())
+ return null;
+ ConnectionEndpointTracker tracker;
+ tracker = new LinkEndpointTracker((ConnectionEditPart) getOwner());
+ tracker.setCommandName(RequestConstants.REQ_RECONNECT_TARGET);
+ tracker.setDefaultCursor(getCursor());
+ return tracker;
+ }
+ }
+
+ class LinkStartHandle extends ConnectionHandle {
+
+ public LinkStartHandle(ConnectionEditPart owner) {
+ setOwner(owner);
+ setLocator(new ConnectionLocator(getConnection(),
+ ConnectionLocator.SOURCE));
+ }
+
+ public LinkStartHandle(ConnectionEditPart owner, boolean fixed) {
+ super(fixed);
+ setOwner(owner);
+ setLocator(new ConnectionLocator(getConnection(),
+ ConnectionLocator.SOURCE));
+ }
+
+ public LinkStartHandle() {
+ }
+
+ protected DragTracker createDragTracker() {
+ if (isFixed())
+ return null;
+ ConnectionEndpointTracker tracker;
+ tracker = new LinkEndpointTracker((ConnectionEditPart) getOwner());
+ tracker.setCommandName(RequestConstants.REQ_RECONNECT_SOURCE);
+ tracker.setDefaultCursor(getCursor());
+ return tracker;
+ }
+ }
+
+ class LinkEndpointTracker extends ConnectionEndpointTracker {
+ public LinkEndpointTracker(ConnectionEditPart cpart) {
+ super(cpart);
+ }
+
+ public void mouseDown(MouseEvent me, EditPartViewer epv) {
+ super.mouseDown(me, epv);
+ removeJSFHandles();
+ //DndHelper.drag(((ILink) getHost().getModel()).getSource());
+ }
+
+ public void mouseUp(MouseEvent me, EditPartViewer epv) {
+ super.mouseUp(me, epv);
+ if (getHost().getSelected() != EditPart.SELECTED_NONE)
+ addJSFHandles();
+ }
+
+ protected boolean handleNativeDragFinished(DragSourceEvent event) {
+ //DndHelper.dragEnd();
+ return false;
+ }
+ }
+
+}
\ No newline at end of file
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.edit;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.*;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.jboss.tools.common.model.ui.dnd.DnDUtil;
+import org.eclipse.gef.*;
+import org.eclipse.gef.requests.DropRequest;
+import org.eclipse.swt.accessibility.AccessibleControlEvent;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+
+import org.jboss.tools.common.meta.action.XAction;
+import org.jboss.tools.common.model.XModelException;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Page;
+import org.jboss.tools.seam.ui.pages.editor.figures.PageFigure;
+
+public class PageEditPart extends PagesEditPart implements PropertyChangeListener, EditPartListener {
+ private PageFigure fig = null;
+
+ private boolean single = true;
+
+ public boolean isSingle() {
+ return single;
+ }
+
+ public void doControlUp() {
+ }
+
+ public void doControlDown() {
+ }
+
+ public void doMouseHover(boolean cf) {
+ }
+
+ public void childAdded(EditPart child, int index) {
+ }
+
+ public void partActivated(EditPart editpart) {
+ }
+
+ public void partDeactivated(EditPart editpart) {
+ }
+
+ public void removingChild(EditPart child, int index) {
+ }
+
+ public void selectedStateChanged(EditPart editpart) {
+ if (this.getSelected() == EditPart.SELECTED_PRIMARY) {
+ ((PagesDiagramEditPart) PageEditPart.this.getParent())
+ .setToFront(this);
+
+ }
+ }
+
+ public boolean isGroupListenerEnable() {
+ return true;
+ }
+
+
+
+ private void refreshTargetLink(Link link) {
+ if (link == null)
+ return;
+ PageEditPart gep = (PageEditPart) getViewer().getEditPartRegistry()
+ .get(link.getToElement());
+ if (gep == null)
+ return;
+ gep.refreshTargetConnections();
+ }
+
+
+ protected AccessibleEditPart createAccessible() {
+ return new AccessibleGraphicalEditPart() {
+
+ public void getName(AccessibleEvent e) {
+ e.result = "EditPart";
+ }
+
+ public void getValue(AccessibleControlEvent e) {
+ }
+
+ };
+ }
+
+ protected List getModelTargetConnections() {
+ return getPageModel().getInputLinks();
+ }
+
+ protected List getModelSourceConnections() {
+ return getPageModel().getOutputLinks();
+ }
+
+ protected void createEditPolicies() {
+ super.createEditPolicies();
+ installEditPolicy(EditPolicy.NODE_ROLE, null);
+ installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null);
+ //installEditPolicy(EditPolicy.COMPONENT_ROLE, new PageEditPolicy());
+ //installEditPolicy(EditPolicy.LAYOUT_ROLE, new JSFFlowEditPolicy());
+ //installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,
+ // new PageEditPolicy());
+ }
+
+ /**
+ * Returns a newly created Figure to represent this.
+ *
+ * @return Figure of this.
+ */
+
+ protected IFigure createFigure() {
+ fig = new PageFigure(getPageModel());
+ ((PageFigure) fig).setGroupEditPart(this);
+ return fig;
+ }
+
+ public PageFigure getGroupFigure() {
+ return (PageFigure) getFigure();
+ }
+
+ /**
+ * Returns the model of this as a LED.
+ *
+ * @return Model of this as an LED.
+ */
+ public Page getPageModel() {
+ return (Page) getModel();
+ }
+
+ Dimension size;
+
+
+
+ protected void refreshVisuals() {
+ Point loc = getPageModel().getLocation();
+ loc.x -= loc.x % 8;
+ loc.y -= loc.y % 8;
+
+ Rectangle r = new Rectangle(loc, size);
+
+ ((GraphicalEditPart) getParent()).setLayoutConstraint(this,
+ getFigure(), r);
+ }
+
+ public ConnectionAnchor getTargetConnectionAnchor(
+ ConnectionEditPart connEditPart) {
+ ConnectionAnchor anc = getNodeFigure().getConnectionAnchor("1_IN");
+ return anc;
+ }
+
+ public ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ Point pt = new Point(((DropRequest) request).getLocation());
+ return getNodeFigure().getTargetConnectionAnchorAt(pt);
+ }
+
+ public ConnectionAnchor getSourceConnectionAnchor(
+ ConnectionEditPart connEditPart) {
+ if (single) {
+ Link link = (Link) connEditPart.getModel();
+ int index = getPageModel().getOutputLinks().indexOf(link);
+ return getNodeFigure().getConnectionAnchor((index + 1) + "_OUT");
+ } else
+ return super.getSourceConnectionAnchor(connEditPart);
+ }
+
+ public ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ if (single) {
+ Point pt = new Point(((DropRequest) request).getLocation());
+ return getNodeFigure().getSourceConnectionAnchorAt(pt);
+ } else
+ return super.getSourceConnectionAnchor(request);
+ }
+
+ protected List getModelChildren() {
+ return getPageModel().getChildren();
+ }
+
+ protected void refreshChildren() {
+ super.refreshChildren();
+ for (int i = 0; i < getChildren().size(); i++) {
+ ((PageEditPart) getChildren().get(i)).refresh();
+
+ }
+ }
+
+}
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionDragTracker.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionDragTracker.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionDragTracker.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.edit;
+
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.gef.ConnectionEditPart;
+import org.eclipse.gef.tools.ConnectionEndpointTracker;
+import org.jboss.tools.seam.ui.pages.editor.figures.ConnectionFigure;
+
+
+public class PagesConnectionDragTracker extends ConnectionEndpointTracker {
+ private boolean vertical;
+ private PointList list;
+ private int index1, index2;
+ private Point point1, point2;
+ private boolean first = true;
+
+ public PagesConnectionDragTracker(ConnectionEditPart cep, boolean vertical,
+ int id) {
+ super(cep);
+ this.vertical = vertical;
+ list = getConnection().getPoints();
+ index1 = id;
+ index2 = id + 1;
+ point1 = list.getPoint(index1);
+ point2 = list.getPoint(index2);
+ }
+
+ public void commitDrag() {
+ }
+
+ protected boolean handleDragInProgress() {
+ if (first) {
+ list = getConnection().getPoints();
+ point1 = list.getPoint(index1);
+ point2 = list.getPoint(index2);
+
+ first = false;
+ }
+ Dimension delta = getDragMoveDelta();
+ Point p1, p2;
+ if (vertical) {
+ p1 = new Point(point1.x, point1.y + delta.height);
+ p1.y -= p1.y % 8;
+ p2 = new Point(point2.x, point2.y + delta.height);
+ p2.y -= p2.y % 8;
+ } else {
+ p1 = new Point(point1.x + delta.width, point1.y);
+ p1.x -= p1.x % 8;
+ p2 = new Point(point2.x + delta.width, point2.y);
+ p2.x -= p2.x % 8;
+ if (index1 == 1 && p1.x < list.getPoint(0).x + 5) {
+ p1.x = list.getPoint(0).x + 5;
+ p2.x = list.getPoint(0).x + 5;
+ }
+ if (index2 == list.size() - 2
+ && p1.x > list.getPoint(list.size() - 1).x - 5) {
+ p1.x = list.getPoint(list.size() - 1).x - 5;
+ p2.x = list.getPoint(list.size() - 1).x - 5;
+ }
+
+ }
+ list.removePoint(index1);
+ list.removePoint(index1);
+ list.insertPoint(p1, index1);
+ list.insertPoint(p2, index2);
+
+ getConnection().setPoints(list);
+ ((ConnectionFigure) getConnection()).setManual(true);
+
+ return true;
+ }
+
+ protected boolean handleButtonUp(int button) {
+ if (stateTransition(STATE_DRAG_IN_PROGRESS, STATE_TERMINAL)) {
+ first = true;
+
+ ((LinkEditPart) getConnectionEditPart()).save();
+ }
+ return true;
+ }
+
+ protected Point getLocation() {
+ Point p = new Point(getCurrentInput().getMouseLocation());
+ if (getFlag(1)) {
+ p.x -= p.x % 8;
+ p.y -= p.y % 8;
+ }
+ return p;
+ }
+
+ protected Point getStartLocation() {
+ Point p = super.getStartLocation().getCopy();
+ if (getFlag(1)) {
+ p.x -= p.x % 8;
+ p.y -= p.y % 8;
+ }
+ return p;
+ }
+
+}
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionHandle.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionHandle.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesConnectionHandle.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.edit;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.ConnectionLocator;
+import org.eclipse.draw2d.Cursors;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.ConnectionEditPart;
+import org.eclipse.gef.DragTracker;
+import org.eclipse.gef.handles.SquareHandle;
+import org.eclipse.gef.tools.ConnectionEndpointTracker;
+
+/**
+ * A handle used on a {@link Connection}.
+ */
+public class PagesConnectionHandle extends SquareHandle implements PropertyChangeListener {
+ private boolean vertical = false;
+ private int index;
+
+ public PagesConnectionHandle(ConnectionEditPart owner, boolean vertical,
+ int index) {
+ this.vertical = vertical;
+ this.index = index;
+ if (vertical)
+ setCursor(Cursors.SIZEN);
+ else
+ setCursor(Cursors.SIZEW);
+
+ setOwner(owner);
+ setLocator(new JSFMidpointLocator(getConnection(), index));
+ }
+
+ protected DragTracker createDragTracker() {
+ ConnectionEndpointTracker tracker;
+ tracker = new PagesConnectionDragTracker((ConnectionEditPart) getOwner(),
+ vertical, index);
+ return tracker;
+ }
+
+ /**
+ * Adds this as a {@link org.eclipse.draw2d.FigureListener} to the owner's
+ * {@link org.eclipse.draw2d.Figure}.
+ */
+ public void addNotify() {
+ super.addNotify();
+ getConnection().addPropertyChangeListener(Connection.PROPERTY_POINTS,
+ this);
+ }
+
+ /**
+ * Returns the Connection this handle is on.
+ */
+ public Connection getConnection() {
+ return (Connection) getOwnerFigure();
+ }
+
+ protected boolean isVertical() {
+ return vertical;
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getPropertyName().equals(Connection.PROPERTY_POINTS))
+ revalidate();
+ }
+
+ public void removeNotify() {
+ getConnection().removePropertyChangeListener(
+ Connection.PROPERTY_POINTS, this);
+ super.removeNotify();
+ }
+
+ class JSFMidpointLocator extends ConnectionLocator {
+ private int index;
+
+ public JSFMidpointLocator(Connection c, int i) {
+ super(c);
+ index = i;
+ }
+
+ protected int getIndex() {
+ return index;
+ }
+
+ protected Point getReferencePoint() {
+ Connection conn = super.getConnection();
+ if (getIndex() + 1 > conn.getPoints().size() - 2) {
+ PagesConnectionHandle.this.setVisible(false);
+ return new Point(0, 0);
+ }
+ Point p = Point.SINGLETON;
+ Point p1 = conn.getPoints().getPoint(getIndex());
+ Point p2 = conn.getPoints().getPoint(getIndex() + 1);
+ conn.translateToAbsolute(p1);
+ conn.translateToAbsolute(p2);
+ p.x = (p2.x - p1.x) / 2 + p1.x;
+ p.y = (p2.y - p1.y) / 2 + p1.y;
+ return p;
+ }
+ }
+
+}
\ No newline at end of file
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/xpl/PagesConnectionRouter.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/xpl/PagesConnectionRouter.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/xpl/PagesConnectionRouter.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,482 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * IBM Corporation - initial API and implementation
+ * Exadel, Inc.
+ * Red Hat, Inc.
+ *******************************************************************************/
+package org.jboss.tools.seam.ui.pages.editor.edit.xpl;
+
+import java.util.*;
+
+import org.eclipse.draw2d.AbstractRouter;
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.IFigure;
+//import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.geometry.*;
+import org.jboss.tools.seam.ui.pages.editor.figures.ConnectionFigure;
+import org.jboss.tools.seam.ui.pages.editor.figures.PageFigure;
+
+
+final public class PagesConnectionRouter
+ extends AbstractRouter
+{
+
+private Set<Integer> rowsUsed = new HashSet<Integer>();
+private Set<Integer> colsUsed = new HashSet<Integer>();
+
+private final static int STEP = 8;
+
+private final static int STATUS_NOTHING = 0;
+private final static int STATUS_HOLD = 2;
+private final static int STATUS_SHIFT = 3;
+
+private Map<Connection,ReservedInfo> reservedInfo = new HashMap<Connection,ReservedInfo>();
+
+private class ReservedInfo {
+ public List<Integer> reservedRows = new ArrayList<Integer>(2);
+ public List<Integer> reservedCols = new ArrayList<Integer>(2);
+}
+
+private static Ray UP = new Ray(0,-1),
+ DOWN = new Ray(0,1),
+ LEFT = new Ray(-1,0),
+ RIGHT = new Ray(1,0);
+
+
+public void invalidate(Connection connection) {
+ removeReservedLines(connection);
+}
+
+private int getColumnNear(Connection conn, int r, int n, int x, boolean flag){
+ int index=0, size=0;
+ int min = Math.min(n,x),
+ max = Math.max(n,x);
+ if (min > r){
+ max = min;
+ min = r - (min-r);
+ }
+ if (max < r){
+ min = max;
+ max = r + (r-max);
+ }
+ if(flag){
+ if(conn.getSourceAnchor().getOwner() != null){
+ IFigure fig = conn.getSourceAnchor().getOwner();
+ PageFigure group=null;
+ if(fig instanceof PageFigure)group = (PageFigure)fig;
+ else if(fig instanceof PageFigure)group = (PageFigure)fig.getParent();
+ if(group != null){
+ index = group.page.getOutputLinks().indexOf(((ConnectionFigure)conn).getLinkModel());
+ size = group.page.getOutputLinks().size();
+ }else flag = false;
+ }else flag = false;
+ }
+ if(flag){
+ int value = min+100+(size-index)*STEP-size/2*STEP;
+ if(value <= min) return min+STEP;
+ if(value >= max) return max-STEP;
+ return value;
+ }
+ int proximity = 0;
+ int direction = -1;
+ if (r%2 == 1)
+ r--;
+ Integer i;
+ while (proximity < r){
+ i = Integer.valueOf(r + proximity*direction);
+ if (!colsUsed.contains(i)){
+ colsUsed.add(i);
+ reserveColumn(conn, i);
+ return i.intValue();
+ }
+ int j = i.intValue();
+ if (j <= min)
+ return j+STEP;
+ if (j >= max)
+ return j-STEP;
+ if (direction == 1)
+ direction = -1;
+ else {
+ direction = 1;
+ proximity += STEP;
+ }
+ }
+ return r;
+}
+
+protected Ray getDirection(Rectangle r, Point p){
+ int i, distance = Math.abs(r.x - p.x);
+ Ray direction;
+
+ direction = LEFT;
+
+ i = Math.abs(r.y - p.y);
+ if (i <= distance){
+ distance = i;
+ direction = UP;
+ }
+
+ i = Math.abs(r.bottom()-p.y);
+ if (i <= distance){
+ distance = i;
+ direction = DOWN;
+ }
+
+ i = Math.abs(r.right()-p.x);
+ if (i < distance){
+ distance = i;
+ direction = RIGHT;
+ }
+
+ return direction;
+}
+
+protected Ray getEndDirection(Connection conn){
+ return LEFT;
+}
+
+protected int getRowNear(Connection connection, int r, int n, int x){
+ int min = Math.min(n,x),
+ max = Math.max(n,x);
+ if (min > r){
+ max = min;
+ min = r - (min-r);
+ }
+ if (max < r){
+ min = max;
+ max = r + (r-max);
+ }
+
+ int proximity = 0;
+ int direction = -1;
+ if (r%2 == 1)
+ r--;
+ Integer i;
+ while (proximity < r){
+ i = Integer.valueOf(r + proximity*direction);
+ if (!rowsUsed.contains(i)){
+ rowsUsed.add(i);
+ reserveRow(connection, i);
+ return i.intValue();
+ }
+ int j = i.intValue();
+ if (j <= min)
+ return j+STEP;
+ if (j >= max)
+ return j-STEP;
+ if (direction == 1)
+ direction = -1;
+ else {
+ direction = 1;
+ proximity += STEP;
+ }
+ }
+ return r;
+}
+protected Ray getStartDirection(Connection conn){
+ return RIGHT;
+}
+
+protected void processPositions(Ray start, Ray end, List positions,
+ boolean horizontal, Connection conn) {
+ removeReservedLines(conn);
+
+ int pos[] = new int[positions.size()+2];
+ if (horizontal)
+ pos[0] = start.x;
+ else
+ pos[0] = start.y;
+ int i;
+ for (i=0; i< positions.size(); i++){
+ pos[i+1] = ((Integer)positions.get(i)).intValue();
+ }
+ if (horizontal == (positions.size()%2 == 1))
+ pos[++i] = end.x;
+ else
+ pos[++i] = end.y;
+
+ PointList points = new PointList();
+ points.addPoint(new Point(start.x, start.y));
+ Point p;
+ int current, prev, min, max;
+ boolean adjust;
+ for (i=2; i < pos.length - 1; i++){
+ horizontal = !horizontal;
+ prev = pos[i-1];
+ current = pos[i];
+
+ adjust = (i != pos.length-2);
+ if (horizontal){
+ if (adjust){
+ min = pos[i-2];
+ max = pos[i+2];
+ pos[i] = current = getRowNear(conn,current,min,max);
+ current -= current%STEP;
+ pos[i] -= pos[i]%STEP;
+ }
+ p = new Point(prev,current);
+ }
+ else{
+ if (adjust){
+ min = pos[i-2];
+ max = pos[i+2];
+ boolean flag;
+ if(i == 2 && pos.length == 5){
+ flag = true;
+ }else flag = false;
+ pos[i] = current = getColumnNear(conn, current,min,max,flag);
+ current -= current%STEP;
+ pos[i] -= pos[i]%STEP;
+ }
+ p = new Point(current,prev);
+ }
+ points.addPoint(p);
+ }
+ points.addPoint(new Point(end.x, end.y));
+ conn.setPoints(points);
+}
+
+/**
+ * Removes the given connection from the map of constraints.
+ *
+ * @param connection The connection to remove.
+ */
+public void remove(Connection connection){
+ removeReservedLines(connection);
+}
+
+protected void removeReservedLines(Connection connection) {
+ ReservedInfo rInfo = (ReservedInfo) reservedInfo.get(connection);
+ if (rInfo == null) return;
+
+ for (int i = 0; i < rInfo.reservedRows.size(); i++){
+ rowsUsed.remove(rInfo.reservedRows.get(i));
+ }
+ for (int i = 0; i < rInfo.reservedCols.size(); i++){
+ colsUsed.remove(rInfo.reservedCols.get(i));
+ }
+ reservedInfo.remove(connection);
+}
+
+protected void reserveColumn(Connection connection, Integer column) {
+ ReservedInfo info = (ReservedInfo) reservedInfo.get(connection);
+ if (info == null) {
+ info = new ReservedInfo();
+ reservedInfo.put(connection, info);
+ }
+ info.reservedCols.add(column);
+}
+
+protected void reserveRow(Connection connection, Integer row) {
+ ReservedInfo info = (ReservedInfo) reservedInfo.get(connection);
+ if (info == null) {
+ info = new ReservedInfo();
+ reservedInfo.put(connection, info);
+ }
+ info.reservedRows.add(row);
+}
+
+/**
+ * Routes the {@link Connection}.
+ *
+ * @param conn The {@link Connection} to route.
+ */
+public void route(Connection conn) {
+ if ((conn.getSourceAnchor() == null) || (conn.getTargetAnchor() == null)){
+ return;
+ }
+ if(((ConnectionFigure)conn).getLinkModel() != null && ((ConnectionFigure)conn).getLinkModel().isShortcut()){
+ Point startPoint = getStartPoint(conn);
+ conn.translateToRelative(startPoint);
+ List<Integer> positions = new ArrayList<Integer>(5);
+ Ray start = new Ray(startPoint);
+ positions.add(Integer.valueOf(start.y));
+
+ Point endPoint = new Point(startPoint.x+18, startPoint.y);
+ Ray end = new Ray(endPoint);
+ processPositions(start, end, positions,true, conn);
+ return;
+ }
+
+// if(((ConnectionFigure)conn).isManual()){
+// if(conn.getPoints().size() < 4){
+// PointList list = ((ConnectionFigure)conn).getLinkModel().getPointList();
+// ((ConnectionFigure)conn).setOldPoints(list.getFirstPoint(), list.getLastPoint());
+// conn.setPoints(list);
+// }
+// if(hold((ConnectionFigure)conn)) return;
+// else{
+// ((ConnectionFigure)conn).setManual(false);
+// ((ConnectionFigure)conn).clear();
+// }
+// }
+ int i;
+ Point startPoint = getStartPoint(conn);
+ conn.translateToRelative(startPoint);
+
+ Point endPoint = getEndPoint(conn);
+ conn.translateToRelative(endPoint);
+
+ Ray start = new Ray(startPoint);
+ Ray end = new Ray(endPoint);
+ Ray average = start.getAveraged(end);
+
+ Ray direction = new Ray(start, end);
+ Ray startNormal = getStartDirection(conn);
+ Ray endNormal = getEndDirection(conn);
+
+ List<Integer> positions = new ArrayList<Integer>(5);
+ boolean horizontal = true;
+ // start horizontal segment
+ positions.add(Integer.valueOf(start.y));
+ horizontal = !horizontal;
+
+ if((start.x > (end.x+20)) && (Math.abs(end.y-start.y) < 100)){
+ i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+ positions.add(Integer.valueOf(i));
+ horizontal = !horizontal;
+
+ if(conn.getSourceAnchor().getOwner() == null){
+ i = average.y;
+ }else{
+ Rectangle rec = conn.getSourceAnchor().getOwner().getBounds();
+
+ i = rec.y+rec.height+8;
+ }
+ i -= i%STEP;
+ positions.add(Integer.valueOf(i));
+ horizontal = !horizontal;
+
+ i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+ i -= i%STEP;
+ positions.add(Integer.valueOf(i));
+ horizontal = !horizontal;
+ }else{
+ // vertical segment
+ if (startNormal.dotProduct(direction) < STEP*2){
+ i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+ i -= i%STEP;
+ positions.add(Integer.valueOf(i));
+ horizontal = !horizontal;
+ }
+
+ // middle vertical or horizontal segment
+ if (horizontal) i = average.y;
+ else i = average.x;
+ i -= i%STEP;
+ positions.add(Integer.valueOf(i));
+ horizontal = !horizontal;
+
+ // vertical segment
+ if (startNormal.dotProduct(direction) < STEP*2){
+ i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+ i -= i%STEP;
+ positions.add(Integer.valueOf(i));
+ horizontal = !horizontal;
+ }
+ }
+ // end horizontal segment
+ positions.add(Integer.valueOf(end.y));
+
+ processPositions(start, end, positions,true, conn);
+ ((ConnectionFigure)conn).setOldPoints(startPoint, endPoint);
+}
+
+private boolean hold(ConnectionFigure conn){
+ Point p1,p2;
+
+ Point startPoint = getStartPoint(conn);
+ conn.translateToRelative(startPoint);
+
+ Point endPoint = getEndPoint(conn);
+ conn.translateToRelative(endPoint);
+
+ int status = check(conn);
+ if(status == STATUS_NOTHING) return true;
+ else if(status == STATUS_SHIFT){
+ shift(conn);
+ conn.setOldPoints(startPoint, endPoint);
+ conn.save();
+ return true;
+ }
+
+ PointList list = conn.getPoints();
+
+ list.removePoint(0);
+ list.insertPoint(startPoint, 0);
+
+ list.removePoint(list.size()-1);
+ list.addPoint(endPoint);
+
+ if(list.size() > 2){
+ p1 = list.getPoint(1);
+
+ p1.y = startPoint.y;
+ if(p1.x <= startPoint.x) return false;
+
+ p2 = list.getPoint(list.size()-2);
+
+ p2.y = endPoint.y;
+ if(p2.x >= endPoint.x) return false;
+
+ list.removePoint(1);
+ list.insertPoint(p1, 1);
+ int index = list.size()-2;
+
+ list.removePoint(index);
+ list.insertPoint(p2, index);
+ }
+ conn.setPoints(list);
+ conn.setOldPoints(startPoint, endPoint);
+ conn.save();
+ return true;
+}
+
+private void shift(ConnectionFigure conn){
+ Point startPoint = getStartPoint(conn);
+ conn.translateToRelative(startPoint);
+
+ Point oldStartPoint = conn.getOldStartPoint();
+
+ Point shiftPoint = new Point(startPoint.x-oldStartPoint.x, startPoint.y-oldStartPoint.y);
+ Point point;
+
+ PointList list = conn.getPoints();
+ if(list.getPoint(0).x == startPoint.x && list.getPoint(0).y == startPoint.y) return;
+
+ for(int i=0;i<list.size();i++){
+ point = list.getPoint(i);
+ point.x += shiftPoint.x;
+ point.y += shiftPoint.y;
+ list.removePoint(i);
+ list.insertPoint(point, i);
+ }
+ conn.setPoints(list);
+}
+
+private int check(ConnectionFigure conn){
+ Point startPoint = getStartPoint(conn);
+ conn.translateToRelative(startPoint);
+
+ Point endPoint = getEndPoint(conn);
+ conn.translateToRelative(endPoint);
+
+ Point oldStartPoint = ((ConnectionFigure)conn).getOldStartPoint();
+
+ Point oldEndPoint = ((ConnectionFigure)conn).getOldEndPoint();
+
+ if(startPoint.x == oldStartPoint.x && startPoint.y == oldStartPoint.y && endPoint.x == oldEndPoint.x && endPoint.y == oldEndPoint.y)
+ return STATUS_NOTHING;
+
+ if((startPoint.x - oldStartPoint.x) == (endPoint.x - oldEndPoint.x) && (startPoint.y - oldStartPoint.y) == (endPoint.y - oldEndPoint.y)){
+ return STATUS_SHIFT;
+ }
+ return STATUS_HOLD;
+}
+}
\ No newline at end of file
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/ConnectionFigure.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/ConnectionFigure.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/ConnectionFigure.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.figures;
+
+import org.eclipse.draw2d.AnchorListener;
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
+import org.jboss.tools.seam.ui.pages.editor.edit.LinkEditPart;
+
+
+public class ConnectionFigure extends PolylineConnection implements Connection, AnchorListener{
+ private boolean manual = false;
+ private LinkEditPart editPart = null;
+ private Link link = null;
+ private int oldStartPointX = 0, oldStartPointY = 0, oldEndPointX = 0,
+ oldEndPointY = 0;
+
+ public ConnectionFigure(LinkEditPart part) {
+ super();
+ editPart = part;
+ link = part.getLinkModel();
+ }
+
+ public Link getLinkModel() {
+ return link;
+ }
+
+ public ConnectionFigure() {
+ super();
+ }
+
+ public void refreshFont() {
+ if (getChildren().size() > 0 && getChildren().get(0) instanceof Label) {
+ Label label = (Label) getChildren().get(0);
+// label.setFont(editPart.getLinkModel().getJSFModel().getOptions()
+// .getLinkPathFont());
+ label.setSize(label.getPreferredSize());
+ }
+ }
+
+ public void setOldPoints(Point start, Point end) {
+ oldStartPointX = start.x;
+ oldStartPointY = start.y;
+ oldEndPointX = end.x;
+ oldEndPointY = end.y;
+ }
+
+ public Point getOldStartPoint() {
+ return new Point(oldStartPointX, oldStartPointY);
+ }
+
+ public Point getOldEndPoint() {
+ return new Point(oldEndPointX, oldEndPointY);
+ }
+
+ public void setManual(boolean flag) {
+ manual = flag;
+ }
+
+ public boolean isManual() {
+ return manual;
+ }
+
+ public void save() {
+ if (editPart != null)
+ editPart.save();
+ }
+
+ public void clear() {
+ if (editPart != null)
+ editPart.clear();
+ }
+
+ PointList points;
+ Point point;
+ Point beg = new Point(0, 0), end = new Point(0, 0);
+ Point corner = new Point(0, 0);
+ boolean horiz;
+
+ protected void outlineShape(Graphics g) {
+ points = getPoints();
+ point = points.getPoint(0);
+ beg.x = point.x;
+ beg.y = point.y;
+
+ if (points.getFirstPoint().y == points.getLastPoint().y) {
+ super.outlineShape(g);
+ return;
+ }
+
+ for (int i = 1; i < points.size(); i++) {
+ point = points.getPoint(i);
+ end.x = point.x;
+ end.y = point.y;
+
+ if (beg.y == end.y)
+ horiz = true;
+ else
+ horiz = false;
+
+ if (i != 1) {
+ if (horiz) {
+ if (end.x > beg.x) {
+ corner.x = beg.x + 1;
+ beg.x += 2;
+ } else {
+ corner.x = beg.x - 1;
+ beg.x -= 2;
+ }
+ } else {
+ if (end.y > beg.y) {
+ corner.y = beg.y + 1;
+ beg.y += 2;
+ } else {
+ corner.y = beg.y - 1;
+ beg.y -= 2;
+ }
+ }
+ }
+ if (corner.x != 0)
+ g.drawLine(corner, corner);
+ corner.x = 0;
+
+ if (i != points.size() - 1) {
+ if (horiz) {
+ if (end.x > beg.x) {
+ corner.x = end.x - 1;
+ end.x -= 2;
+
+ } else {
+ corner.x = end.x + 1;
+ end.x += 2;
+ }
+ } else {
+ if (end.y > beg.y) {
+ corner.y = end.y - 1;
+ end.y -= 2;
+ } else {
+ corner.y = end.y + 1;
+ end.y += 2;
+ }
+ }
+ }
+
+ g.drawLine(beg, end);
+ point = points.getPoint(i);
+ beg.x = point.x;
+ beg.y = point.y;
+ }
+ }
+
+}
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/FigureFactory.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/FigureFactory.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/FigureFactory.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -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.ui.pages.editor.figures;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ManhattanConnectionRouter;
+import org.eclipse.swt.graphics.Color;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
+import org.jboss.tools.seam.ui.pages.editor.edit.LinkEditPart;
+import org.jboss.tools.seam.ui.pages.editor.edit.xpl.PagesConnectionRouter;
+
+public class FigureFactory {
+ public static final Color normalColor = new Color(null, 0xb5, 0xb5, 0xb5);
+ public static final Color selectedColor = new Color(null, 0x44, 0xa9, 0xf3);
+ public static final Color highlightColor = ColorConstants.black;
+
+ public static ConnectionFigure createNewBendableWire(LinkEditPart part,
+ Link link) {
+ ConnectionFigure conn = new ConnectionFigure(part);
+ conn.setForegroundColor(normalColor);
+ return conn;
+ }
+
+ public static ConnectionFigure createNewLink(Link link) {
+
+ ConnectionFigure conn = new ConnectionFigure();
+ conn.setConnectionRouter(new PagesConnectionRouter());
+ conn.setForegroundColor(selectedColor);
+
+ return conn;
+ }
+}
\ No newline at end of file
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/NodeFigure.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/NodeFigure.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/NodeFigure.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.figures;
+
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.jboss.tools.common.gef.figures.xpl.BaseNodeFigure;
+import org.jboss.tools.common.model.ui.ModelUIImages;
+
+public class NodeFigure extends
+ BaseNodeFigure {
+ public static final Color blackColor = new Color(null, 0x00, 0x00, 0x00);
+
+ public static final Color whiteColor = new Color(null, 0xff, 0xff, 0xff);
+
+ public static final Color orangeColor = new Color(null, 0xff, 0xea, 0x82);
+
+ public static final Color yellowColor = new Color(null, 0xff, 0xf6, 0xcb);
+
+ public static final Color brownColor = new Color(null, 0xf0, 0xe8, 0xbf);
+
+ public static final Color lightGrayColor = new Color(null, 0xf1, 0xf1, 0xf1);
+
+ public static final Color darkGrayColor = new Color(null, 0xb3, 0xb3, 0xb3);
+
+ public static final Color lightBlueColor = new Color(null, 0xd4, 0xe6, 0xff);
+
+ public static final Color darkBlueColor = new Color(null, 0x97, 0xc4, 0xff);
+
+ public static final Color pattSelected = new Color(null, 0xc6, 0xda, 0xe8);
+
+ public static final Color pattBorder = new Color(null, 0x3e, 0x75, 0x99);
+
+ public static final Color errorColor = new Color(null, 0xff, 0xb9, 0xb9);
+
+ public static final Color errorSelected = new Color(null, 0xff, 0xa2, 0xa2);
+
+ public static final Color errorBorder = new Color(null, 0xc5, 0x63, 0x62);
+
+ public static final Color selectedColor = new Color(null, 0xf0, 0xe8, 0xbf);
+
+ public static final Color borderColor = new Color(null, 0x86, 0x7d, 0x51);
+
+ public final static Color ghostFillColor = new Color(null, 31, 31, 31);
+
+ public static final Image errorIcon = ModelUIImages
+ .getImage("error_co.gif");
+
+ public static final int LINK_HEIGHT = 16;
+}
\ No newline at end of file
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFeedbackFigure.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFeedbackFigure.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFeedbackFigure.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.figures;
+
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+/**
+ * @author Daniel
+ *
+ */
+public class PageFeedbackFigure extends PageFigure {
+ public PageFeedbackFigure(){
+ super(null);
+ }
+
+ protected void paintFigure(Graphics g) {
+ g.setXORMode(true);
+ g.setForegroundColor(whiteColor);
+ g.setBackgroundColor(ghostFillColor);
+
+ Rectangle r = getBounds().getCopy();
+ g.translate(r.getLocation());
+ int start=0;
+
+ g.fillRectangle(start+1,1,22,19);
+
+ g.fillPolygon(fillPointlist);
+ }
+
+}
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFigure.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFigure.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/PageFigure.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,322 @@
+/*******************************************************************************
+ * 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.ui.pages.editor.figures;
+
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.draw2d.*;
+import org.eclipse.draw2d.geometry.*;
+
+import org.eclipse.gef.handles.HandleBounds;
+
+import org.jboss.tools.common.gef.GEFGraphicalViewer;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Page;
+import org.jboss.tools.seam.ui.pages.editor.edit.PageEditPart;
+import org.jboss.tools.seam.ui.pages.editor.figures.xpl.FixedConnectionAnchor;
+
+public class PageFigure extends NodeFigure implements HandleBounds,
+ FigureListener {
+ private static final Dimension SIZE = new Dimension(56, 100);
+
+ private Image icon = null;
+
+ public Page page;
+
+ private Label label = null;
+
+ PointList fillPointlist, fill2Pointlist, shadowPointlist, shadow2Pointlist;
+
+ String path;
+
+ PageEditPart editPart;
+
+ public void setGroupEditPart(PageEditPart part) {
+ editPart = part;
+ }
+
+ public void setBounds(Rectangle rect) {
+ super.setBounds(rect);
+ resizeFigure();
+ }
+
+ public void setConstraint(IFigure child, Object constraint) {
+ super.setConstraint(child, constraint);
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ if (label != null) {
+ label.setText(path);
+ label.setSize(label.getPreferredSize());
+ }
+ }
+
+ public void refreshFont() {
+ if (label != null) {
+ //label.setFont(group.getJSFModel().getOptions().getViewPathFont());
+ label.setSize(label.getPreferredSize());
+ label.setLocation(new Point(getLocation().x - 5, getLocation().y
+ - (12 + 10)));
+ }
+ }
+
+ public void setIcon(Image i) {
+ //icon = PrintIconHelper.getPrintImage(i);
+ }
+
+ public void addNotify() {
+ if (page == null)
+ return;
+ label = new Label(path);
+ //label.setFont(group.getJSFModel().getOptions().getViewPathFont());
+ getParent().add(label);
+ label.setForegroundColor(ColorConstants.black);
+ label.setOpaque(false);
+ label.setText(path);
+ label.setVisible(true);
+ label.setSize(label.getPreferredSize());
+ label.setLocation(new Point(getLocation().x - 5, getLocation().y
+ - (12 + 10)));
+ //label.addMouseListener(this);
+ }
+
+ public void removeNotify() {
+ if (page == null)
+ return;
+ //label.removeMouseListener(this);
+ getParent().remove(label);
+ }
+
+ public void figureMoved(IFigure source) {
+ if (page != null)
+ label.setLocation(new Point(getLocation().x - 5,
+ getLocation().y - 20));
+ }
+
+ public void init(int number) {
+ FixedConnectionAnchor c;
+ if (number == 0)
+ number = 1;
+ for (int i = 0; i < number; i++) {
+ c = new FixedConnectionAnchor(this);
+ c.offsetV = 32 + LINK_HEIGHT * i;
+ c.leftToRight = false;
+ connectionAnchors.put((i + 1) + "_OUT", c);
+ outputConnectionAnchors.addElement(c);
+ }
+ }
+
+ public void addConnectionAnchor(int number) {
+ FixedConnectionAnchor c;
+ if (number == 1)
+ return;
+ c = new FixedConnectionAnchor(this);
+ c.offsetV = 32 + LINK_HEIGHT * (number - 1);
+ // c.offsetH = -1;
+ c.leftToRight = false;
+ connectionAnchors.put(number + "_OUT", c);
+ outputConnectionAnchors.addElement(c);
+ }
+
+ public void removeConnectionAnchor() {
+ if (outputConnectionAnchors.size() == 1)
+ return;
+ outputConnectionAnchors.remove(outputConnectionAnchors.size() - 1);
+ }
+
+ public void removeAllConnectionAnchor() {
+ outputConnectionAnchors.removeAllElements();
+ }
+
+ public PageFigure(Page group) {
+ this.page = group;
+
+ if (group != null) {
+// setIcon(group.getImage());
+// setPath(group.getVisiblePath());
+ }
+
+ setOpaque(false);
+ setLayoutManager(new XYLayout());
+
+ resizeFigure();
+ addFigureListener(this);
+ //addKeyListener(this);
+ setBorder(new GroupBorder(blackColor));
+
+ if (group != null) {
+ FixedConnectionAnchor c;
+ c = new FixedConnectionAnchor(this);
+ c.offsetV = 8;
+ c.offsetH = -1;
+ connectionAnchors.put("1_IN", c);
+ inputConnectionAnchors.addElement(c);
+
+ }
+ }
+
+ /**
+ * @see org.eclipse.gef.handles.HandleBounds#getHandleBounds()
+ */
+ public Rectangle getHandleBounds() {
+ return getBounds().getCropped(new Insets(0, 0, 0, 0));
+ }
+
+ /**
+ * @see org.eclipse.draw2d.Figure#getPreferredSize(int, int)
+ */
+ public Dimension getPreferredSize(int wHint, int hHint) {
+ return SIZE;
+ }
+
+ int width, height;
+
+ private void resizeFigure() {
+ if (width == getSize().width && height == getSize().height)
+ return;
+
+ int start = 0;
+ width = getSize().width - 1;
+ height = getSize().height - 1;
+
+
+ fillPointlist = new PointList();
+
+ fillPointlist.addPoint(start, 20);
+ fillPointlist.addPoint(start + 23, 20);
+ fillPointlist.addPoint(start + 23, 0);
+ fillPointlist.addPoint(width - 15, 0);
+ fillPointlist.addPoint(width - 1, 14);
+ fillPointlist.addPoint(width - 1, height - 1);
+ fillPointlist.addPoint(start, height - 1);
+
+
+
+ shadowPointlist = new PointList();
+
+ shadowPointlist.addPoint(width - 15, 0);
+ shadowPointlist.addPoint(width - 14, 4);
+ shadowPointlist.addPoint(width - 15, 7);
+ shadowPointlist.addPoint(width - 18, 10);
+ shadowPointlist.addPoint(width - 1, 14);
+
+ shadowPointlist.addPoint(width - 9, 14);
+ shadowPointlist.addPoint(width - 16, 13);
+
+ shadowPointlist.addPoint(width - 21, 11);
+ shadowPointlist.addPoint(width - 18, 8);
+ shadowPointlist.addPoint(width - 16, 4);
+
+ shadow2Pointlist = new PointList();
+
+ shadow2Pointlist.addPoint(width - 15, 0);
+ shadow2Pointlist.addPoint(width - 1, 14);
+ shadow2Pointlist.addPoint(width - 3, 14);
+ shadow2Pointlist.addPoint(width - 15, 2);
+ }
+
+ /**
+ * @see org.eclipse.draw2d.Figure#paintFigure(Graphics)
+ */
+ protected void paintFigure(Graphics g) {
+ Rectangle r = getBounds().getCopy();
+ g.translate(r.getLocation());
+
+ int height = r.height - 1;
+ int start = 0;
+
+
+ g.setBackgroundColor(whiteColor);
+
+ g.fillRectangle(start + 1, 1, 22, 19);
+
+ if (icon != null)
+ g.drawImage(icon, start + 4, 2);
+
+
+ if (page != null /*&& group.isConfirmed()*/) {
+ g.setBackgroundColor(yellowColor);
+ } else {
+ g.setBackgroundColor(lightGrayColor);
+ }
+
+ g.fillPolygon(fillPointlist);
+
+
+ if (page != null /*&& group.isConfirmed()*/) {
+ g.setBackgroundColor(orangeColor);
+ } else {
+ g.setBackgroundColor(lightGrayColor);
+ }
+
+ g.fillPolygon(shadowPointlist);
+ g.fillPolygon(shadow2Pointlist);
+ }
+
+ class GroupBorder extends LineBorder {
+ public GroupBorder(Color color) {
+ super(color);
+ }
+
+ public void paint(IFigure figure, Graphics graphics, Insets insets) {
+ Rectangle r = getPaintRectangle(figure, insets).getCopy();
+ graphics.translate(r.getLocation());
+ int start = 0;
+ int width = r.width - 1;
+ int height = r.height - 1;
+
+ if (page != null /*&& group.isConfirmed()*/)
+ graphics.setForegroundColor(blackColor);
+ else
+ graphics.setForegroundColor(darkGrayColor);
+
+ graphics.drawLine(start + 1, 0, width - 15, 0);
+ graphics.drawLine(start, 1, start, height - 2);
+ graphics.drawLine(start + 1, height - 1, width - 2, height - 1);
+ graphics.drawLine(width - 1, 14, width - 1, height - 2);
+ graphics.drawLine(width - 15, 0, width - 1, 14);
+
+ graphics.drawLine(start, 1, start + 1, 0);
+ graphics.drawLine(start, height - 2, start + 1, height - 1);
+ graphics.drawLine(width - 2, height - 1, width - 1, height - 2);
+
+ graphics.drawLine(width - 15, 0, width - 14, 4);
+ graphics.drawLine(width - 14, 4, width - 15, 7);
+ graphics.drawLine(width - 15, 7, width - 18, 10);
+
+ graphics.drawLine(width - 18, 10, width - 1, 14);
+
+ graphics.drawLine(start + 23, 0, start + 23, 19);
+ graphics.drawLine(start, 20, start + 22, 20);
+ graphics.drawLine(start + 22, 20, start + 23, 19);
+
+
+ if (page != null /*&& group.isConfirmed()*/)
+ graphics.setForegroundColor(borderColor);
+ else
+ graphics.setForegroundColor(darkGrayColor);
+
+ }
+
+ public void mouseDoubleClicked(MouseEvent me) {
+ }
+
+ public void mousePressed(MouseEvent me) {
+ if (me.button == 3) {
+ ((GEFGraphicalViewer) editPart.getViewer()).setNoDeselect();
+ editPart.getViewer().select(editPart);
+ }
+ }
+
+
+}
+}
\ No newline at end of file
Added: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/xpl/FixedConnectionAnchor.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/xpl/FixedConnectionAnchor.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/figures/xpl/FixedConnectionAnchor.java 2008-05-27 15:43:12 UTC (rev 8374)
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * IBM Corporation - initial API and implementation
+ * Exadel, Inc.
+ * Red Hat, Inc.
+ *******************************************************************************/
+package org.jboss.tools.seam.ui.pages.editor.figures.xpl;
+
+import org.eclipse.draw2d.*;
+import org.eclipse.draw2d.geometry.*;
+
+public class FixedConnectionAnchor extends AbstractConnectionAnchor {
+
+ public boolean leftToRight = true;
+
+ public int offsetH;
+
+ public int offsetV;
+
+ public boolean topDown = true;
+
+ public FixedConnectionAnchor(IFigure owner) {
+ super(owner);
+ }
+
+ /**
+ * @see org.eclipse.draw2d.AbstractConnectionAnchor#ancestorMoved(IFigure)
+ */
+ public void ancestorMoved(IFigure figure) {
+ if (figure instanceof ScalableFreeformLayeredPane)
+ return;
+ super.ancestorMoved(figure);
+ }
+
+ public Point getLocation(Point reference) {
+ Rectangle r = getOwner().getBounds();
+ int x, y;
+ if (topDown)
+ y = r.y + offsetV;
+ else
+ y = r.bottom() - 1 - offsetV;
+
+ if (leftToRight)
+ x = r.x + offsetH;
+ else
+ x = r.right() - 1 - offsetH;
+
+ Point p = new PrecisionPoint(x, y);
+ getOwner().translateToAbsolute(p);
+ return p;
+ }
+
+ public Point getReferencePoint() {
+ return getLocation(null);
+ }
+
+}
\ No newline at end of file
16 years
JBoss Tools SVN: r8373 - in trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor: edit and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: dazarov
Date: 2008-05-27 11:41:44 -0400 (Tue, 27 May 2008)
New Revision: 8373
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesEditor.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/GraphicalPartFactory.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesEditPart.java
Log:
http://jira.jboss.com/jira/browse/JBIDE-1189
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesEditor.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesEditor.java 2008-05-27 14:02:11 UTC (rev 8372)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesEditor.java 2008-05-27 15:41:44 UTC (rev 8373)
@@ -36,7 +36,7 @@
protected void doCreatePages() {
if (isAppropriateNature() || true /* JBIDE-541 */) {
//TODO restore
-// createGuiPage();
+ createGuiPage();
treeFormPage = createTreeFormPage();
//TODO use constant
treeFormPage.setTitle("Seam Pages Editor");
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java 2008-05-27 14:02:11 UTC (rev 8372)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java 2008-05-27 15:41:44 UTC (rev 8373)
@@ -22,9 +22,11 @@
import org.jboss.tools.jst.web.model.WebProcess;
import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
import org.jboss.tools.seam.ui.pages.SeamUiPagesPlugin;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesFactory;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesModel;
public class SeamPagesGuiEditor extends AbstractSectionEditor {
- private FakePageEditor gui = null;
+ private PagesEditor gui = null;
private IModelObjectEditorInput input;
private boolean isInitialized = false;
private XModelObject installedProcess = null;
@@ -42,7 +44,7 @@
super.dispose();
}
- public FakePageEditor getGUI(){
+ public PagesEditor getGUI(){
return gui;
}
@@ -82,7 +84,9 @@
if(f == null) return;
try {
f.autolayout();
- gui = new FakePageEditor(input);
+ gui = new PagesEditor(input);
+ PagesModel model = PagesFactory.eINSTANCE.createPagesModel();
+ gui.setJSFModel(model);
// model = new JSFModel(f.getParent());
// model.updateLinks();
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/GraphicalPartFactory.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/GraphicalPartFactory.java 2008-05-27 14:02:11 UTC (rev 8372)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/GraphicalPartFactory.java 2008-05-27 15:41:44 UTC (rev 8373)
@@ -12,6 +12,9 @@
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Page;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesModel;
public class GraphicalPartFactory implements EditPartFactory {
@@ -19,14 +22,12 @@
public EditPart createEditPart(EditPart context, Object model) {
EditPart child = null;
-// if (model instanceof ILink)
-// child = new LinkEditPart();
-// else if (model instanceof IPage)
-// child = new PageEditPart();
-// else if (model instanceof IGroup)
-// child = new GroupEditPart();
-// else if (model instanceof IJSFModel)
-// child = new JSFDiagramEditPart();
+ if (model instanceof PagesModel)
+ child = new PagesDiagramEditPart();
+ else if (model instanceof Page)
+ child = new PageEditPart();
+ else if (model instanceof Link)
+ child = new LinkEditPart();
if (child != null)
child.setModel(model);
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesEditPart.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesEditPart.java 2008-05-27 14:02:11 UTC (rev 8372)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PagesEditPart.java 2008-05-27 15:41:44 UTC (rev 8373)
@@ -22,6 +22,7 @@
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.*;
+import org.jboss.tools.seam.ui.pages.editor.figures.NodeFigure;
abstract public class PagesEditPart extends
org.eclipse.gef.editparts.AbstractGraphicalEditPart implements
@@ -40,44 +41,19 @@
return;
super.activate();
}
-
+
/**
*
- * @param cf
+ * @return
*/
- public void doDoubleClick(boolean cf) { }
+ protected NodeFigure getNodeFigure() {
+ return (NodeFigure) getFigure();
+ }
+
/**
*
- * @param cf
*/
- public void doMouseUp(boolean cf) { }
-
- /**
- *
- * @param cf
- */
- public void doMouseDown(boolean cf) { }
-
- /**
- *
- * @param cf
- */
- public void doMouseHover(boolean cf) { }
-
- /**
- *
- */
- public void doControlUp() { }
-
- /**
- *
- */
- public void doControlDown() { }
-
- /**
- *
- */
protected void createEditPolicies() {
// installEditPolicy(EditPolicy.COMPONENT_ROLE, new JSFElementEditPolicy());
// installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE,
16 years
JBoss Tools SVN: r8372 - in trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model: helpers and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-05-27 10:02:11 -0400 (Tue, 27 May 2008)
New Revision: 8372
Added:
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessStructureHelper.java
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/helpers/SeamPagesProcessHelper.java
Log:
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-27 12:57:39 UTC (rev 8371)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesConstants.java 2008-05-27 14:02:11 UTC (rev 8372)
@@ -35,6 +35,8 @@
public String ATTR_PATH = "path"; //$NON-NLS-1$
public String ATTR_VALUE = "value"; //$NON-NLS-1$
public String ATTR_TYPE = "type"; //$NON-NLS-1$
+ public String ATTR_TARGET = "target"; //$NON-NLS-1$
+ public String ATTR_ID = "id"; //$NON-NLS-1$
public String ATTR_VIEW_ID = "view id"; //$NON-NLS-1$
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java 2008-05-27 12:57:39 UTC (rev 8371)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java 2008-05-27 14:02:11 UTC (rev 8372)
@@ -1,12 +1,16 @@
package org.jboss.tools.seam.pages.xml.model.helpers;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.util.XModelObjectUtil;
+import org.jboss.tools.jst.web.model.ReferenceObject;
import org.jboss.tools.jst.web.model.helpers.autolayout.AutoLayout;
import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
import org.jboss.tools.seam.pages.xml.model.helpers.autolayout.SeamPagesItems;
@@ -115,7 +119,6 @@
XModelObject target = rule.getChildByPath("target");
if(target == null) return;
String tvi = target.getAttributeValue(ATTR_VIEW_ID);
- if(tvi == null) tvi = target.getAttributeValue("error code");
if(tvi == null) return;
String ppt = toNavigationRulePathPart(tvi);
targets.put(ppt, getTemplate());
@@ -193,14 +196,145 @@
}
}
- private void updatePageItem(XModelObject g) {
-
+ private void updatePageItem(ReferenceObjectImpl item) {
+ if(item.isUpToDate()) return;
+ item.notifyUpdate();
+ XModelObject sourcePage = item.getReference();
+ item.setAttributeValue(ATTR_ID, sourcePage.getPathPart());
+ item.setAttributeValue(ATTR_PATH, sourcePage.getAttributeValue(ATTR_VIEW_ID));
+ XModelObject[] cs = getPageTargets(sourcePage);
+ updateOutputs(item, cs);
}
+
+ private XModelObject[] getPageTargets(XModelObject o) {
+ XModelObject[] ns = o.getChildren();
+ List<XModelObject> result = null;
+ for (int i = 0; i < ns.length; i++) {
+ String entity = ns[i].getModelEntity().getName();
+ if(!entity.startsWith(ENT_NAVIGATION)) continue;
+ if(entity.startsWith(ENT_NAVIGATION_RULE)) {
+ XModelObject t = getTargetChild(ns[i]);
+ if(t != null) {
+ if(result == null) result = new ArrayList<XModelObject>();
+ result.add(t);
+ }
+ } else {
+ XModelObject[] rs = ns[i].getChildren();
+ for (int k = 0; k < rs.length; k++) {
+ XModelObject t = getTargetChild(rs[k]);
+ if(t != null) {
+ if(result == null) result = new ArrayList<XModelObject>();
+ result.add(t);
+ }
+ }
+ }
+ }
+ return result == null ? new XModelObject[0]
+ : result.toArray(new XModelObject[0]);
+ }
- private void updateExceptionItem(XModelObject g) {
-
+ private void updateExceptionItem(ReferenceObjectImpl item) {
+ if(item.isUpToDate()) return;
+ item.notifyUpdate();
+ XModelObject exc = item.getReference();
+ item.setAttributeValue(ATTR_ID, exc.getPathPart());
+ item.setAttributeValue(ATTR_PATH, exc.getAttributeValue(ATTR_VIEW_ID));
+ XModelObject t = getTargetChild(exc);
+ XModelObject[] cs = t == null ? new XModelObject[0] : new XModelObject[]{t};
+ updateOutputs(item, cs);
}
+
+ private XModelObject getTargetChild(XModelObject o) {
+ XModelObject t = o.getChildByPath("target");
+ if(t == null || t.getModelEntity().getAttribute(ATTR_VIEW_ID) == null) return null;
+ return t;
+ }
+ private void updateOutputs(ReferenceObjectImpl item, XModelObject[] cases) {
+ XModelObject[] os = item.getChildren();
+ if(isOutputOrderUpToDate(cases, os)) {
+ updateOutputs_1(item, cases, os);
+ } else {
+ updateOutputs_2(item, cases, os);
+ }
+ }
+
+ private void updateOutputs_1(ReferenceObjectImpl item, XModelObject[] cases, XModelObject[] outputs) {
+ int c = 0;
+ for (int i = 0; i < cases.length; i++) {
+ XModelObject output = null;
+ if(c < outputs.length) {
+ output = outputs[c];
+ } else {
+ output = createOutput(item, cases[i]);
+ }
+ ReferenceObjectImpl r = (ReferenceObjectImpl)output;
+ r.setReference(cases[i]);
+ updateOutput(r);
+ ++c;
+ }
+ for (int i = c; i < outputs.length; i++) outputs[i].removeFromParent();
+ }
+
+ private void updateOutputs_2(ReferenceObjectImpl item, XModelObject[] cases, XModelObject[] outputs) {
+ Map<String,XModelObject> map = new HashMap<String,XModelObject>();
+ for (int i = 0; i < outputs.length; i++) {
+ XModelObject output = outputs[i];
+ output.removeFromParent();
+ map.put(output.getAttributeValue(ATTR_ID), output);
+ }
+ for (int i = 0; i < cases.length; i++) {
+ XModelObject output = map.get(cases[i].getPathPart());
+ if(output == null) {
+ output = createOutput(item, cases[i]);
+ } else {
+ item.addChild(output);
+ }
+ ReferenceObjectImpl r = (ReferenceObjectImpl)output;
+ r.setReference(cases[i]);
+ updateOutput(r);
+ }
+ }
+
+ private boolean isOutputOrderUpToDate(XModelObject[] cases, XModelObject[] outputs) {
+ for (int i = 0; i < cases.length && i < outputs.length; i++) {
+ ReferenceObject r = (ReferenceObject)outputs[i];
+ if(r.getReference() == cases[i]) continue;
+ String pp = cases[i].getPathPart();
+ String id = outputs[i].getAttributeValue(ATTR_ID);
+ if(!pp.equals(id)) return false;
+ }
+ return true;
+ }
+
+ private XModelObject createOutput(XModelObject item, XModelObject rulecase) {
+ XModelObject output = item.getModel().createModelObject(ENT_PROCESS_ITEM_OUTPUT, null);
+ output.setAttributeValue(ATTR_ID, rulecase.getPathPart());
+ output.setAttributeValue(ATTR_PATH, rulecase.getAttributeValue(ATTR_VIEW_ID));
+ String name = XModelObjectUtil.createNewChildName("output", item);
+ output.setAttributeValue(ATTR_NAME, name);
+ item.addChild(output);
+ return output;
+ }
+
+ private void updateOutput(ReferenceObjectImpl output) {
+ if(output.isUpToDate()) return;
+ output.notifyUpdate();
+ XModelObject rulecase = output.getReference();
+ output.setAttributeValue(ATTR_ID, rulecase.getPathPart());
+ String path = rulecase.getAttributeValue(ATTR_VIEW_ID);
+ output.setAttributeValue(ATTR_PATH, path);
+// String title = SeamPagesProcessStructureHelper.createItemOutputPresentation(rulecase);
+// output.setAttributeValue("title", title);
+ XModelObject g = findGroupByPath(path);
+ String target = (g == null) ? "" : g.getPathPart();
+ output.setAttributeValue(ATTR_TARGET, target);
+ }
+
+ private XModelObject findGroupByPath(String path) {
+ return getPage(path);
+ }
+
public void autolayout() {
AutoLayout auto = new AutoLayout();
auto.setItems(new SeamPagesItems());
Added: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessStructureHelper.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessStructureHelper.java (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessStructureHelper.java 2008-05-27 14:02:11 UTC (rev 8372)
@@ -0,0 +1,58 @@
+package org.jboss.tools.seam.pages.xml.model.helpers;
+
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.jst.web.model.ReferenceObject;
+import org.jboss.tools.jst.web.model.helpers.WebProcessStructureHelper;
+import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+
+public class SeamPagesProcessStructureHelper extends WebProcessStructureHelper implements SeamPagesConstants {
+ SeamPagesProcessStructureHelper instance = new SeamPagesProcessStructureHelper();
+
+ public XModelObject getParentProcess(XModelObject element) {
+ XModelObject p = element;
+ while(p != null && p.getFileType() == XModelObject.NONE &&
+ !ENT_PROCESS.equals(p.getModelEntity().getName())) p = p.getParent();
+ return p;
+ }
+
+ public XModelObject[] getItems(XModelObject process) {
+ return process.getChildren(ENT_PROCESS_ITEM);
+ }
+
+ public XModelObject[] getOutputs(XModelObject item) {
+ return item.getChildren(ENT_PROCESS_ITEM_OUTPUT);
+ }
+
+ public String getPath(XModelObject element) {
+ return element.getAttributeValue(ATTR_PATH);
+ }
+
+ public XModelObject getItemOutputTarget(XModelObject itemOutput) {
+ return itemOutput.getParent().getParent().getChildByPath(itemOutput.getAttributeValue(ATTR_TARGET));
+ }
+
+ public String getItemOutputPresentation(XModelObject itemOutput) {
+// boolean s = isShortcut(itemOutput);
+ return itemOutput.getPresentationString();
+ }
+
+ public boolean isPattern(XModelObject item) {
+ String path = item.getAttributeValue(ATTR_PATH);
+ return (path != null) && (path.length() == 0 || path.indexOf('*') >= 0);
+ }
+
+ public boolean isUnconfirmedPage(XModelObject item) {
+ String type = item.getAttributeValue(ATTR_TYPE);
+ if(!TYPE_PAGE.equals(type)) return false;
+ if(isPattern(item)) return false;
+ return !"true".equals(item.getAttributeValue("confirmed"));
+ }
+
+ public XModelObject getReference(XModelObject diagramObject) {
+ if(diagramObject instanceof ReferenceObject) {
+ return ((ReferenceObject)diagramObject).getReference();
+ }
+ return null;
+ }
+
+}
16 years
JBoss Tools SVN: r8371 - in trunk/seam/plugins/org.jboss.tools.seam.pages.xml: src/org/jboss/tools/seam/pages/xml/model and 2 other directories.
by jbosstools-commits@lists.jboss.org
Author: scabanovich
Date: 2008-05-27 08:57:39 -0400 (Tue, 27 May 2008)
New Revision: 8371
Modified:
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/SeamPagesLoaderUtil.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/ReferenceObjectImpl.java
trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPageNavigationImpl.java
Log:
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-27 11:59:02 UTC (rev 8370)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/resources/meta/seam-pages.meta 2008-05-27 12:57:39 UTC (rev 8371)
@@ -674,6 +674,7 @@
<XChildEntity name="SeamPageIn"/>
<XChildEntity name="SeamPageAction"/>
<XChildEntity name="SeamPageNavigation12"/>
+ <XChildEntity name="SeamPageNavigationRule12"/>
</XChildrenEntities>
<XEntityRenderer>
<ICONS>
@@ -786,6 +787,7 @@
<XChildEntity maxCount="1" name="SeamPageRaiseEvent20"/>
<XChildEntity name="SeamPageAction"/>
<XChildEntity name="SeamPageNavigation20"/>
+ <XChildEntity name="SeamPageNavigationRule20"/>
</XChildrenEntities>
<XEntityRenderer>
<ICONS>
@@ -1747,6 +1749,124 @@
PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.seam.xml.ui.editor.form.SeamXMLFormLayoutData;children=%EntityOrdered%"
XMLSUBPATH="navigation" name="SeamPageNavigation12">
<XChildrenEntities>
+ <XChildEntity name="SeamPageRule12"/>
+ </XChildrenEntities>
+ <XEntityRenderer>
+ <ICONS>
+ <ICON info="main.seam-pages.rule" type="main"/>
+ </ICONS>
+ </XEntityRenderer>
+ <XModelAttributes>
+ <XModelAttribute default="navigation" loader="ElementType" name="element type">
+ <Editor name="Uneditable"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="id=true;category=general"
+ name="from action" xmlname="from-action"/>
+ <XModelAttribute PROPERTIES="category=general" name="evaluate" xmlname="evaluate"/>
+ <XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
+ <Editor name="Note"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="id=true;generate=true" name="_id_" visibility="false"/>
+ </XModelAttributes>
+ <XActionItem kind="list">
+ <XActionItem kind="list" name="CreateActions">
+ <XActionItem HandlerClassName="%Create%" ICON="action.empty"
+ PROPERTIES="validator.add=true" WizardClassName="%Default%"
+ displayName="Add Rule..." kind="action" name="AddRule">
+ <EntityData EntityName="SeamPageRule12">
+ <AttributeData AttributeName="if outcome" Mandatory="no"/>
+ <AttributeData AttributeName="if" Mandatory="no"/>
+ </EntityData>
+ </XActionItem>
+ </XActionItem>
+ <XActionItem ICON="action.empty" displayName="Create" kind="list" name="EditActions"/>
+ <XActionItem ICON="action.copy" displayName="Copy" kind="list" name="CopyActions">
+ <XActionItem BaseActionName="Copy" HandlerClassName="%Copy%"
+ ICON="action.copy" displayName="Copy" kind="action" name="Copy"/>
+ <XActionItem BaseActionName="Cut" HandlerClassName="%Cut%"
+ ICON="action.cut" displayName="Cut" kind="action" name="Cut"/>
+ <XActionItem BaseActionName="Paste" HandlerClassName="%Paste%"
+ 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>
+ <XActionItem ICON="action.empty" kind="list" name="Properties">
+ <XActionItem HandlerClassName="%Properties%" ICON="action.empty"
+ displayName="Properties..." kind="action" name="Properties"/>
+ </XActionItem>
+ <XActionItem displayName="move" kind="list" name="MoveActions">
+ <XActionItem HIDE="always" HandlerClassName="%Move%"
+ ICON="action.move" displayName="Move" kind="action" name="Move"/>
+ </XActionItem>
+ </XActionItem>
+ <XDependencies/>
+ </XModelEntity>
+ <XModelEntity
+ ImplementingClass="org.jboss.tools.seam.pages.xml.model.impl.SeamPageNavigationImpl"
+ PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.seam.xml.ui.editor.form.SeamXMLFormLayoutData;children=%EntityOrdered%"
+ XMLSUBPATH="navigation" name="SeamPageNavigation20">
+ <XChildrenEntities>
+ <XChildEntity name="SeamPageRule20"/>
+ </XChildrenEntities>
+ <XEntityRenderer>
+ <ICONS>
+ <ICON info="main.seam-pages.rule" type="main"/>
+ </ICONS>
+ </XEntityRenderer>
+ <XModelAttributes>
+ <XModelAttribute default="navigation" loader="ElementType" name="element type">
+ <Editor name="Uneditable"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="id=true;category=general"
+ name="from action" xmlname="from-action"/>
+ <XModelAttribute PROPERTIES="category=general" name="evaluate" xmlname="evaluate"/>
+ <XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
+ <Editor name="Note"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="id=true;generate=true" name="_id_" visibility="false"/>
+ </XModelAttributes>
+ <XActionItem kind="list">
+ <XActionItem kind="list" name="CreateActions">
+ <XActionItem HandlerClassName="%Create%" ICON="action.empty"
+ PROPERTIES="validator.add=true" WizardClassName="%Default%"
+ displayName="Add Rule..." kind="action" name="AddRule">
+ <EntityData EntityName="SeamPageRule20">
+ <AttributeData AttributeName="if outcome" Mandatory="no"/>
+ <AttributeData AttributeName="if" Mandatory="no"/>
+ </EntityData>
+ </XActionItem>
+ </XActionItem>
+ <XActionItem ICON="action.empty" displayName="Create" kind="list" name="EditActions"/>
+ <XActionItem ICON="action.copy" displayName="Copy" kind="list" name="CopyActions">
+ <XActionItem BaseActionName="Copy" HandlerClassName="%Copy%"
+ ICON="action.copy" displayName="Copy" kind="action" name="Copy"/>
+ <XActionItem BaseActionName="Cut" HandlerClassName="%Cut%"
+ ICON="action.cut" displayName="Cut" kind="action" name="Cut"/>
+ <XActionItem BaseActionName="Paste" HandlerClassName="%Paste%"
+ 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>
+ <XActionItem ICON="action.empty" kind="list" name="Properties">
+ <XActionItem HandlerClassName="%Properties%" ICON="action.empty"
+ displayName="Properties..." kind="action" name="Properties"/>
+ </XActionItem>
+ <XActionItem displayName="move" kind="list" name="MoveActions">
+ <XActionItem HIDE="always" HandlerClassName="%Move%"
+ ICON="action.move" displayName="Move" kind="action" name="Move"/>
+ </XActionItem>
+ </XActionItem>
+ <XDependencies/>
+ </XModelEntity>
+ <XModelEntity
+ ImplementingClass="org.jboss.tools.seam.pages.xml.model.impl.SeamPageNavigationImpl"
+ PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.seam.xml.ui.editor.form.SeamXMLFormLayoutData;children=%EntityOrdered%"
+ XMLSUBPATH="navigation" name="SeamPageNavigationRule12">
+ <XChildrenEntities>
<XChildEntity maxCount="1" name="SeamPageBeginConversation"/>
<XChildEntity maxCount="1" name="SeamPageEndConversation"/>
<XChildEntity maxCount="1" name="SeamPageStartTask"/>
@@ -1757,7 +1877,6 @@
<XChildEntity name="SeamPageOut"/>
<XChildEntity maxCount="1" name="SeamPageRender"/>
<XChildEntity maxCount="1" name="SeamPageRedirect12"/>
- <XChildEntity name="SeamPageRule12"/>
</XChildrenEntities>
<XEntityRenderer>
<ICONS>
@@ -1774,6 +1893,7 @@
<XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
<Editor name="Note"/>
</XModelAttribute>
+ <XModelAttribute PROPERTIES="id=true;generate=true" name="_id_" visibility="false"/>
</XModelAttributes>
<XActionItem kind="list">
<XActionItem kind="list" name="CreateActions">
@@ -1786,14 +1906,6 @@
<AttributeData AttributeName="value"/>
</EntityData>
</XActionItem>
- <XActionItem HandlerClassName="%Create%" ICON="action.empty"
- PROPERTIES="validator.add=true" WizardClassName="%Default%"
- displayName="Add Rule..." kind="action" name="AddRule">
- <EntityData EntityName="SeamPageRule12">
- <AttributeData AttributeName="if outcome" Mandatory="no"/>
- <AttributeData AttributeName="if" Mandatory="no"/>
- </EntityData>
- </XActionItem>
</XActionItem>
<XActionItem ICON="action.empty" displayName="Create" kind="list" name="EditActions"/>
<XActionItem ICON="action.copy" displayName="Copy" kind="list" name="CopyActions">
@@ -1822,7 +1934,7 @@
<XModelEntity
ImplementingClass="org.jboss.tools.seam.pages.xml.model.impl.SeamPageNavigationImpl"
PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.seam.xml.ui.editor.form.SeamXMLFormLayoutData;children=%EntityOrdered%"
- XMLSUBPATH="navigation" name="SeamPageNavigation20">
+ XMLSUBPATH="navigation" name="SeamPageNavigationRule20">
<XChildrenEntities>
<XChildEntity maxCount="1" name="SeamPageBeginConversation"/>
<XChildEntity maxCount="1" name="SeamPageEndConversation"/>
@@ -1835,7 +1947,6 @@
<XChildEntity maxCount="1" name="SeamPageRaiseEvent20"/>
<XChildEntity maxCount="1" name="SeamPageRender"/>
<XChildEntity maxCount="1" name="SeamPageRedirect20"/>
- <XChildEntity name="SeamPageRule20"/>
</XChildrenEntities>
<XEntityRenderer>
<ICONS>
@@ -1852,6 +1963,7 @@
<XModelAttribute TRIM="no" name="comment" visibility="false" xmlname="#comment">
<Editor name="Note"/>
</XModelAttribute>
+ <XModelAttribute PROPERTIES="id=true;generate=true" name="_id_" visibility="false"/>
</XModelAttributes>
<XActionItem kind="list">
<XActionItem kind="list" name="CreateActions">
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-27 11:59:02 UTC (rev 8370)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesConstants.java 2008-05-27 12:57:39 UTC (rev 8371)
@@ -19,26 +19,36 @@
public String SUFF_20 = "20"; //$NON-NLS-1$
public String ENT_FILE_SEAM_PAGES = "FileSeamPages"; //$NON-NLS-1$
public String ENT_FILE_SEAM_PAGES_12 = ENT_FILE_SEAM_PAGES + SUFF_12;
- public String ENT_FILE_SEAM_PAGE_12 = "FileSeamPage" + SUFF_12;
+ public String ENT_FILE_SEAM_PAGE = "FileSeamPage";
+ public String ENT_FILE_SEAM_PAGE_12 = ENT_FILE_SEAM_PAGE + SUFF_12;
public String ENT_FILE_SEAM_PAGES_20 = ENT_FILE_SEAM_PAGES + SUFF_20;
- public String ENT_FILE_SEAM_PAGE_20 = "FileSeamPage" + SUFF_20; //$NON-NLS-1$
+ public String ENT_FILE_SEAM_PAGE_20 = ENT_FILE_SEAM_PAGE + SUFF_20; //$NON-NLS-1$
public String ENT_SEAM_PAGE = "SeamPage"; //$NON-NLS-1$
public String ENT_SEAM_PAGE_12 = ENT_SEAM_PAGE + SUFF_12;
public String ENT_SEAM_PAGE_20 = ENT_SEAM_PAGE + SUFF_20;
+ public String ENT_NAVIGATION = "SeamPageNavigation";
+ public String ENT_NAVIGATION_RULE = "SeamPageNavigationRule";
+
public String ATTR_NAME = "name"; //$NON-NLS-1$
+ public String ATTR_PATH = "path"; //$NON-NLS-1$
public String ATTR_VALUE = "value"; //$NON-NLS-1$
+ public String ATTR_TYPE = "type"; //$NON-NLS-1$
+
+ public String ATTR_VIEW_ID = "view id"; //$NON-NLS-1$
- public String FOLDER_CONVERSATIONS = "Conversations";
- public String FOLDER_PAGES = "Pages";
- public String FOLDER_EXCEPTIONS = "Exceptions";
+ public String FOLDER_CONVERSATIONS = "Conversations"; //$NON-NLS-1$
+ public String FOLDER_PAGES = "Pages"; //$NON-NLS-1$
+ public String FOLDER_EXCEPTIONS = "Exceptions"; //$NON-NLS-1$
- public String ELM_PROCESS = "process";
+ public String ELM_PROCESS = "process"; //$NON-NLS-1$
+ public String ENT_PROCESS = "SeamPagesProcess"; //$NON-NLS-1$
+ public String ENT_PROCESS_ITEM = "SeamPagesProcessItem"; //$NON-NLS-1$
+ public String ENT_PROCESS_ITEM_OUTPUT = "SeamPagesProcessItemOutput"; //$NON-NLS-1$
+ public String TYPE_PAGE = "page"; //$NON-NLS-1$
+ public String TYPE_EXCEPTION = "exception"; //$NON-NLS-1$
+ public String SUBTYPE_UNKNOWN = "unknown"; //$NON-NLS-1$
- public String TYPE_PAGE = "page";
- public String TYPE_EXCEPTION = "exception";
- public String SUBTYPE_UNKNOWN = "unknown";
-
}
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesLoaderUtil.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesLoaderUtil.java 2008-05-27 11:59:02 UTC (rev 8370)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/SeamPagesLoaderUtil.java 2008-05-27 12:57:39 UTC (rev 8371)
@@ -102,6 +102,31 @@
protected String getChildEntity(XModelEntity entity, Element e) {
String n = e.getNodeName();
+ if("page".equals(entity.getXMLSubPath())) {
+ String suff = (entity.getName().endsWith(SUFF_12))
+ ? SUFF_12
+ : (entity.getName().endsWith(SUFF_20))
+ ? SUFF_20
+ : null;
+ if(suff == null) {
+ System.out.println("Unknown suffix in seam page entity " + entity.getName());
+ suff = SUFF_20;
+ }
+ if("navigation".equals(n)) {
+ NodeList nl = e.getChildNodes();
+ for (int i = 0; i < nl.getLength(); i++) {
+ Node ni = nl.item(i);
+ if(ni.getNodeType() == Node.ELEMENT_NODE) {
+ if(ni.getNodeName().equals("rule")) {
+ return ENT_NAVIGATION + suff;
+ } else {
+ return ENT_NAVIGATION_RULE + suff;
+ }
+ }
+ }
+ return ENT_NAVIGATION + suff;
+ }
+ }
return super.getChildEntity(entity, e);
}
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java 2008-05-27 11:59:02 UTC (rev 8370)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/helpers/SeamPagesProcessHelper.java 2008-05-27 12:57:39 UTC (rev 8371)
@@ -2,6 +2,7 @@
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -9,14 +10,15 @@
import org.jboss.tools.jst.web.model.helpers.autolayout.AutoLayout;
import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
import org.jboss.tools.seam.pages.xml.model.helpers.autolayout.SeamPagesItems;
+import org.jboss.tools.seam.pages.xml.model.impl.ReferenceObjectImpl;
import org.jboss.tools.seam.pages.xml.model.impl.SeamPagesProcessImpl;
public class SeamPagesProcessHelper implements SeamPagesConstants {
private XModelObject process;
private static XModelObject TEMPLATE;
private XModelObject config;
- private Map<String,XModelObject> groups = new HashMap<String,XModelObject>();
- private Map<String,XModelObject> exceptions = new HashMap<String,XModelObject>();
+ private Map<String,XModelObject> pageItems = new HashMap<String,XModelObject>();
+ private Map<String,XModelObject> exceptionItems = new HashMap<String,XModelObject>();
private Map<String,XModelObject> targets = new HashMap<String,XModelObject>();
public SeamPagesProcessHelper(XModelObject process) {
@@ -28,7 +30,8 @@
}
private synchronized void reset() {
- groups.clear();
+ pageItems.clear();
+ exceptionItems.clear();
targets.clear();
this.config = process.getParent();
}
@@ -63,10 +66,141 @@
private void updateProcess0() {
reset();
- //TODO
+ XModelObject[] sourcePages = config.getChildByPath(FOLDER_PAGES).getChildren();
+
+ for (int i = 0; i < sourcePages.length; i++) {
+ String view = sourcePages[i].getAttributeValue(ATTR_VIEW_ID);
+ if(view == null) continue;
+ String pp = toNavigationRulePathPart(view);
+ XModelObject g = findOrCreateItem(view, pp, TYPE_PAGE);
+ ((ReferenceObjectImpl)g).setReference(sourcePages[i]);
+ pageItems.put(pp, g);
+ XModelObject[] ns = sourcePages[i].getChildren();
+ for (int j = 0; j < ns.length; j++) {
+ String entity = ns[j].getModelEntity().getName();
+ if(!entity.startsWith(ENT_NAVIGATION)) continue;
+ if(entity.startsWith(ENT_NAVIGATION_RULE)) {
+ addTarget(ns[j]);
+ } else {
+ XModelObject[] rs = ns[j].getChildren();
+ for (int k = 0; k < rs.length; k++) {
+ addTarget(rs[k]);
+ }
+ }
+ }
+ }
+
+ XModelObject[] sourceExceptions = config.getChildByPath(FOLDER_EXCEPTIONS).getChildren();
+ for (int i = 0; i < sourceExceptions.length; i++) {
+ String code = sourceExceptions[i].getAttributeValue("class");
+ XModelObject g = findOrCreateItem(code, code, TYPE_EXCEPTION);
+ ((ReferenceObjectImpl)g).setReference(sourceExceptions[i]);
+ exceptionItems.put(code, g);
+ addTarget(sourceExceptions[i]);
+ }
+
+ Iterator<String> it = pageItems.keySet().iterator();
+ while(it.hasNext()) targets.remove(it.next());
+
+ removeObsoletePageItems();
+ removeObsoleteExceptionItems();
+ createPageItems();
+ updatePageItems();
+ updateExceptionItems();
+
+ updatePages();
}
+ private void addTarget(XModelObject rule) {
+ XModelObject target = rule.getChildByPath("target");
+ if(target == null) return;
+ String tvi = target.getAttributeValue(ATTR_VIEW_ID);
+ if(tvi == null) tvi = target.getAttributeValue("error code");
+ if(tvi == null) return;
+ String ppt = toNavigationRulePathPart(tvi);
+ targets.put(ppt, getTemplate());
+ }
+ private XModelObject getTemplate() {
+ if(TEMPLATE == null && process != null) {
+ TEMPLATE = process.getModel().createModelObject(ENT_PROCESS_ITEM, null);
+ }
+ return TEMPLATE;
+ }
+
+ public XModelObject findOrCreateItem(String path, String pp, String type) {
+ if(pp == null) pp = toNavigationRulePathPart(path);
+ XModelObject g = process.getChildByPath(pp);
+ if(g == null) {
+ g = process.getModel().createModelObject(ENT_PROCESS_ITEM, null);
+ g.setAttributeValue(ATTR_NAME, pp);
+ g.setAttributeValue(ATTR_PATH, path);
+ g.setAttributeValue(ATTR_TYPE, type);
+ process.addChild(g);
+ }
+ return g;
+ }
+
+ private void removeObsoletePageItems() {
+ XModelObject[] ps = process.getChildren(ENT_PROCESS_ITEM);
+ for (int i = 0; i < ps.length; i++) {
+ String path = ps[i].getPathPart();
+ String type = ps[i].getAttributeValue(ATTR_TYPE);
+ if(!TYPE_PAGE.equals(type)) continue;
+ if(!pageItems.containsKey(path) && !targets.containsKey(path)) {
+ ps[i].removeFromParent();
+ }
+ }
+ }
+
+ private void removeObsoleteExceptionItems() {
+ XModelObject[] ps = process.getChildren(ENT_PROCESS_ITEM);
+ for (int i = 0; i < ps.length; i++) {
+ String path = ps[i].getPathPart();
+ String type = ps[i].getAttributeValue(ATTR_TYPE);
+ if(!TYPE_EXCEPTION.equals(type)) continue;
+ if(!exceptionItems.containsKey(path)) {
+ ps[i].removeFromParent();
+ }
+ }
+ }
+
+ private void createPageItems() {
+ String[] paths = (String[])targets.keySet().toArray(new String[0]);
+ for (int i = 0; i < paths.length; i++) {
+ String fvi = toFromViewId(paths[i]);
+ XModelObject g = findOrCreateItem(fvi, paths[i], TYPE_PAGE);
+ targets.put(paths[i], g);
+ }
+ }
+
+ private void updatePageItems() {
+ ReferenceObjectImpl[] gs = (ReferenceObjectImpl[])pageItems.values().toArray(new ReferenceObjectImpl[0]);
+ for (int i = 0; i < gs.length; i++) {
+ updatePageItem(gs[i]);
+ }
+ gs = (ReferenceObjectImpl[])targets.values().toArray(new ReferenceObjectImpl[0]);
+ for (int i = 0; i < gs.length; i++) {
+ gs[i].setReference(null);
+ updatePageItem(gs[i]);
+ }
+ }
+
+ private void updateExceptionItems() {
+ ReferenceObjectImpl[] gs = (ReferenceObjectImpl[])exceptionItems.values().toArray(new ReferenceObjectImpl[0]);
+ for (int i = 0; i < gs.length; i++) {
+ updateExceptionItem(gs[i]);
+ }
+ }
+
+ private void updatePageItem(XModelObject g) {
+
+ }
+
+ private void updateExceptionItem(XModelObject g) {
+
+ }
+
public void autolayout() {
AutoLayout auto = new AutoLayout();
auto.setItems(new SeamPagesItems());
@@ -75,7 +209,7 @@
public XModelObject getPage(String path) {
path = toNavigationRulePathPart(path);
- XModelObject g = (XModelObject)groups.get(path);
+ XModelObject g = (XModelObject)pageItems.get(path);
if(g == null) g = (XModelObject)targets.get(path);
return g;
}
@@ -88,4 +222,10 @@
return "" + path.replace('/', '#');
}
+ public static String toFromViewId(String pathpart) {
+ if(!pathpart.startsWith("rules:")) return pathpart.replace('#', '/');
+ pathpart = pathpart.substring(6).replace('#', '/');
+ int i = pathpart.lastIndexOf(':');
+ return (i < 0) ? pathpart : pathpart.substring(0, i);
+ }
}
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/ReferenceObjectImpl.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/ReferenceObjectImpl.java 2008-05-27 11:59:02 UTC (rev 8370)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/ReferenceObjectImpl.java 2008-05-27 12:57:39 UTC (rev 8371)
@@ -18,45 +18,49 @@
public class ReferenceObjectImpl extends OrderedObjectImpl implements ReferenceObject, SeamPagesConstants {
private static final long serialVersionUID = 2473449103657311162L;
- protected XModelObject reference;
- protected long referenceTimeStamp = -1;
+ protected XModelObject reference;
+ protected long referenceTimeStamp = -1;
- public ReferenceObjectImpl() {}
+ public ReferenceObjectImpl() {}
- public XModelObject getReference() {
- return reference;
- }
+ public XModelObject getReference() {
+ return reference;
+ }
- public void setReference(XModelObject reference) {
- if(this.reference != reference) {
+ public void setReference(XModelObject reference) {
+ if(this.reference != reference) {
referenceTimeStamp = -1;
- }
+ }
this.reference = reference;
if(reference != null) {
- String shape = get("SHAPE");
- if(shape != null && shape.length() > 0) reference.set("_shape", shape);
+ String shape = get("SHAPE");
+ if(shape != null && shape.length() > 0) reference.set("_shape", shape);
}
- }
-
- public boolean isUpToDate() {
- return reference == null || reference.getTimeStamp() == referenceTimeStamp;
- }
-
- public void notifyUpdate() {
+ }
+
+ public boolean isUpToDate() {
+ return reference == null || reference.getTimeStamp() == referenceTimeStamp;
+ }
+
+ public void notifyUpdate() {
referenceTimeStamp = (reference == null) ? -1 : reference.getTimeStamp();
- }
+ }
- public String getPresentationString() {
- String title = (reference != null) ? reference.getPresentationString() :
-/* (TYPE_ACTION.equals(getAttributeValue(ATT_TYPE)) ||
- TYPE_PAGE.equals(getAttributeValue(ATT_TYPE))
- ) ? getAttributeValue(ATT_PATH) : */
+ public String getPresentationString() {
+ String title = (reference != null) ? reference.getPresentationString() :
+ TYPE_PAGE.equals(getAttributeValue(ATTR_TYPE))
+ || TYPE_EXCEPTION.equals(getAttributeValue(ATTR_TYPE))
+ ? getAttributeValue(ATTR_PATH) :
getAttributeValue("title");
- if(title == null) title = getAttributeValue(ATTR_NAME);
- return "" + title;
- }
+ if(title == null) title = getAttributeValue(ATTR_NAME);
+ return "" + title;
+ }
- public String getMainIconName() {
+ public String getMainIconName() {
+
+ if(reference != null && TYPE_EXCEPTION.equals(getAttributeValue(ATTR_TYPE))) {
+ return reference.getMainIconName();
+ }
/*
String type = getAttributeValue(ATT_TYPE);
if(type == null || type.length() == 0) return super.getMainIconName();
Modified: trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPageNavigationImpl.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPageNavigationImpl.java 2008-05-27 11:59:02 UTC (rev 8370)
+++ trunk/seam/plugins/org.jboss.tools.seam.pages.xml/src/org/jboss/tools/seam/pages/xml/model/impl/SeamPageNavigationImpl.java 2008-05-27 12:57:39 UTC (rev 8371)
@@ -1,14 +1,13 @@
package org.jboss.tools.seam.pages.xml.model.impl;
import org.jboss.tools.common.model.impl.CustomizedObjectImpl;
+import org.jboss.tools.common.model.util.XModelObjectLoaderUtil;
public class SeamPageNavigationImpl extends CustomizedObjectImpl {
private static final long serialVersionUID = 1L;
public String getPathPart() {
- String v1 = getAttributeValue("from action");
- String v2 = getAttributeValue("evaluation");
- return "" + v1 + ":" + v2;
+ return "navigation" + ":" + get(XModelObjectLoaderUtil.ATTR_ID_NAME);
}
public String getPresentationString() {
16 years