Author: scabanovich
Date: 2008-05-26 13:19:49 -0400 (Mon, 26 May 2008)
New Revision: 8339
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/images/
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/images/xstudio/
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/images/xstudio/editors/
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/images/xstudio/editors/seam-pages.gif
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java
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
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/.classpath
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/META-INF/MANIFEST.MF
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/build.properties
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/plugin.xml
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/SeamUiPagesPlugin.java
Log:
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/.classpath
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/.classpath 2008-05-26 17:12:12 UTC
(rev 8338)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/.classpath 2008-05-26 17:19:49 UTC
(rev 8339)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/"/>
<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="output" path="bin"/>
</classpath>
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/META-INF/MANIFEST.MF
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/META-INF/MANIFEST.MF 2008-05-26
17:12:12 UTC (rev 8338)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/META-INF/MANIFEST.MF 2008-05-26
17:19:49 UTC (rev 8339)
@@ -4,7 +4,12 @@
Bundle-ClassPath: seam-ui-pages.jar
Bundle-Activator: org.jboss.tools.seam.ui.pages.SeamUiPagesPlugin
Bundle-Vendor: %providerName
-Provide-Package: org.jboss.tools.seam.ui.pages
+Provide-Package: org.jboss.tools.seam.ui.pages,
+ org.jboss.tools.seam.ui.pages.editor
+Export-Package: org.jboss.tools.seam.ui.pages,
+ org.jboss.tools.seam.ui.pages.editor,
+ org.jboss.tools.seam.ui.pages.editor.edit,
+ org.jboss.tools.seam.ui.pages.editor.model
Bundle-SymbolicName: org.jboss.tools.seam.ui.pages;singleton:=true
Bundle-Localization: plugin
Require-Bundle: org.eclipse.jface.text,
@@ -30,6 +35,6 @@
org.jboss.tools.common.text.xml,
org.jboss.tools.jst.web,
org.jboss.tools.jst.web.ui,
- org.jboss.tools.seam.xml
+ org.jboss.tools.seam.pages.xml
Bundle-Version: 2.0.0
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui.pages/build.properties
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui.pages/build.properties 2008-05-26 17:12:12
UTC (rev 8338)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/build.properties 2008-05-26 17:19:49
UTC (rev 8339)
@@ -4,9 +4,9 @@
images/,\
META-INF/,\
about.html
-source.seam-xml-ui.jar = src/,\
+source.seam-ui-pages.jar = src/,\
resources/
-jars.compile.order = seam-xml-ui.jar
+jars.compile.order = seam-ui-pages.jar
src.includes = resources/,\
src/,\
plugin.xml,\
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/images/xstudio/editors/seam-pages.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/images/xstudio/editors/seam-pages.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
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-26 17:12:12 UTC
(rev 8338)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui.pages/plugin.xml 2008-05-26 17:19:49 UTC
(rev 8339)
@@ -2,6 +2,15 @@
<?eclipse version="3.0"?>
<plugin>
+ <extension id="e" name="XML Editors"
point="org.jboss.tools.common.model.ui.xmlEditor">
+ <xmlEditor
+ class="org.jboss.tools.seam.ui.pages.editor.SeamPagesEditor"
+
contributorClass="org.jboss.tools.common.model.ui.texteditors.MultiPageContributor"
+ entities="FileSeamPages12,FileSeamPages20"
+ icon="images/xstudio/editors/seam-pages.gif"
+ name="Seam Pages">
+ </xmlEditor>
+ </extension>
</plugin>
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/SeamUiPagesPlugin.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/SeamUiPagesPlugin.java 2008-05-26
17:12:12 UTC (rev 8338)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/SeamUiPagesPlugin.java 2008-05-26
17:19:49 UTC (rev 8339)
@@ -14,9 +14,10 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.jboss.tools.common.log.BaseUIPlugin;
import org.osgi.framework.BundleContext;
-public class SeamUiPagesPlugin extends AbstractUIPlugin {
+public class SeamUiPagesPlugin extends BaseUIPlugin {
public static String PLUGIN_ID = "org.jboss.tools.seam.xml.ui"; //$NON-NLS-1$
static SeamUiPagesPlugin INSTANCE = null;
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java 2008-05-26
17:19:49 UTC (rev 8339)
@@ -0,0 +1,21 @@
+package org.jboss.tools.seam.ui.pages.editor;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.ui.IEditorInput;
+
+public class FakePageEditor implements IAdaptable {
+
+ public FakePageEditor(IEditorInput input) {}
+
+ public ISelectionProvider getModelSelectionProvider() {
+ return null;
+ }
+
+ public Object getAdapter(Class adapter) {
+ return null;
+ }
+
+ public void dispose() {}
+
+}
Added:
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
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesEditor.java 2008-05-26
17:19:49 UTC (rev 8339)
@@ -0,0 +1,170 @@
+package org.jboss.tools.seam.ui.pages.editor;
+
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.jboss.tools.common.editor.AbstractSelectionProvider;
+import org.jboss.tools.common.editor.ObjectMultiPageEditor;
+import org.jboss.tools.common.editor.ObjectTextEditor;
+import org.jboss.tools.common.gef.outline.xpl.DiagramContentOutlinePage;
+import org.jboss.tools.common.model.ui.editor.EditorDescriptor;
+import org.jboss.tools.common.model.ui.texteditors.XMLTextEditorComponent;
+import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+import org.jboss.tools.seam.ui.pages.SeamUiPagesPlugin;
+
+public class SeamPagesEditor extends ObjectMultiPageEditor {
+ protected SeamPagesGuiEditor guiEditor;
+// protected FacesConfigFilteredTreeConstraint constraint = new
FacesConfigFilteredTreeConstraint();
+
+ protected Composite createPageContainer(Composite parent) {
+ Composite composite = super.createPageContainer(parent);
+// PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
IJSFHelpContextIds.FACES_CONFIG_EDITOR);
+ return composite;
+ }
+
+ public SeamPagesEditor() {
+// constraint.setEditorEnvironment(true);
+// FacesConfigFilteredTreeConstraint constraint2 = new
FacesConfigFilteredTreeConstraint();
+// outline.addFilter(constraint2);
+ }
+
+ protected boolean isWrongEntity(String entity) {
+ return !entity.startsWith(SeamPagesConstants.ENT_FILE_SEAM_PAGES);
+ }
+
+ protected void doCreatePages() {
+ if (isAppropriateNature() || true /* JBIDE-541 */) {
+ //TODO restore
+// createGuiPage();
+ treeFormPage = createTreeFormPage();
+ //TODO use constant
+ treeFormPage.setTitle("Seam Pages Editor");
+// treeFormPage.addFilter(constraint);
+ treeFormPage.initialize(getModelObject());
+ addFormPage(treeFormPage);
+ }
+ createTextPage();
+ initEditors();
+ }
+
+ protected String[] getSupportedNatures() {
+ return null;
+ }
+
+ protected String getNatureWarningMessageKey() {
+ return "SharableEditors.natureWarning.jsf.message";
+ }
+
+ protected void createGuiPage() {
+ try{
+ guiEditor = new SeamPagesGuiEditor();
+ guiEditor.init(getEditorSite(), getEditorInput());
+ int index = addPage(guiEditor, input);
+ setPageText(index, "Diagram");
+ guiEditor.setInput(input);
+ selectionProvider.setHost(guiEditor.getSelectionProvider());
+ guiEditor.addErrorSelectionListener(createErrorSelectionListener());
+ selectionProvider.addHost("guiEditor", guiEditor.getSelectionProvider());
+ } catch(Exception ex) {
+ SeamUiPagesPlugin.getDefault().logError(ex);
+ }
+ }
+
+ protected ObjectTextEditor createTextEditor() {
+ return new XMLTextEditorComponent();
+ }
+
+ public void dispose() {
+ super.dispose();
+ if(guiEditor != null) {
+ guiEditor.dispose();
+ guiEditor = null;
+ }
+ }
+
+ protected void setErrorMode() {
+ setNormalMode();
+ }
+
+ protected void setNormalMode() {
+ if(guiEditor != null) {
+ guiEditor.setObject(getModelObject(), isErrorMode());
+ updateSelectionProvider();
+ }
+ if (treeEditor != null) {
+ treeEditor.setObject(object, isErrorMode());
+ }
+ if (treeFormPage != null) {
+ treeFormPage.initialize(getModelObject());
+ treeFormPage.setErrorMode(isErrorMode());
+ }
+ }
+
+ protected int getGuiPageIndex() {
+ return 0;
+ }
+
+ public boolean isGuiEditorActive() {
+ return getActivePage() == getGuiPageIndex();
+ }
+
+ protected void updateSelectionProvider() {
+ if(guiEditor != null) selectionProvider.addHost("guiEditor",
guiEditor.getSelectionProvider());
+ if(textEditor != null) selectionProvider.addHost("textEditor",
getTextSelectionProvider());
+ int index = getActivePage();
+ if(index == getSourcePageIndex()) {
+ if(textEditor != null) {
+ selectionProvider.setHost(getTextSelectionProvider());
+ }
+ return;
+ }
+ if(index == 1 || guiEditor == null || guiEditor.getSelectionProvider() == null) {
+ if (treeEditor != null) {
+ selectionProvider.setHost(treeEditor.getSelectionProvider());
+ treeEditor.fireEditorSelected();
+ }
+ if (treeFormPage != null) {
+ selectionProvider.addHost("treeEditor",
treeFormPage.getSelectionProvider(), true);
+ }
+ } else {
+ ISelectionProvider p = guiEditor.getSelectionProvider();
+ selectionProvider.setHost(p);
+ if(p instanceof AbstractSelectionProvider) {
+ ((AbstractSelectionProvider)p).fireSelectionChanged();
+ }
+ }
+ }
+
+ protected void pageChange(int newPageIndex) {
+ super.pageChange(newPageIndex);
+ if(newPageIndex != getGuiPageIndex()) {
+ } else {
+ }
+ }
+
+ public Object getAdapter(Class adapter) {
+ if(adapter == IContentOutlinePage.class){
+ if(guiEditor == null || guiEditor.getGUI() == null) {
+ return super.getAdapter(adapter);
+ }
+ Object o = guiEditor.getGUI().getAdapter(adapter);
+ if(o instanceof DiagramContentOutlinePage) {
+ DiagramContentOutlinePage g = (DiagramContentOutlinePage)o;
+ g.setTreeOutline(outline);
+ }
+ return o;
+ }
+ if(adapter == ActionRegistry.class || adapter ==
org.eclipse.gef.editparts.ZoomManager.class){
+ if(guiEditor != null)
+ if(guiEditor.getGUI() != null)
+ return guiEditor.getGUI().getAdapter(adapter);
+ }
+ if (adapter == EditorDescriptor.class)
+ return new EditorDescriptor("faces-config");
+
+ if(adapter == SeamPagesEditor.class) return this;
+ return super.getAdapter(adapter);
+ }
+
+}
Added:
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
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/SeamPagesGuiEditor.java 2008-05-26
17:19:49 UTC (rev 8339)
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * 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;
+
+import org.jboss.tools.common.editor.AbstractSectionEditor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.ui.editor.IModelObjectEditorInput;
+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;
+
+public class SeamPagesGuiEditor extends AbstractSectionEditor {
+ private FakePageEditor gui = null;
+ private IModelObjectEditorInput input;
+ private boolean isInitialized = false;
+ private XModelObject installedProcess = null;
+// private JSFModel model;
+
+ public void dispose() {
+// if(model == null) return;
+// model.dispose();
+// model = null;
+ gui.dispose();
+ disposeGui();
+ gui = null;
+ input = null;
+ installedProcess = null;
+ super.dispose();
+ }
+
+ public FakePageEditor getGUI(){
+ return gui;
+ }
+
+ protected boolean isWrongEntity(String entity) {
+ return !entity.startsWith(SeamPagesConstants.ENT_FILE_SEAM_PAGES);
+ }
+
+ public void setInput(IEditorInput input) {
+ super.setInput(input);
+ this.input = (IModelObjectEditorInput)input;
+ }
+
+ public ISelectionProvider getSelectionProvider() {
+ return (gui == null) ? null : gui.getModelSelectionProvider();
+ }
+
+ protected XModelObject getInstalledObject() {
+ return installedProcess;
+ }
+
+ private WebProcess findInstalledObject() {
+ XModelObject o1 = input.getXModelObject();
+ if(o1 == null) return null;
+ XModelObject c = o1.getChildByPath("process");
+ if(!(c instanceof WebProcess)) return null;
+ WebProcess f = (WebProcess)c;
+ return (!f.isPrepared()) ? null : f;
+ }
+
+ protected void updateGui() {
+ WebProcess f = findInstalledObject();
+ if(f != installedProcess) disposeGui();
+ else if(isInitialized) return;
+ isInitialized = true;
+ installedProcess = f;
+ guiControl.setVisible(f != null);
+ if(f == null) return;
+ try {
+ f.autolayout();
+ gui = new FakePageEditor(input);
+// model = new JSFModel(f.getParent());
+// model.updateLinks();
+
+// gui.setJSFModel(model);
+
+// gui.init((IEditorSite)getSite(), (IEditorInput)input);
+// gui.createPartControl(guiControl);
+ control = guiControl.getChildren()[0];
+ control.setLayoutData(new GridData(GridData.FILL_BOTH));
+ guiControl.layout();
+ wrapper.update();
+ wrapper.layout();
+
+ //TODO remove
+ if(false) throw new CoreException(null);
+ } catch (CoreException ex) {
+ SeamUiPagesPlugin.getDefault().logError(ex);
+ }
+ }
+
+ public Object getAdapter(Class adapter) {
+ if(adapter == ActionRegistry.class || adapter ==
org.eclipse.gef.editparts.ZoomManager.class){
+ if(getGUI() != null)
+ return getGUI().getAdapter(adapter);
+ }
+ return super.getAdapter(adapter);
+ }
+
+ public String getTitle() {
+ return "Diagram";
+ }
+
+}