### Eclipse Workspace Patch 1.0 #P org.eclipse.jst.pagedesigner.tests Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorJSP.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorJSP.java,v retrieving revision 1.4 diff -u -r1.4 TestDefaultTagCreatorJSP.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorJSP.java 27 Mar 2009 19:38:30 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorJSP.java 1 May 2009 01:25:36 -0000 @@ -11,7 +11,6 @@ package org.eclipse.jst.pagedesigner.tests.tagcreator; import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory; -import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseTagCreatorTestCase; public class TestDefaultTagCreatorJSP extends BaseDefaultTagCreatorTestCase { @@ -34,7 +33,7 @@ public void testIncludeDirective() throws Exception { - doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jsp", "jsp", 349,false); - doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jspx", "jspx", 492,false); + doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jsp", "jsp", 349,false, null); + doCreateTest(TagIdentifierFactory.createJSPTagWrapper("jsp11", "jsp:directive.include"), "jspx", "jspx", 492,false, null); } } Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ParentCustomization.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ParentCustomization.java,v retrieving revision 1.2 diff -u -r1.2 TestUserCustomizedTagCreatorForJSFHTML_ParentCustomization.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ParentCustomization.java 28 Apr 2009 22:38:26 -0000 1.2 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ParentCustomization.java 1 May 2009 01:25:37 -0000 @@ -1,8 +1,8 @@ package org.eclipse.jst.pagedesigner.tests.tagcreator; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants; import org.eclipse.jst.pagedesigner.itemcreation.customizer.CustomizationDataImpl; +import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; import org.eclipse.jst.pagedesigner.itemcreation.customizer.IWritableCustomizationData; import org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin.UserCustomizedElementEditFactory; @@ -24,14 +24,12 @@ public void testParentTagInsertion() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false, getCustomizationData()); } - - @Override - protected IAdaptable getCustomizationData() + protected ICustomizationData getCustomizationData() { // Setup tag IWritableCustomizationData data = new CustomizationDataImpl(getTagIdentifier()); @@ -63,7 +61,7 @@ IWritableCustomizationData parent2 = new CustomizationDataImpl(UserCustomizedElementEditFactory.TAG3); data.addParentData(parent2); - return (IAdaptable) data; + return data; } Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_GeneralCustomization.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_GeneralCustomization.java,v retrieving revision 1.2 diff -u -r1.2 TestUserCustomizedTagCreatorForJSFHTML_GeneralCustomization.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_GeneralCustomization.java 27 Apr 2009 23:40:06 -0000 1.2 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_GeneralCustomization.java 1 May 2009 01:25:37 -0000 @@ -1,8 +1,8 @@ package org.eclipse.jst.pagedesigner.tests.tagcreator; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants; import org.eclipse.jst.pagedesigner.itemcreation.customizer.CustomizationDataImpl; +import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; import org.eclipse.jst.pagedesigner.itemcreation.customizer.IWritableCustomizationData; import org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin.UserCustomizedElementEditFactory; @@ -25,14 +25,13 @@ public void testGeneralCustomization() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false, getCustomizationData()); } - @Override - protected IAdaptable getCustomizationData() + protected ICustomizationData getCustomizationData() { IWritableCustomizationData tagDropped = new CustomizationDataImpl(UserCustomizedElementEditFactory.TAG1); tagDropped.addAttribute("attr1", "value1"); Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestTagCreationFactory.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestTagCreationFactory.java,v retrieving revision 1.4 diff -u -r1.4 TestTagCreationFactory.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestTagCreationFactory.java 2 May 2008 19:49:06 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestTagCreationFactory.java 1 May 2009 01:25:37 -0000 @@ -4,7 +4,7 @@ * 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: * Oracle Corporation - initial API and implementation *******************************************************************************/ @@ -38,14 +38,14 @@ * @author cbateman * */ -public class TestTagCreationFactory extends BaseTestClass +public class TestTagCreationFactory extends BaseTestClass { public TestTagCreationFactory() { super("jsf"); } @Override - protected void setUp() throws Exception + protected void setUp() throws Exception { super.setUp(); @@ -58,7 +58,7 @@ } @Override - protected void tearDown() throws Exception + protected void tearDown() throws Exception { super.tearDown(); } @@ -72,8 +72,8 @@ CreationData creationData = getCreationData(TestCreationFactory.TAGCREATOR_URI_1 - , "tagWithRequiredAttr", "test", jspFile, 501); - Element element = CommandUtil.excuteInsertion(creationData.getTagEntry() + , "tagWithRequiredAttr", "test", jspFile, 501, null); + Element element = CommandUtil.executeInsertion(creationData.getTagCreationProvider() , creationData.getModel() , creationData.getDomPosition() , creationData.getDropCustomizationData()); @@ -96,18 +96,18 @@ ,"/testEnsureRequiredAttributes2.jsp"); creationData = getCreationData(TestCreationFactory.TAGCREATOR_URI_1 - , "tagWithRequiredAttr2", "test", jspFile, 501); - element = CommandUtil.excuteInsertion(creationData.getTagEntry() + , "tagWithRequiredAttr2", "test", jspFile, 501, null); + element = CommandUtil.executeInsertion(creationData.getTagCreationProvider() , creationData.getModel() , creationData.getDomPosition() , creationData.getDropCustomizationData()); - + // on this tag, the first required attr is set by metadata assertEquals("foobar", element.getAttribute(TestCreationFactory.REQUIRED_ATTR_1)); // the second one is not set by meta-data, but is required and ensure is called // by the custom advisor, so it should be set to empty assertEquals("", element.getAttribute(TestCreationFactory.REQUIRED_ATTR_2)); - + // the optional attribute is not set by meta-data and since it's not required, // the ensure method should not touch it either. assertNull(element.getAttribute("notRequiredAttr1")); @@ -115,15 +115,16 @@ public void testTagCreationMetadata() throws Exception { - IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( + final IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( PageDesignerTestsPlugin.getDefault().getBundle() ,"/testdata/tagcreator/testTagCreation.jsp.data" ,"/testTagCreationMetadata.jsp"); - CreationData creationData = + final CreationData creationData = getCreationData(TestCreationFactory.TAGCREATOR_URI_1 - , "tagWithMetadata", "test", jspFile, 501); - Element element = CommandUtil.excuteInsertion(creationData.getTagEntry() + , "tagWithMetadata", "test", jspFile, 501, null); + final Element element = CommandUtil.executeInsertion( + creationData.getTagCreationProvider() , creationData.getModel() , creationData.getDomPosition() , creationData.getDropCustomizationData()); @@ -155,26 +156,26 @@ */ public void testBug197042() throws Exception { - IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( + final IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( PageDesignerTestsPlugin.getDefault().getBundle() ,"/testdata/tagcreator/tagCreator.jspx.data" ,"/testTagCreationMetadata.jsp"); - final String uri = + final String uri = IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON.getUri(); - final String tagName = + final String tagName = IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON.getTagName(); - CreationData creationData = - getCreationData(uri,tagName,"h", jspFile, 495); + final CreationData creationData = + getCreationData(uri,tagName,"h", jspFile, 495, null); - ITagCreator tagCreator = TagCreationFactory.getInstance() + final ITagCreator tagCreator = TagCreationFactory.getInstance() .createTagCreator(creationData.getTagId()); - Element element = tagCreator.createTag(creationData); + final Element element = tagCreator.createTag(creationData); System.out.println(element.toString()); - ByteArrayOutputStream resultStream = new ByteArrayOutputStream(); + final ByteArrayOutputStream resultStream = new ByteArrayOutputStream(); getDocumentContext(0, jspFile).getModel().save(resultStream); final IPath expectedPath = JSFTestUtil.getAbsolutePath( @@ -188,14 +189,14 @@ public void testDropCustomizerThatCancels() throws Exception { - IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( + final IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( PageDesignerTestsPlugin.getDefault().getBundle() ,"/testdata/tagcreator/tagCreator.jsp.data" ,"/testCustomizerCancel.jsp"); TestCreationFactory.setTestParametersForDropCustomer(Status.CANCEL_STATUS, null); - MockItemCreationTool tool = + final MockItemCreationTool tool = createMockItemCreationTool(jspFile, 358, TestCreationFactory.TAG_WITH_REQUIRED_ATTR, IStatus.CANCEL); tool.customizeDropAndMaybeExecute(0); @@ -206,17 +207,17 @@ @SuppressWarnings("unchecked") public void testDropCustomizationDataAcquistion() throws Exception { - IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( + final IFile jspFile = (IFile) _webProjectTestEnv.loadResourceInWebRoot( PageDesignerTestsPlugin.getDefault().getBundle() ,"/testdata/tagcreator/tagCreator.jsp.data" ,"/testCustomizerCancel.jsp"); - IAdaptable adaptable = new IAdaptable() + final IAdaptable adaptable = new IAdaptable() { - public Object getAdapter(Class adapter) { + public Object getAdapter(final Class adapter) { if (Map.class == adapter) { - HashMap map = new HashMap(); + final HashMap map = new HashMap(); map.put("color", "red"); return map; } @@ -226,27 +227,27 @@ TestCreationFactory.setTestParametersForDropCustomer(Status.OK_STATUS, adaptable); - MockItemCreationTool tool = + final MockItemCreationTool tool = createMockItemCreationTool(jspFile, 358, TestCreationFactory.TAG_WITH_REQUIRED_ATTR, IStatus.CANCEL); tool.customizeDropAndMaybeExecute(0); - Object[] commands = tool.getDomain().getCommandStack().getCommands(); + final Object[] commands = tool.getDomain().getCommandStack().getCommands(); assertEquals(1, commands.length); assertTrue(commands[0] instanceof MockCreateItemCommand); - - IAdaptable value = ((MockCreateItemCommand)commands[0]).getCustomizationDataTesting(); + + final IAdaptable value = ((MockCreateItemCommand)commands[0]).getCustomizationDataTesting(); assertEquals(adaptable, value); - Map map = (Map) value.getAdapter(Map.class); + final Map map = (Map) value.getAdapter(Map.class); assertNotNull(map); assertEquals("red", map.get("color")); } - - private void assertExpectedResult(IFile file, String outExt) throws Exception + + private void assertExpectedResult(final IFile file, final String outExt) throws Exception { final ByteArrayOutputStream resultStream = new ByteArrayOutputStream(); getDocumentContext(0, file).getModel().save(resultStream); - final String expected = + final String expected = getExpectedResult("/testdata/tagcreator/tagCreator."+outExt+".data").trim(); final String result = resultStream.toString("ISO-8859-1").trim(); Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorHTML.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorHTML.java,v retrieving revision 1.4 diff -u -r1.4 TestDefaultTagCreatorHTML.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorHTML.java 27 Mar 2009 19:38:30 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorHTML.java 1 May 2009 01:25:36 -0000 @@ -11,7 +11,6 @@ package org.eclipse.jst.pagedesigner.tests.tagcreator; import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory; -import org.eclipse.jst.pagedesigner.tests.tagcreator.base.BaseTagCreatorTestCase; import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType; /** @@ -40,7 +39,7 @@ public void testCreateButton() throws Exception { - doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "html", "html", 358,false); - doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "xhtml", "xhtml", 350,false); + doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "html", "html", 358,false, null); + doCreateTest(TagIdentifierFactory.createJSPTagWrapper(CMDocType.HTML_DOC_TYPE, "INPUT.BUTTON"), "xhtml", "xhtml", 350,false, null); } } Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/BaseUserCustomizedTagCreatorTestCase.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/BaseUserCustomizedTagCreatorTestCase.java,v retrieving revision 1.1 diff -u -r1.1 BaseUserCustomizedTagCreatorTestCase.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/BaseUserCustomizedTagCreatorTestCase.java 27 Mar 2009 19:38:30 -0000 1.1 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/BaseUserCustomizedTagCreatorTestCase.java 1 May 2009 01:25:36 -0000 @@ -1,6 +1,8 @@ package org.eclipse.jst.pagedesigner.tests.tagcreator; import org.eclipse.jst.jsf.common.dom.TagIdentifier; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.TagToolCreationAdapter; import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager; import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; @@ -63,20 +65,26 @@ return new UserCustomizedTagCreator(); } - - /** - * Adds a tag to a section in the tool palette. - * - * @param tagId - * TagIdentifier of tag to add - * @param category - * Category in the tool palette - * - */ - private final void addTagToPaletteCategory(final TagIdentifier tagId, final TaglibPaletteDrawer category) - { - final TagToolPaletteEntry paletteItem = new TagToolPaletteEntry(tagId.getTagName(), TAG_LABEL, TAG_DESCRIPTION_SHORT, null, null); - category.getChildren().add(paletteItem); - paletteItem.setParent(category); - } + + /** + * Adds a tag to a section in the tool palette. + * + * @param tagId + * TagIdentifier of tag to add + * @param category + * Category in the tool palette + * + */ + @SuppressWarnings("unchecked") + private final void addTagToPaletteCategory(final TagIdentifier tagId, + final TaglibPaletteDrawer category) + { + final ITagDropSourceData tagDropSourceData = new TagToolCreationAdapter( + tagId.getUri(), tagId.getTagName(), + category.getDefaultPrefix(), tagId.getTagName()); + final TagToolPaletteEntry paletteItem = new TagToolPaletteEntry( + tagDropSourceData, TAG_LABEL, TAG_DESCRIPTION_SHORT, null, null); + category.getChildren().add(paletteItem); + paletteItem.setParent(category); + } } Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFHTML.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFHTML.java,v retrieving revision 1.4 diff -u -r1.4 TestDefaultTagCreatorForJSFHTML.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFHTML.java 27 Mar 2009 19:38:30 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFHTML.java 1 May 2009 01:25:36 -0000 @@ -33,119 +33,119 @@ public void testCreateButton() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358,false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495,false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358,false, null); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495,false, null); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350,false, null); } public void testCreateCommandLink() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDLINK, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDLINK, "jsp", "jsp", 358,false, null); } public void testCreatePanelGrid() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GRID, "jsp", "jsp", 358,false, null); } public void testCreateDataTable() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_DATA_TABLE, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_DATA_TABLE, "jsp", "jsp", 358,false, null); } public void testCreateForm() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_FORM, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_FORM, "jsp", "jsp", 358,false, null); } public void testCreateGraphicImage() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_GRAPHICIMAGE, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_GRAPHICIMAGE, "jsp", "jsp", 358,false, null); } public void testCreateInputHidden() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTHIDDEN, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTHIDDEN, "jsp", "jsp", 358,false, null); } public void testCreateMessage() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGE, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGE, "jsp", "jsp", 358,false, null); } public void testCreateMessages() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGES, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_MESSAGES, "jsp", "jsp", 358,false, null); } public void testCreateOutputFormat() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTFORMAT, "jsp", "jsp", 358,true); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTFORMAT, "jsp", "jsp", 358,true, null); } public void testCreateOutputLabel() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTLABEL, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTLABEL, "jsp", "jsp", 358,false, null); } public void testCreateOutputText() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTTEXT, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_OUTPUTTEXT, "jsp", "jsp", 358,false, null); } public void testCreatePanelGroup() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GROUP, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_PANEL_GROUP, "jsp", "jsp", 358,false, null); } public void testCreateInputSecret() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTSECRET, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTSECRET, "jsp", "jsp", 358,false, null); } public void testCreateSelectBooleanCheckbox() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTBOOLEANCHECKBOX, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTBOOLEANCHECKBOX, "jsp", "jsp", 358,false, null); } public void testCreateSelectManyCheckbox() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYCHECKBOX, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYCHECKBOX, "jsp", "jsp", 358,false, null); } public void testCreateSelectManyListbox() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYLISTBOX, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYLISTBOX, "jsp", "jsp", 358,false, null); } public void testCreateSelectManyMenu() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYMENU, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTMANYMENU, "jsp", "jsp", 358,false, null); } public void testCreateSelectOneListbox() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONELISTBOX, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONELISTBOX, "jsp", "jsp", 358,false, null); } public void testCreateSelectOneMenu() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONEMENU, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONEMENU, "jsp", "jsp", 358,false, null); } public void testCreateSelectOneRadio() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONERADIO, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTONERADIO, "jsp", "jsp", 358,false, null); } public void testCreateInputText() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXT, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXT, "jsp", "jsp", 358,false, null); } public void testCreateInputTextArea() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXTAREA, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_INPUTTEXTAREA, "jsp", "jsp", 358,false, null); } } \ No newline at end of file Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_AttributeCustomization.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_AttributeCustomization.java,v retrieving revision 1.2 diff -u -r1.2 TestUserCustomizedTagCreatorForJSFHTML_AttributeCustomization.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_AttributeCustomization.java 27 Apr 2009 23:40:06 -0000 1.2 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_AttributeCustomization.java 1 May 2009 01:25:37 -0000 @@ -1,8 +1,8 @@ package org.eclipse.jst.pagedesigner.tests.tagcreator; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants; import org.eclipse.jst.pagedesigner.itemcreation.customizer.CustomizationDataImpl; +import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; import org.eclipse.jst.pagedesigner.itemcreation.customizer.IWritableCustomizationData; /** @@ -23,20 +23,19 @@ public void testAttributeInsertion() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false, getCustomizationData()); } - @Override - protected IAdaptable getCustomizationData() + protected ICustomizationData getCustomizationData() { // Setup tag IWritableCustomizationData data = new CustomizationDataImpl(getTagIdentifier()); data.addAttribute("attr1", "value1"); - return (IAdaptable) data; + return data; } Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ChildCustomization.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ChildCustomization.java,v retrieving revision 1.2 diff -u -r1.2 TestUserCustomizedTagCreatorForJSFHTML_ChildCustomization.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ChildCustomization.java 27 Apr 2009 23:40:06 -0000 1.2 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestUserCustomizedTagCreatorForJSFHTML_ChildCustomization.java 1 May 2009 01:25:37 -0000 @@ -1,8 +1,8 @@ package org.eclipse.jst.pagedesigner.tests.tagcreator; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants; import org.eclipse.jst.pagedesigner.itemcreation.customizer.CustomizationDataImpl; +import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; import org.eclipse.jst.pagedesigner.itemcreation.customizer.IWritableCustomizationData; import org.eclipse.jst.pagedesigner.tests.tagcreatorPlugin.UserCustomizedElementEditFactory; @@ -24,14 +24,13 @@ public void testChildTagInsertion() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false); - doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jsp", "jsp", 358, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "jspx", "jspx", 495, false, getCustomizationData()); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_COMMANDBUTTON, "xhtml", "xhtml", 350, false, getCustomizationData()); } - @Override - protected IAdaptable getCustomizationData() + protected ICustomizationData getCustomizationData() { // Setup tag IWritableCustomizationData tagDropped = new CustomizationDataImpl(getTagIdentifier()); Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFCore.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFCore.java,v retrieving revision 1.4 diff -u -r1.4 TestDefaultTagCreatorForJSFCore.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFCore.java 27 Mar 2009 19:38:30 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/TestDefaultTagCreatorForJSFCore.java 1 May 2009 01:25:36 -0000 @@ -33,21 +33,21 @@ public void testCreateActionListener() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_ACTIONLISTENER, "jsp", "jsp", 358, false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_ACTIONLISTENER, "jsp", "jsp", 358, false, null); } public void testCreateAttribute() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_ATTRIBUTE, "jsp", "jsp", 358, false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_ATTRIBUTE, "jsp", "jsp", 358, false, null); } public void testCreateConvertDateTime() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTDATETIME, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTDATETIME, "jsp", "jsp", 358,false, null); } public void testCreateConvertNumber() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTNUMBER, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTNUMBER, "jsp", "jsp", 358,false, null); } /** @@ -55,7 +55,7 @@ */ public void testCreateConverter() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTER, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_CONVERTER, "jsp", "jsp", 358,false, null); } /** @@ -63,7 +63,7 @@ */ public void testCreateFacet() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_FACET, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_FACET, "jsp", "jsp", 358,false, null); } /** @@ -71,7 +71,7 @@ */ public void testCreateLoadBundle() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_LOADBUNDLE, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_LOADBUNDLE, "jsp", "jsp", 358,false, null); } /** @@ -79,7 +79,7 @@ */ public void testCreateParam() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_PARAM, "jsp", "jsp", 358,true); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_PARAM, "jsp", "jsp", 358,true, null); } /** @@ -87,7 +87,7 @@ */ public void testCreateSelectItem() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEM, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEM, "jsp", "jsp", 358,false, null); } /** @@ -95,7 +95,7 @@ */ public void testCreateSelectItems() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEMS, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SELECTITEMS, "jsp", "jsp", 358,false, null); } /** @@ -103,7 +103,7 @@ */ public void testCreateSubview() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_SUBVIEW, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_SUBVIEW, "jsp", "jsp", 358,false, null); } /** @@ -111,7 +111,7 @@ */ public void testCreateValidateDoubleRange() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATEDOUBLERANGE, "jsp", "jsp", 358,true); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATEDOUBLERANGE, "jsp", "jsp", 358,true, null); } /** @@ -119,7 +119,7 @@ */ public void testCreateValidateLength() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELENGTH, "jsp", "jsp", 358,true); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELENGTH, "jsp", "jsp", 358,true, null); } /** @@ -127,7 +127,7 @@ */ public void testCreateValidateLongRange() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELONGRANGE, "jsp", "jsp", 358,true); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATELONGRANGE, "jsp", "jsp", 358,true, null); } /** @@ -135,7 +135,7 @@ */ public void testCreateValidator() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATOR, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALIDATOR, "jsp", "jsp", 358,false, null); } /** @@ -143,7 +143,7 @@ */ public void testCreateValueChangeListener() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALUECHANGELISTENER, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_VALUECHANGELISTENER, "jsp", "jsp", 358,false, null); } /** @@ -151,7 +151,7 @@ */ public void testCreateVerbatim() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_VERBATIM, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_VERBATIM, "jsp", "jsp", 358,false, null); } /** @@ -159,7 +159,7 @@ */ public void testCreateView() throws Exception { - doCreateTest(IJSFConstants.TAG_IDENTIFIER_VIEW, "jsp", "jsp", 358,false); + doCreateTest(IJSFConstants.TAG_IDENTIFIER_VIEW, "jsp", "jsp", 358,false, null); } } Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTestClass.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTestClass.java,v retrieving revision 1.7 diff -u -r1.7 BaseTestClass.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTestClass.java 27 Mar 2009 19:38:30 -0000 1.7 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTestClass.java 1 May 2009 01:25:37 -0000 @@ -18,7 +18,6 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.gef.EditDomain; @@ -41,6 +40,7 @@ import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager; import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; import org.eclipse.jst.pagedesigner.itemcreation.CreationData; +import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; import org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin; import org.eclipse.wst.html.core.internal.document.DOMStyleModelImpl; import org.eclipse.wst.html.core.internal.format.HTMLFormatProcessorImpl; @@ -49,8 +49,6 @@ import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.eclipse.wst.xml.core.internal.document.ElementImpl; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; public class BaseTestClass extends TestCase @@ -90,16 +88,9 @@ .getTestProject()); } - - protected IAdaptable getCustomizationData() - { - return null; - } - - protected CreationData getCreationData(final String uri, final String tagName, final String defaultPrefix, final IFile file, - final int offset) throws Exception + final int offset, final ICustomizationData customizationData) throws Exception { final ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper .createMetaDataModelContext( @@ -116,12 +107,12 @@ assertEquals(Node.TEXT_NODE, node.getNodeType()); final DOMPosition domPosition = new DOMPosition(node, 0); - - return new CreationData(entry, (IDOMModel) context.getModel(), - domPosition, modelContext, getCustomizationData()); + final IDOMModel model =(IDOMModel) context.getModel(); + return new CreationData(entry.getTemplate(), model, + domPosition, modelContext, customizationData); } - protected TagToolPaletteEntry createPaletteEntry(final String uri, + private TagToolPaletteEntry createPaletteEntry(final String uri, final String tagName) { final TaglibPaletteDrawer drawer = _manager @@ -140,7 +131,7 @@ return entry; } - protected TagToolPaletteEntry createNonNullPaletteEntry(final String uri, + private TagToolPaletteEntry createNonNullPaletteEntry(final String uri, final String tagName) { final TagToolPaletteEntry entry = createPaletteEntry(uri, tagName); @@ -284,10 +275,10 @@ final int offset, final TagIdentifier tagId, final int expectedResult) throws Exception { + final TagToolPaletteEntry toolEntry = createNonNullPaletteEntry(tagId .getUri(), tagId.getTagName()); - - final MockItemCreationTool tool = new MockItemCreationTool(toolEntry); + final MockItemCreationTool tool = new MockItemCreationTool(toolEntry.getTemplate()); final ContextWrapper wrapper = getDocumentContext(offset, file); final IDOMContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE @@ -297,7 +288,7 @@ final DOMPosition domPosition = new DOMPosition(resolver.getNode(), 0); final MockCreateItemCommand command = new MockCreateItemCommand( - "Test Command", (IDOMModel) model, domPosition, toolEntry); + "Test Command", (IDOMModel) model, domPosition, toolEntry.getTemplate()); tool.setEditDomain(new EditDomain()); tool.setCurrentCommand(command); @@ -323,25 +314,6 @@ (element).setEmptyTag(true); (element).removeChildNodes(); final Node copy = (element).cloneNode(false); - - /* - * ElementImpl.cloneNode(...) seems to have started creating - * attributes that display differently than the cloned Node's - * (attr='' rather than attr=""), breaking textual comparisons. - * By overwriting the existing attributes after cloning, we get the - * expected form (double quotes instead of single quotes). - * - * - Ian Trimble, 20090305 - */ - if (element.hasAttributes() && copy instanceof Element) { - NamedNodeMap attrMap = element.getAttributes(); - for (int i = 0; i < attrMap.getLength(); i++) { - Node attrNode = attrMap.item(i); - ((Element)copy).setAttribute( - attrNode.getNodeName(), attrNode.getNodeValue()); - } - } - element.getParentNode().replaceChild(copy, element); } } Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockCreateItemCommand.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockCreateItemCommand.java,v retrieving revision 1.3 diff -u -r1.3 MockCreateItemCommand.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockCreateItemCommand.java 2 May 2008 19:49:06 -0000 1.3 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockCreateItemCommand.java 1 May 2009 01:25:37 -0000 @@ -16,7 +16,7 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jst.pagedesigner.commands.CreateItemCommand; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -24,8 +24,8 @@ public class MockCreateItemCommand extends CreateItemCommand { public MockCreateItemCommand(String label, IDOMModel model, - IDOMPosition position, TagToolPaletteEntry tagItem) { - super(label, model, position, tagItem); + IDOMPosition position, ITagDropSourceData tagDropSourceData) { + super(label, model, position, tagDropSourceData); } @Override Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTagCreatorTestCase.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTagCreatorTestCase.java,v retrieving revision 1.4 diff -u -r1.4 BaseTagCreatorTestCase.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTagCreatorTestCase.java 27 Mar 2009 19:38:30 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/BaseTagCreatorTestCase.java 1 May 2009 01:25:37 -0000 @@ -13,6 +13,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.jst.jsf.common.dom.TagIdentifier; import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator; +import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; import org.eclipse.jst.pagedesigner.tests.PageDesignerTestsPlugin; import org.eclipse.wst.xml.core.internal.document.ElementImpl; import org.w3c.dom.Element; @@ -50,16 +51,17 @@ /** * @param tagId - * @param inExt - * @param outExt - * @param offset - * @param forceResultTagEmpty this is a workaround flag due to the fact that some + * @param inExt + * @param outExt + * @param offset + * @param forceResultTagEmpty this is a workaround flag due to the fact that some * TLD body definitions differ between RI and MyFaces, causing some tags to be * generated as in RI and in MyFaces. NEVER SET TO TRUE ON A TAG ID * whose instances may have child elements. + * @param customizationData TODO * @throws Exception */ - protected final void doCreateTest(final TagIdentifier tagId, final String inExt, final String outExt, int offset, boolean forceResultTagEmpty) throws Exception + protected final void doCreateTest(final TagIdentifier tagId, final String inExt, final String outExt, int offset, boolean forceResultTagEmpty, ICustomizationData customizationData) throws Exception { final String uri = tagId.getUri(); final String tagName = tagId.getTagName(); @@ -69,12 +71,12 @@ "/testdata/tagcreator/tagCreator."+inExt+".data", "/tagCreator_"+tagName+"."+inExt); setTagIdentifier(tagId); - + ITagCreator tagCreator = getTagCreator(getTagIdentifier()); - + Element element = tagCreator.createTag(getCreationData(uri, tagName, - _defaultPrefix, file, offset)); - + _defaultPrefix, file, offset, customizationData)); + // this is a hack that is required because we do a literal comparison // between the modified source file and test data file on a character // by character basis. However, the MyFaces and RI (and possibly other) Index: src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockItemCreationTool.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockItemCreationTool.java,v retrieving revision 1.3 diff -u -r1.3 MockItemCreationTool.java --- src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockItemCreationTool.java 2 May 2008 19:49:06 -0000 1.3 +++ src/org/eclipse/jst/pagedesigner/tests/tagcreator/base/MockItemCreationTool.java 1 May 2009 01:25:37 -0000 @@ -16,15 +16,15 @@ import org.eclipse.gef.EditDomain; import org.eclipse.gef.commands.Command; import org.eclipse.jst.pagedesigner.commands.CreateItemCommand; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; import org.eclipse.jst.pagedesigner.itemcreation.ItemCreationTool; public class MockItemCreationTool extends ItemCreationTool { private Command _cached = null; - public MockItemCreationTool(TagToolPaletteEntry tagToolPaletteEntryItem) { - super(tagToolPaletteEntryItem); + public MockItemCreationTool(ITagDropSourceData tagDropSourceData) { + super(tagDropSourceData); } @Override Index: src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/BasicTabbedPropertyPageTests.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/tests/org.eclipse.jst.pagedesigner.tests/src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/BasicTabbedPropertyPageTests.java,v retrieving revision 1.4 diff -u -r1.4 BasicTabbedPropertyPageTests.java --- src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/BasicTabbedPropertyPageTests.java 5 Feb 2009 22:44:01 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/tests/tabbed/properties/sections/BasicTabbedPropertyPageTests.java 1 May 2009 01:25:36 -0000 @@ -50,7 +50,7 @@ ISelection sel = getSelection(node); view.getViewSite().getSelectionProvider().setSelection(sel); ISelection selection = view.getViewSite().getSelectionProvider().getSelection(); - assertEquals(sel, selection); + assertEquals(sel, selection); } catch(Exception ex) { ex.printStackTrace(); #P org.eclipse.jst.pagedesigner Index: src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java,v retrieving revision 1.7 diff -u -r1.7 CommandUtil.java --- src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java 18 Nov 2008 22:22:43 -0000 1.7 +++ src/org/eclipse/jst/pagedesigner/utils/CommandUtil.java 1 May 2009 01:25:41 -0000 @@ -22,7 +22,8 @@ import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory; import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; import org.eclipse.jst.pagedesigner.itemcreation.CreationData; import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator; import org.eclipse.jst.pagedesigner.itemcreation.internal.TagCreationFactory; @@ -34,52 +35,89 @@ * @author mengbo * @version 1.5 */ -public class CommandUtil { - private static final Logger _log = PDPlugin.getLogger(CommandUtil.class); - - /** - * @param tagItem - * @param model - * @param domPosition - * @param customizationData - * @return the element inserted or null if failed - */ - public static Element excuteInsertion(TagToolPaletteEntry tagItem, - IDOMModel model, IDOMPosition domPosition, IAdaptable customizationData) { - try - { - IStructuredDocument doc = model.getDocument().getStructuredDocument(); - - IStructuredDocumentContext context = - IStructuredDocumentContextFactory.INSTANCE.getContext(doc, -1); - IWorkspaceContextResolver resolver = - IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(context); - - IProject project = resolver.getProject(); - - final ITaglibDomainMetaDataModelContext modelContext = - TaglibDomainMetaDataQueryHelper - .createMetaDataModelContext(project, tagItem.getURI()); +public class CommandUtil +{ + private static final Logger _log = PDPlugin.getLogger(CommandUtil.class); + + /** + * @param dropSourceData + * @param model + * @param domPosition + * @param customizationData + * @return the element inserted or null if failed + */ + public static Element executeInsertion( + final IDropSourceData dropSourceData, final IDOMModel model, + final IDOMPosition domPosition, final IAdaptable customizationData) + { + try + { + final ITaglibDomainMetaDataModelContext modelContext = getMetadataContext( + dropSourceData.getURI(), model); + + ITagDropSourceData tagDropSourceData = null; + + if (dropSourceData instanceof ITagDropSourceData) + { + tagDropSourceData = (ITagDropSourceData) dropSourceData; + } else if (customizationData != null) + { + tagDropSourceData = (ITagDropSourceData) customizationData + .getAdapter(ITagDropSourceData.class); + } + + if (tagDropSourceData == null) + { + PDPlugin + .log( + "Could not down cast dropSourceData to tagDropSourceData", new Exception("for stack trace only")); //$NON-NLS-1$//$NON-NLS-2$ + } // TODO: note that the constructor currently causes the prefix defn - // to be added to the target doc. This should be moved into + // to be added to the target doc. This should be moved into // an ensure method in the AbstractTagCreator - final CreationData creationData = - new CreationData(tagItem, model, domPosition, modelContext, customizationData); - - ITagCreator tagCreator = - TagCreationFactory.getInstance().createTagCreator(creationData.getTagId()); - - if (tagCreator == null) - { - return null;//should never get here! - } - - return tagCreator.createTag(creationData); - } catch (Exception e) { - _log.error("Problem creating tag "+tagItem.getTagName()+" at:" + domPosition + "\n", e); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } + final CreationData creationData = new CreationData( + tagDropSourceData, model, domPosition, modelContext, + customizationData); + + final ITagCreator tagCreator = TagCreationFactory.getInstance() + .createTagCreator(creationData.getTagId()); + + if (tagCreator == null) + { + return null;// should never get here! + } + + return tagCreator.createTag(creationData); + } catch (Exception e) + { + _log + .error( + "Problem creating tag " + dropSourceData.getTagName() + " at:" + domPosition + "\n", e); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } return null; - } + } + /** + * @param uri + * @param model + * @return the metadata context for uri in the DOM model or null if none. + */ + public static ITaglibDomainMetaDataModelContext getMetadataContext( + final String uri, final IDOMModel model) + { + final IStructuredDocument doc = model.getDocument() + .getStructuredDocument(); + + final IStructuredDocumentContext context = IStructuredDocumentContextFactory.INSTANCE + .getContext(doc, -1); + final IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE + .getWorkspaceContextResolver(context); + + final IProject project = resolver.getProject(); + + final ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper + .createMetaDataModelContext(project, uri); + return modelContext; + } } Index: src/org/eclipse/jst/pagedesigner/itemcreation/CreationData.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/CreationData.java,v retrieving revision 1.5 diff -u -r1.5 CreationData.java --- src/org/eclipse/jst/pagedesigner/itemcreation/CreationData.java 11 Feb 2009 19:02:45 -0000 1.5 +++ src/org/eclipse/jst/pagedesigner/itemcreation/CreationData.java 1 May 2009 01:25:40 -0000 @@ -20,11 +20,8 @@ import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper; import org.eclipse.jst.jsf.core.internal.tld.ITLDConstants; import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory; -import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.PaletteInfo; -import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.PaletteInfos; -import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.TagCreationInfo; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; import org.eclipse.jst.pagedesigner.utils.JSPUtil; import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; @@ -39,12 +36,12 @@ */ public final class CreationData { - private final TagToolPaletteEntry _tagEntry; + private final ITagDropSourceData _creationProvider; private final String _prefix; private final IDOMPosition _domPosition; private final IDOMModel _model; private final IAdaptable _customizationData; - + private TagIdentifier _tagId; // = null; lazy init on creation /** @@ -63,16 +60,19 @@ /** - * @param tagEntry TODO: remove this direct dependence on the palette + * @param creationProvider * @param model * @param domPosition * @param taglibMetaDataContext * @param customizationData */ - public CreationData(final TagToolPaletteEntry tagEntry, final IDOMModel model, final IDOMPosition domPosition, final ITaglibDomainMetaDataModelContext taglibMetaDataContext, final IAdaptable customizationData) + public CreationData(final ITagDropSourceData creationProvider, + final IDOMModel model, final IDOMPosition domPosition, + final ITaglibDomainMetaDataModelContext taglibMetaDataContext, + final IAdaptable customizationData) { super(); - this._tagEntry = tagEntry; + this._creationProvider = creationProvider; this._prefix = getPrefix(getUri(), model, getDefaultPrefix()); this._taglibMetaDataContext = taglibMetaDataContext; this._domPosition = domPosition; @@ -105,14 +105,14 @@ * @return the tag identifier uri */ public String getUri() { - return _tagEntry.getURI(); + return _creationProvider.getURI(); } /** * @return the default prefix */ public String getDefaultPrefix() { - return _tagEntry.getDefaultPrefix(); + return _creationProvider.getDefaultPrefix(); } /** @@ -126,50 +126,17 @@ * @return the tag name */ public String getTagName() { - return _tagEntry.getTagName(); + return _creationProvider.getTagName(); } /** - * @return the id - */ - private String getItemId() { - return _tagEntry.getId(); - } - - /** - * @return the palette entry that this creation info is based on - */ - public TagToolPaletteEntry getTagEntry() { - return _tagEntry; - } - - /** - * @return {@link TagCreationInfo} for the tag entity + * @return the creation provider */ - public TagCreationInfo getTagCreationInfo(){ - Model model = TaglibDomainMetaDataQueryHelper.getModel(_taglibMetaDataContext); - if (model != null){ - Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(model, PaletteInfos.TRAIT_ID); - if (trait != null){ - PaletteInfos pis = (PaletteInfos)trait.getValue(); - PaletteInfo pi = pis.findPaletteInfoById(getItemId()); - if (pi != null){ - return pi.getTagCreation(); - } - } - //tag-creation trait on entity directly? - Entity tag = getTagEntity(); - if (tag != null){//metadata exists - trait = TaglibDomainMetaDataQueryHelper.getTrait(tag, "tag-create"); //$NON-NLS-1$ - if (trait != null && trait.getValue() != null){ - return (TagCreationInfo)trait.getValue(); - } - } - } - return null; + public ITagDropSourceData getTagCreationProvider() + { + return _creationProvider; } - /** * @return the {@link Entity} for this tag element being created */ Index: src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationTool.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationTool.java,v retrieving revision 1.10 diff -u -r1.10 ItemCreationTool.java --- src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationTool.java 4 Nov 2008 01:15:44 -0000 1.10 +++ src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationTool.java 1 May 2009 01:25:41 -0000 @@ -18,7 +18,7 @@ import org.eclipse.gef.commands.Command; import org.eclipse.gef.tools.TargetingTool; import org.eclipse.jst.pagedesigner.commands.CreateItemCommand; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; import org.eclipse.jst.pagedesigner.itemcreation.customizer.DropCustomizationController; import org.eclipse.swt.graphics.Cursor; @@ -32,17 +32,17 @@ * @author mengbo */ public class ItemCreationTool extends TargetingTool { - TagToolPaletteEntry _tagPaletteItem; //can we get rid of this? + private final ITagDropSourceData _tagDropSourceData; //can we get rid of this? /** * Default constructor. Sets the default and disabled cursors. - * @param tagToolPaletteEntryItem + * @param tagDropSourceData */ - public ItemCreationTool(TagToolPaletteEntry tagToolPaletteEntryItem) { + public ItemCreationTool(ITagDropSourceData tagDropSourceData) { setDefaultCursor(SharedCursors.CURSOR_TREE_ADD); setDisabledCursor(SharedCursors.NO); - this._tagPaletteItem = tagToolPaletteEntryItem; + this._tagDropSourceData = tagDropSourceData; } /** @@ -69,7 +69,7 @@ */ protected Request createTargetRequest() { ItemCreationRequest request = new ItemCreationRequest(); - request.setTagToolPaletteEntry(_tagPaletteItem); + request.setTagCreationProvider(_tagDropSourceData); return request; } @@ -168,7 +168,7 @@ if (command instanceof CreateItemCommand) { status = new DropCustomizationController((CreateItemCommand) command, - _tagPaletteItem.getURI(), _tagPaletteItem.getTagName(), + _tagDropSourceData, ((CreateItemCommand)command).getDocument(), ((CreateItemCommand)command).getPosition()). performCustomization(); Index: src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationRequest.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationRequest.java,v retrieving revision 1.5 diff -u -r1.5 ItemCreationRequest.java --- src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationRequest.java 18 Nov 2008 22:22:51 -0000 1.5 +++ src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationRequest.java 1 May 2009 01:25:40 -0000 @@ -14,7 +14,8 @@ import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.Request; import org.eclipse.gef.requests.DropRequest; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; /** * Tag tool item creation request class @@ -29,7 +30,7 @@ /** * Constant used for tag tool item */ - public static final String TAG_TOOL_PALETTE_ENTRY = "TagToolPaletteEntry"; //$NON-NLS-1$ + private static final String DROP_SOURCE_DATA = "TagToolPaletteEntry"; //$NON-NLS-1$ /** * Constant used for location during creation request */ @@ -43,14 +44,6 @@ super(REQ_ITEM_CREATION); } - /** - * Constructor - * @param type - */ - public ItemCreationRequest(Object type) { - super(type); - } - /* * (non-Javadoc) * @@ -73,18 +66,18 @@ /** * Set the tag tool item for creation request - * @param tagToolPaletteEntryItem + * @param creationProvider */ - public void setTagToolPaletteEntry(TagToolPaletteEntry tagToolPaletteEntryItem) { - getExtendedData().remove(TAG_TOOL_PALETTE_ENTRY); - getExtendedData().put(TAG_TOOL_PALETTE_ENTRY, tagToolPaletteEntryItem); + public void setTagCreationProvider(final IDropSourceData creationProvider) { + getExtendedData().remove(DROP_SOURCE_DATA); + getExtendedData().put(DROP_SOURCE_DATA, creationProvider); } /** - * @return {@link TagToolPaletteEntry} requesting creation + * @return {@link ITagDropSourceData} requesting creation */ - public TagToolPaletteEntry getTagToolPaletteEntry() { - return (TagToolPaletteEntry)getExtendedData().get(TAG_TOOL_PALETTE_ENTRY); + public IDropSourceData getTagCreationProvider() { + return (IDropSourceData)getExtendedData().get(DROP_SOURCE_DATA); } } Index: src/org/eclipse/jst/pagedesigner/itemcreation/UserCustomizedTagCreationAdvisor.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/UserCustomizedTagCreationAdvisor.java,v retrieving revision 1.1 diff -u -r1.1 UserCustomizedTagCreationAdvisor.java --- src/org/eclipse/jst/pagedesigner/itemcreation/UserCustomizedTagCreationAdvisor.java 4 Nov 2008 01:15:44 -0000 1.1 +++ src/org/eclipse/jst/pagedesigner/itemcreation/UserCustomizedTagCreationAdvisor.java 1 May 2009 01:25:41 -0000 @@ -72,12 +72,12 @@ if (isFirstParent) { - command = new UserCustomizedContainerCreationCommand(position, parentTagIdentifier, _creationData.getTagId(), (IAdaptable) parentCustomizationData); + command = new UserCustomizedContainerCreationCommand(position, parentTagIdentifier, _creationData.getTagId(), parentCustomizationData); isFirstParent = false; } else { - command.chain(new UserCustomizedContainerCreationCommand(position, parentTagIdentifier, _creationData.getTagId(), (IAdaptable) parentCustomizationData)); + command.chain(new UserCustomizedContainerCreationCommand(position, parentTagIdentifier, _creationData.getTagId(), parentCustomizationData)); } } return command; Index: src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java,v retrieving revision 1.6 diff -u -r1.6 ItemCreationEditPolicy.java --- src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java 4 Sep 2007 18:13:52 -0000 1.6 +++ src/org/eclipse/jst/pagedesigner/itemcreation/ItemCreationEditPolicy.java 1 May 2009 01:25:40 -0000 @@ -53,10 +53,11 @@ if (domposition == null) { return null; } +// TagToolCreationAdapter tagToolCreationAdapter = new TagToolCreationAdapter(r.getTagToolPaletteEntry(), getViewer(getHost()).getModel()); return new CreateItemCommand( PDPlugin .getResourceString("ItemCreationEditPolicy.CommandLabel.CreateItem"),//$NON-NLS-1$ - getViewer(getHost()).getModel(), domposition, r.getTagToolPaletteEntry()); + getViewer(getHost()).getModel(), domposition, r.getTagCreationProvider()); } return null; } Index: src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerTemplateTransferDragSourceListener.java =================================================================== RCS file: src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerTemplateTransferDragSourceListener.java diff -N src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerTemplateTransferDragSourceListener.java --- src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerTemplateTransferDragSourceListener.java 28 Feb 2007 05:04:41 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.pagedesigner.dnd.internal; - -import java.util.List; - -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPartViewer; -import org.eclipse.gef.dnd.TemplateTransferDragSourceListener; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; - -/** - * @author mengbo - */ -public class DesignerTemplateTransferDragSourceListener extends - TemplateTransferDragSourceListener { - - /** - * @param viewer - */ - public DesignerTemplateTransferDragSourceListener(EditPartViewer viewer) { - super(viewer); - } - - protected Object getTemplate() { - Object object = super.getTemplate(); - if (object == null) { - List selection = getViewer().getSelectedEditParts(); - if (selection.size() == 1) { - EditPart editpart = (EditPart) getViewer() - .getSelectedEditParts().get(0); - Object model = editpart.getModel(); - if (model instanceof TagToolPaletteEntry) { - return model; - } - } - } - return null; - } -} Index: src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceDropTargetListener.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceDropTargetListener.java,v retrieving revision 1.3 diff -u -r1.3 DesignerSourceDropTargetListener.java --- src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceDropTargetListener.java 10 Oct 2007 00:05:15 -0000 1.3 +++ src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceDropTargetListener.java 1 May 2009 01:25:40 -0000 @@ -15,7 +15,7 @@ import org.eclipse.gef.dnd.TemplateTransfer; import org.eclipse.jst.pagedesigner.commands.PaletteDropInsertCommand; import org.eclipse.jst.pagedesigner.editors.pagedesigner.PageDesignerResources; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceDataProvider; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.TextTransfer; @@ -125,14 +125,15 @@ event.currentDataType)) { Object data = event.data; PaletteDropInsertCommand command = null; - if (data instanceof TagToolPaletteEntry) { - TagToolPaletteEntry tagItem = (TagToolPaletteEntry) data; + if (data instanceof IDropSourceDataProvider) { + IDropSourceDataProvider provider = (IDropSourceDataProvider) data; + // "Create new item" command = new PaletteDropInsertCommand( PageDesignerResources .getInstance() .getString( - "DesignerSourceDropTargetListener.InserCommandLabel"), _textEditor, tagItem, _location); //$NON-NLS-1$ + "DesignerSourceDropTargetListener.InserCommandLabel"), _textEditor, provider.getDropSourceData(), _location); //$NON-NLS-1$ } return command; } Index: src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceMouseTrackAdapter.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceMouseTrackAdapter.java,v retrieving revision 1.6 diff -u -r1.6 DesignerSourceMouseTrackAdapter.java --- src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceMouseTrackAdapter.java 18 Nov 2008 22:22:54 -0000 1.6 +++ src/org/eclipse/jst/pagedesigner/dnd/internal/DesignerSourceMouseTrackAdapter.java 1 May 2009 01:25:40 -0000 @@ -16,7 +16,7 @@ import org.eclipse.jst.pagedesigner.commands.PaletteDropInsertCommand; import org.eclipse.jst.pagedesigner.commands.SourceViewerCommand; import org.eclipse.jst.pagedesigner.editors.pagedesigner.PageDesignerResources; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceDataProvider; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; @@ -102,11 +102,11 @@ * @see org.eclipse.gef.palette.PaletteListener#activeToolChanged(org.eclipse.gef.ui.palette.PaletteViewer, * org.eclipse.gef.palette.ToolEntry) */ - private Object getPaletteObject() { + private IDropSourceDataProvider getPaletteObject() { if (_domain.getPaletteViewer() != null) { Object tool = _domain.getPaletteViewer().getActiveTool(); - if (tool instanceof TagToolPaletteEntry) { - return tool; + if (tool instanceof IDropSourceDataProvider) { + return (IDropSourceDataProvider) tool; } } return null; @@ -131,17 +131,16 @@ } private PaletteDropInsertCommand getCommand(MouseEvent event) { - Object data = getPaletteObject(); + IDropSourceDataProvider data = getPaletteObject(); PaletteDropInsertCommand command = null; - if (data instanceof TagToolPaletteEntry) { - TagToolPaletteEntry descriptor = (TagToolPaletteEntry) data; + if (data != null) { // "Create new item" command = new PaletteDropInsertCommand( PageDesignerResources .getInstance() .getString( "DesignerSourceDropTargetListener.InserCommandLabel"), //$NON-NLS-1$ - _textEditor, descriptor, _location); + _textEditor, data.getDropSourceData(), _location); } return command; } Index: src/org/eclipse/jst/pagedesigner/dnd/internal/PDTemplateTransferDropTargetListener.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dnd/internal/PDTemplateTransferDropTargetListener.java,v retrieving revision 1.9 diff -u -r1.9 PDTemplateTransferDropTargetListener.java --- src/org/eclipse/jst/pagedesigner/dnd/internal/PDTemplateTransferDropTargetListener.java 18 Nov 2008 22:22:53 -0000 1.9 +++ src/org/eclipse/jst/pagedesigner/dnd/internal/PDTemplateTransferDropTargetListener.java 1 May 2009 01:25:40 -0000 @@ -19,7 +19,7 @@ import org.eclipse.gef.dnd.TemplateTransfer; import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.jst.pagedesigner.commands.CreateItemCommand; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; import org.eclipse.jst.pagedesigner.itemcreation.ItemCreationRequest; import org.eclipse.jst.pagedesigner.itemcreation.customizer.DropCustomizationController; import org.eclipse.swt.dnd.DND; @@ -92,12 +92,9 @@ ItemCreationRequest request = (ItemCreationRequest) getCreateRequest(); Object transferObj = TemplateTransfer.getInstance().getObject(); - if (transferObj instanceof TagToolPaletteEntry) + if (transferObj instanceof IDropSourceData) { - TagToolPaletteEntry tagItem = - (TagToolPaletteEntry) transferObj; - - request.setTagToolPaletteEntry(tagItem); + request.setTagCreationProvider((IDropSourceData) transferObj); request.setLocation(getDropLocation()); } else @@ -140,11 +137,9 @@ if (command instanceof CreateItemCommand) { final ItemCreationRequest request = (ItemCreationRequest) getCreateRequest(); - final String name = request.getTagToolPaletteEntry().getTagName(); - final String uri = request.getTagToolPaletteEntry().getURI(); final CreateItemCommand createCommand = (CreateItemCommand) command; final IStatus status = - new DropCustomizationController(createCommand, uri, name, createCommand.getDocument(), createCommand.getPosition()) + new DropCustomizationController(createCommand, request.getTagCreationProvider(), createCommand.getDocument(), createCommand.getPosition()) .performCustomization(); return status.getSeverity() == IStatus.OK; Index: src/org/eclipse/jst/pagedesigner/itemcreation/command/ElementCustomizationCommand.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/command/ElementCustomizationCommand.java,v retrieving revision 1.6 diff -u -r1.6 ElementCustomizationCommand.java --- src/org/eclipse/jst/pagedesigner/itemcreation/command/ElementCustomizationCommand.java 18 Nov 2008 22:22:55 -0000 1.6 +++ src/org/eclipse/jst/pagedesigner/itemcreation/command/ElementCustomizationCommand.java 1 May 2009 01:25:41 -0000 @@ -13,12 +13,14 @@ import java.util.Collection; import java.util.Collections; import java.util.Iterator; +import java.util.List; import org.eclipse.emf.common.command.Command; -import org.eclipse.emf.common.util.EList; import org.eclipse.jst.jsf.core.internal.tld.CMUtil; import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.TagCreationAttribute; -import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.TagCreationInfo; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.MetadataTagDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.TagToolCreationAdapter; import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteElementTemplateHelper; import org.eclipse.jst.pagedesigner.itemcreation.CreationData; import org.eclipse.jst.pagedesigner.itemcreation.internal.AbstractCreationCommand; @@ -97,11 +99,14 @@ */ protected void applyChildElementCustomization() { - final TagCreationInfo tagCreationInfo = _creationData.getTagCreationInfo(); - if (tagCreationInfo != null) + final ITagDropSourceData tagDropSourceData = + _creationData.getTagCreationProvider(); + if (tagDropSourceData != null) { + MetadataTagDropSourceData provider = + TagToolCreationAdapter.createMdTagCreationProvider(tagDropSourceData, _model); PaletteElementTemplateHelper.applyTemplate(_model, _element, - _creationData.getTagEntry(), tagCreationInfo); + provider); } } @@ -117,6 +122,7 @@ * @param element * @param creationData */ + @SuppressWarnings("deprecation") protected final void ensureRequiredAttrs(final Element element, final CreationData creationData) { @@ -150,16 +156,16 @@ */ protected void applyAttributeCustomization() { - final TagCreationInfo info = _creationData.getTagCreationInfo(); + final ITagDropSourceData info = _creationData.getTagCreationProvider(); if (info != null) { - final EList list = info.getAttributes(); + final MetadataTagDropSourceData provider = + TagToolCreationAdapter.createMdTagCreationProvider(info, _model); + final List list = provider.getAttributes(); if (list != null) { - for (final Iterator it = list.iterator(); it.hasNext();) + for (final TagCreationAttribute attr : list) { - final TagCreationAttribute attr = (TagCreationAttribute) it - .next(); _element.setAttribute(attr.getId(), (attr.getValue() == null ? "" : attr.getValue())); //$NON-NLS-1$ } Index: src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedContainerCreationCommand.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedContainerCreationCommand.java,v retrieving revision 1.3 diff -u -r1.3 UserCustomizedContainerCreationCommand.java --- src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedContainerCreationCommand.java 27 Mar 2009 19:38:35 -0000 1.3 +++ src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedContainerCreationCommand.java 1 May 2009 01:25:41 -0000 @@ -6,7 +6,11 @@ import org.eclipse.jst.jsf.common.dom.TagIdentifier; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; import org.eclipse.jst.pagedesigner.dom.ValidatorSupport; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.TagToolCreationAdapter; import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; /** * Tag container creation command for tags dropped on to the WPE by the user @@ -57,20 +61,26 @@ return _data; } - @Override - protected IDOMPosition doExecute() + protected IDOMPosition doExecute() { final IDOMPosition domPosition = getDomPosition(); - final QName containerQName = getContainerTag().asQName(); + final QName containerQName = getContainerTag().asQName(); IDOMPosition newPosition = domPosition; - newPosition = ValidatorSupport.insertContainer(domPosition, containerQName, getContainerCustomizationData()); + final IDOMModel model = ((IDOMNode) domPosition.getContainerNode()) + .getModel(); + + final ITagDropSourceData creationProvider = TagToolCreationAdapter + .findProviderForContainer(containerQName); + + newPosition = ValidatorSupport.insertContainer(domPosition, + model, creationProvider, getContainerCustomizationData()); if (newPosition == null) { newPosition = domPosition; } - + return newPosition; } } Index: src/org/eclipse/jst/pagedesigner/itemcreation/command/TagContainerCreationCommand.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/command/TagContainerCreationCommand.java,v retrieving revision 1.3 diff -u -r1.3 TagContainerCreationCommand.java --- src/org/eclipse/jst/pagedesigner/itemcreation/command/TagContainerCreationCommand.java 18 Nov 2008 22:22:55 -0000 1.3 +++ src/org/eclipse/jst/pagedesigner/itemcreation/command/TagContainerCreationCommand.java 1 May 2009 01:25:41 -0000 @@ -16,6 +16,10 @@ import org.eclipse.jst.jsf.common.dom.TagIdentifier; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; import org.eclipse.jst.pagedesigner.dom.ValidatorSupport; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.TagToolCreationAdapter; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; /** * @author cbateman @@ -45,9 +49,15 @@ final QName containerQName = getContainerTag().asQName(); boolean hasform = ValidatorSupport.checkContainer(domPosition, containerQName); IDOMPosition newPosition = domPosition; - if (!hasform) { + if (!hasform) + { + final IDOMModel model = ((IDOMNode) domPosition.getContainerNode()) + .getModel(); + + final ITagDropSourceData creationProvider = + TagToolCreationAdapter.findProviderForContainer(containerQName); newPosition = ValidatorSupport - .insertContainer(domPosition, containerQName, getContainerCustomizationData()); + .insertContainer(domPosition, model, creationProvider, getContainerCustomizationData()); if (newPosition == null) { newPosition = domPosition; } Index: src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedElementCustomizationCommand.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedElementCustomizationCommand.java,v retrieving revision 1.3 diff -u -r1.3 UserCustomizedElementCustomizationCommand.java --- src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedElementCustomizationCommand.java 27 Mar 2009 19:38:35 -0000 1.3 +++ src/org/eclipse/jst/pagedesigner/itemcreation/command/UserCustomizedElementCustomizationCommand.java 1 May 2009 01:25:41 -0000 @@ -1,23 +1,22 @@ package org.eclipse.jst.pagedesigner.itemcreation.command; import java.util.HashMap; -import java.util.Iterator; +import java.util.List; import java.util.Map; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.emf.common.util.EList; import org.eclipse.jst.jsf.common.metadata.query.ITaglibDomainMetaDataModelContext; import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper; import org.eclipse.jst.jsf.context.resolver.structureddocument.internal.ResolverUtil; import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.TagCreationAttribute; -import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.TagCreationInfo; import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.jst.pagedesigner.dom.DOMPosition; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.MetadataTagDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.TagToolCreationAdapter; import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager; -import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; import org.eclipse.jst.pagedesigner.itemcreation.CreationData; import org.eclipse.jst.pagedesigner.itemcreation.customizer.ICustomizationData; import org.eclipse.jst.pagedesigner.utils.JSPUtil; @@ -70,14 +69,14 @@ if (_creationData.getDropCustomizationData() != null) { final ICustomizationData data = (ICustomizationData) _creationData.getDropCustomizationData().getAdapter(ICustomizationData.class); - + if (data.getChildrenData() != null) { - int childCount = 0; + int childCount = 0; CHILDREN_LOOP: for (ICustomizationData child : data.getChildrenData().getChildList()) { assert (_element.getOwnerDocument() != null); - + // Setup child node Element childNode = _element.getOwnerDocument().createElement(child.getTagIdentifier().getTagName()); String prefix = JSPUtil.getOrCreatePrefix(_model, child.getTagIdentifier().getUri(), null); @@ -90,47 +89,36 @@ String attrValue = attrMap.get(attrName); childNode.setAttribute(attrName, attrValue); } - + // Attach child node to element _element.appendChild(childNode); - + // Set up other attributes and child tags for this child IFile fileForDocument = ResolverUtil.getFileForDocument(_model.getStructuredDocument()); if (fileForDocument == null) { - PDPlugin.log("File not found for model: "+_model.toString(), new Exception("Stack trace only")); //$NON-NLS-1$//$NON-NLS-2$ - continue CHILDREN_LOOP; + PDPlugin.log("File not found for model: "+_model.toString(), new Exception("Stack trace only")); //$NON-NLS-1$//$NON-NLS-2$ + continue CHILDREN_LOOP; } final IProject project = fileForDocument.getProject(); - PaletteItemManager paletteManager = PaletteItemManager.getInstance(project); - - if (paletteManager == null) - { - PDPlugin.log("paletteManager not found for project: "+project.toString(), new Exception("Stack trace only")); //$NON-NLS-1$ //$NON-NLS-2$ - continue CHILDREN_LOOP; - } - - TaglibPaletteDrawer drawer = paletteManager.findCategoryByURI(child.getTagIdentifier().getUri()); - - if (drawer == null) - { - PDPlugin.log("Drawer not found for uri: "+child.getTagIdentifier().getUri(), new Exception("Stack trace only")); //$NON-NLS-1$ //$NON-NLS-2$ - continue CHILDREN_LOOP; - } + PaletteItemManager itemManager = PaletteItemManager.getInstance(project); - TagToolPaletteEntry paletteEntry = drawer.getTagPaletteEntryByTagName(child.getTagIdentifier().getTagName()); - - if (paletteEntry == null) + if (itemManager == null) { - PDPlugin.log("Palette entry not found for drawer: "+drawer.toString(), new Exception("Stack trace only")); //$NON-NLS-1$ //$NON-NLS-2$ - continue CHILDREN_LOOP; + PDPlugin.log("paletteManager not found for project: "+project.toString(), new Exception("Stack trace only")); //$NON-NLS-1$ //$NON-NLS-2$ + continue CHILDREN_LOOP; } + + final String uri = child.getTagIdentifier().getUri(); + final String tagName = child.getTagIdentifier().getTagName(); + final ITagDropSourceData creationProvider = + TagToolCreationAdapter.findProviderForContainer(uri, tagName, itemManager); final ITaglibDomainMetaDataModelContext modelContext = TaglibDomainMetaDataQueryHelper .createMetaDataModelContext(project, child.getTagIdentifier().getUri()); IDOMPosition domPosition = new DOMPosition(_element, childCount++); - CreationData creationData = new CreationData(paletteEntry,_model, domPosition, modelContext, child); - + CreationData creationData = new CreationData(creationProvider,_model, domPosition, modelContext, child); + ElementCustomizationCommand command = new UserCustomizedElementCustomizationCommand(_model, childNode, creationData); command.execute(); } @@ -184,16 +172,17 @@ private void addAttributesFromPaletteMetadata(Map attributes) { - final TagCreationInfo info = _creationData.getTagCreationInfo(); + final ITagDropSourceData info = _creationData.getTagCreationProvider(); if (info != null) { - final EList list = info.getAttributes(); + final MetadataTagDropSourceData provider = + TagToolCreationAdapter.createMdTagCreationProvider(info, _model); + + final List list = provider.getAttributes(); if (list != null) { - for (final Iterator it = list.iterator(); it.hasNext();) + for (final TagCreationAttribute attr : list) { - final TagCreationAttribute attr = (TagCreationAttribute) it - .next(); attributes.put(attr.getId(), (attr.getValue() == null ? "" //$NON-NLS-1$ : attr.getValue())); } Index: src/org/eclipse/jst/pagedesigner/editors/palette/TagToolPaletteEntry.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/TagToolPaletteEntry.java,v retrieving revision 1.5 diff -u -r1.5 TagToolPaletteEntry.java --- src/org/eclipse/jst/pagedesigner/editors/palette/TagToolPaletteEntry.java 11 Feb 2009 19:02:45 -0000 1.5 +++ src/org/eclipse/jst/pagedesigner/editors/palette/TagToolPaletteEntry.java 1 May 2009 01:25:40 -0000 @@ -11,63 +11,100 @@ package org.eclipse.jst.pagedesigner.editors.palette; import org.eclipse.gef.Tool; -import org.eclipse.gef.palette.ToolEntry; +import org.eclipse.gef.palette.CombinedTemplateCreationEntry; +import org.eclipse.gef.requests.CreationFactory; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; import org.eclipse.jst.pagedesigner.itemcreation.ItemCreationTool; /** * Represents a tag palette item entry in the web page designer palette - * + * */ -public class TagToolPaletteEntry extends ToolEntry { - - private String tagName; - - /** - * Constructor - * @param tagName - * @param label - * @param shortDescription - * @param iconSmall - * @param iconLarge - */ - public TagToolPaletteEntry(String tagName, String label, String shortDescription, - ImageDescriptor iconSmall, ImageDescriptor iconLarge) { - super(label, shortDescription, iconSmall, iconLarge); - this.tagName = tagName; - } - - /** - * @return tagName - */ - public String getTagName(){ - return tagName; - } - - /** - * Convenience method returning the tag libraries default prefix, if applicable - * @return default prefix - */ - public String getDefaultPrefix(){ - if (getParent() instanceof TaglibPaletteDrawer) - return ((TaglibPaletteDrawer)getParent()).getDefaultPrefix(); - return ""; //$NON-NLS-1$ - } - - /** - * @return uri of the tag's library - */ - public String getURI(){ - return ((TaglibPaletteDrawer)getParent()).getURI(); - } - - /* (non-Javadoc) - * @see org.eclipse.gef.palette.ToolEntry#createTool() - */ - public Tool createTool() { - return new ItemCreationTool(this); - } - - +public class TagToolPaletteEntry extends CombinedTemplateCreationEntry + implements IDropSourceDataProvider +{ + + /** + * Constructor + * + * @param template + * the template item for the drop + * @param label + * @param shortDescription + * @param iconSmall + * @param iconLarge + */ + public TagToolPaletteEntry(final ITagDropSourceData template, + final String label, final String shortDescription, + final ImageDescriptor iconSmall, final ImageDescriptor iconLarge) + { + super(label, shortDescription, template, NOOP_FACTORY, iconSmall, + iconLarge); + } + + /** + * @return tagName + */ + public String getTagName() + { + return getTemplate().getTagName(); + } + + /** + * Convenience method returning the tag libraries default prefix, if + * applicable + * + * @return default prefix + */ + public String getDefaultPrefix() + { + return getTemplate().getDefaultPrefix(); + } + + /** + * @return uri of the tag's library + */ + public String getURI() + { + return getTemplate().getURI(); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.gef.palette.ToolEntry#createTool() + */ + @Override + public Tool createTool() + { + return new ItemCreationTool(getTemplate()); + } + + private final static CreationFactory NOOP_FACTORY = new CreationFactory() + { + public Object getNewObject() + { + // should never get called + throw new UnsupportedOperationException( + "createTool should be overriden, so this should never be called"); //$NON-NLS-1$ + } + + public Object getObjectType() + { + // should never get called + throw new UnsupportedOperationException( + "createTool should be overriden, so this should never be called"); //$NON-NLS-1$ + } + }; + + @Override + public ITagDropSourceData getTemplate() + { + return (ITagDropSourceData) super.getTemplate(); + } + + public IDropSourceData getDropSourceData() + { + return getTemplate(); + } } Index: src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java,v retrieving revision 1.4 diff -u -r1.4 DesignerPaletteViewerProvider.java --- src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java 18 Nov 2008 22:22:41 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/editors/palette/DesignerPaletteViewerProvider.java 1 May 2009 01:25:40 -0000 @@ -12,6 +12,7 @@ package org.eclipse.jst.pagedesigner.editors.palette; import org.eclipse.gef.EditDomain; +import org.eclipse.gef.dnd.TemplateTransferDragSourceListener; import org.eclipse.gef.internal.ui.palette.editparts.DrawerEditPart; import org.eclipse.gef.ui.palette.PaletteContextMenuProvider; import org.eclipse.gef.ui.palette.PaletteViewer; @@ -20,7 +21,6 @@ import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jst.pagedesigner.PDPlugin; -import org.eclipse.jst.pagedesigner.dnd.internal.DesignerTemplateTransferDragSourceListener; import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; @@ -56,7 +56,7 @@ // XXX: should only use the following when we use Template viewer - .addDragSourceListener(new DesignerTemplateTransferDragSourceListener( + .addDragSourceListener(new TemplateTransferDragSourceListener( viewer)); } Index: src/org/eclipse/jst/pagedesigner/itemcreation/internal/TagCreationFactory.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/internal/TagCreationFactory.java,v retrieving revision 1.4 diff -u -r1.4 TagCreationFactory.java --- src/org/eclipse/jst/pagedesigner/itemcreation/internal/TagCreationFactory.java 18 Nov 2008 22:22:40 -0000 1.4 +++ src/org/eclipse/jst/pagedesigner/itemcreation/internal/TagCreationFactory.java 1 May 2009 01:25:41 -0000 @@ -19,9 +19,7 @@ /** * Creates instances of - * {@link org.eclipse.jst.pagedesigner.itemcreation.ITagCreator}s for a the - * given - * {@link org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry} + * {@link org.eclipse.jst.pagedesigner.itemcreation.ITagCreator}s * (Eventually) Will use TagCreavtorFactories registered using * org.eclipse.jst.jsf.pagedesigner.tagcreationfactories ext-pt. Currently only * using DefaultTagCreator. Index: src/org/eclipse/jst/pagedesigner/itemcreation/customizer/DropCustomizationController.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/itemcreation/customizer/DropCustomizationController.java,v retrieving revision 1.2 diff -u -r1.2 DropCustomizationController.java --- src/org/eclipse/jst/pagedesigner/itemcreation/customizer/DropCustomizationController.java 18 Nov 2008 22:23:09 -0000 1.2 +++ src/org/eclipse/jst/pagedesigner/itemcreation/customizer/DropCustomizationController.java 1 May 2009 01:25:41 -0000 @@ -9,6 +9,7 @@ import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.jst.pagedesigner.commands.ICustomizableCommand; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; import org.eclipse.jst.pagedesigner.elementedit.ElementEditFactoryRegistry; import org.eclipse.jst.pagedesigner.elementedit.IElementEdit; import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; @@ -23,24 +24,21 @@ public final class DropCustomizationController { private final ICustomizableCommand _command; - private final String _uri; - private final String _name; + private final IDropSourceData _dropSourceData; private final IDOMDocument _domDocument; private final IDOMPosition _domPosition; /** * @param command - * @param uri - * @param name + * @param dropSourceData * @param domDocument * @param domPosition */ public DropCustomizationController(final ICustomizableCommand command, - final String uri, final String name, final IDOMDocument domDocument, final IDOMPosition domPosition) + final IDropSourceData dropSourceData, final IDOMDocument domDocument, final IDOMPosition domPosition) { _command = command; - _uri = uri; - _name = name; + _dropSourceData = dropSourceData; _domDocument = domDocument; _domPosition = domPosition; } @@ -51,14 +49,14 @@ public IStatus performCustomization() { final TagIdentifier tagId = TagIdentifierFactory.createJSPTagWrapper( - _uri, _name); + _dropSourceData.getURI(), _dropSourceData.getTagName()); final IElementEdit elementEdit = ElementEditFactoryRegistry.getInstance() .createElementEdit(tagId); IStatus status = Status.OK_STATUS; if (elementEdit != null) { - final IDropCustomizer customizer = elementEdit.getDropCustomizer(tagId); + final IDropCustomizer customizer = elementEdit.getDropCustomizer(_dropSourceData); if (customizer != null) { Index: src/org/eclipse/jst/pagedesigner/dom/ValidatorSupport.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/dom/ValidatorSupport.java,v retrieving revision 1.5 diff -u -r1.5 ValidatorSupport.java --- src/org/eclipse/jst/pagedesigner/dom/ValidatorSupport.java 4 Sep 2007 18:13:58 -0000 1.5 +++ src/org/eclipse/jst/pagedesigner/dom/ValidatorSupport.java 1 May 2009 01:25:40 -0000 @@ -17,12 +17,9 @@ import org.eclipse.jst.jsf.core.internal.tld.CMUtil; import org.eclipse.jst.pagedesigner.adapters.IBodyInfo; import org.eclipse.jst.pagedesigner.adapters.internal.BodyInfo; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; -import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager; -import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; import org.eclipse.jst.pagedesigner.utils.CommandUtil; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; -import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.Text; @@ -89,32 +86,27 @@ return false; } - /** - * @param position - * @param container - * @param customizationData - * @return the new dom position for the inserted container or null if could - * not insert - */ - public static IDOMPosition insertContainer(IDOMPosition position, - QName container, IAdaptable customizationData) { - final TaglibPaletteDrawer category = - PaletteItemManager.getCurrentInstance().findCategoryByURI - (container.getNamespaceURI()); - if (category != null){ - final TagToolPaletteEntry tagItem = - category.getTagPaletteEntryByTagName(container.getLocalPart()); - final IDOMModel model = - ((IDOMNode) position.getContainerNode()).getModel(); - final Element form = CommandUtil.excuteInsertion - (tagItem, model, position, customizationData); - if (form != null) { - DOMPosition pos = new DOMPosition(form, 0); - return pos; - } - } + /** + * @param position + * @param model + * @param creationProvider + * @param customizationData + * @return the new dom position for the inserted container or null if could + * not insert + */ + public static IDOMPosition insertContainer(final IDOMPosition position, + final IDOMModel model, + final ITagDropSourceData creationProvider, final IAdaptable customizationData) + { + final Element newContainer = CommandUtil.executeInsertion( + creationProvider, model, position, customizationData); + if (newContainer != null) + { + DOMPosition pos = new DOMPosition(newContainer, 0); + return pos; + } return null; - } + } /** * @return the body info Index: src/org/eclipse/jst/pagedesigner/elementedit/IElementEdit.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/IElementEdit.java,v retrieving revision 1.6 diff -u -r1.6 IElementEdit.java --- src/org/eclipse/jst/pagedesigner/elementedit/IElementEdit.java 4 Nov 2008 01:15:43 -0000 1.6 +++ src/org/eclipse/jst/pagedesigner/elementedit/IElementEdit.java 1 May 2009 01:25:40 -0000 @@ -15,6 +15,7 @@ import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jst.jsf.common.dom.TagIdentifier; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator; import org.eclipse.jst.pagedesigner.itemcreation.customizer.IDropCustomizer; import org.eclipse.jst.pagedesigner.parts.ElementEditPart; @@ -112,10 +113,17 @@ * Returning null and returning a IDropCustomizer whose runCustomizer always returns * OK and getDropCustomizationData always returns null will be considered * equivalent by the framework. + * @deprecated use getDropCustomizer(IDropSourceData) instead */ public IDropCustomizer getDropCustomizer(TagIdentifier tagId); /** + * @param dropSourceData + * @return the drop customizer for the drop source data or null if none. + */ + public IDropCustomizer getDropCustomizer(final IDropSourceData dropSourceData); + + /** * @param tagId * @return a tag creator for the indicated tag or null to indicate that the * system should use it's default tag creator Index: src/org/eclipse/jst/pagedesigner/elementedit/AbstractElementEdit.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/elementedit/AbstractElementEdit.java,v retrieving revision 1.8 diff -u -r1.8 AbstractElementEdit.java --- src/org/eclipse/jst/pagedesigner/elementedit/AbstractElementEdit.java 18 Nov 2008 22:22:46 -0000 1.8 +++ src/org/eclipse/jst/pagedesigner/elementedit/AbstractElementEdit.java 1 May 2009 01:25:40 -0000 @@ -16,6 +16,9 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jst.jsf.common.dom.TagIdentifier; import org.eclipse.jst.jsf.core.internal.tld.CMUtil; +import org.eclipse.jst.jsf.core.internal.tld.TagIdentifierFactory; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; +import org.eclipse.jst.pagedesigner.editors.palette.ITagDropSourceData; import org.eclipse.jst.pagedesigner.itemcreation.ITagCreator; import org.eclipse.jst.pagedesigner.itemcreation.customizer.AbstractDropCustomizer; import org.eclipse.jst.pagedesigner.itemcreation.customizer.IDropCustomizer; @@ -105,11 +108,27 @@ private final static IDropCustomizer DEFAULT_DROP_CUSTOMIZER = new AbstractDropCustomizer(){/* do nothing; use defaults */}; + /** (non-Javadoc) + * @see org.eclipse.jst.pagedesigner.elementedit.IElementEdit#getDropCustomizer(org.eclipse.jst.jsf.common.dom.TagIdentifier) + * @deprecated use getDropCustomizer(IDropSourceData) instead. + */ public IDropCustomizer getDropCustomizer(TagIdentifier tagId) { return DEFAULT_DROP_CUSTOMIZER; } + public IDropCustomizer getDropCustomizer(IDropSourceData dropSourceData) + { + if (dropSourceData instanceof ITagDropSourceData) + { + final String uri = ((ITagDropSourceData)dropSourceData).getURI(); + final String tagName = ((ITagDropSourceData)dropSourceData).getTagName(); + final TagIdentifier tagId = TagIdentifierFactory.createJSPTagWrapper(uri, tagName); + return getDropCustomizer(tagId); + } + return DEFAULT_DROP_CUSTOMIZER; + } + /* (non-Javadoc) * @see org.eclipse.jst.pagedesigner.elementedit.IElementEdit#getTagCreator(org.eclipse.jst.jsf.common.dom.TagIdentifier) */ Index: src/org/eclipse/jst/pagedesigner/commands/PaletteDropInsertCommand.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/PaletteDropInsertCommand.java,v retrieving revision 1.10 diff -u -r1.10 PaletteDropInsertCommand.java --- src/org/eclipse/jst/pagedesigner/commands/PaletteDropInsertCommand.java 18 Nov 2008 22:22:39 -0000 1.10 +++ src/org/eclipse/jst/pagedesigner/commands/PaletteDropInsertCommand.java 1 May 2009 01:25:40 -0000 @@ -19,7 +19,7 @@ import org.eclipse.jst.pagedesigner.dom.DOMPosition; import org.eclipse.jst.pagedesigner.dom.EditModelQuery; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; import org.eclipse.jst.pagedesigner.itemcreation.customizer.DropCustomizationController; import org.eclipse.jst.pagedesigner.utils.CommandUtil; import org.eclipse.wst.sse.ui.StructuredTextEditor; @@ -38,7 +38,7 @@ private final Logger _log = PDPlugin .getLogger(PaletteDropInsertCommand.class); - private TagToolPaletteEntry _tagItem; + private IDropSourceData _creationProvider; private int _location; @@ -49,13 +49,13 @@ /** * @param label * @param editor - * @param tagItem + * @param creationProvider * @param location */ public PaletteDropInsertCommand(String label, StructuredTextEditor editor, - TagToolPaletteEntry tagItem, int location) { + IDropSourceData creationProvider, int location) { super(label, editor); - _tagItem = tagItem; + _creationProvider = creationProvider; _location = location; } @@ -84,20 +84,24 @@ } } - //essentially copied from ItemCreationTool so that DesignView drop and SourceViewDrop are same. - // Note that SourceView does NO drop validation checking. This is handled by ItemCreationPolicy in DesignView - final IStatus status = - performCustomization(getModel().getDocument(), position); - - if (status.getSeverity() == IStatus.OK) { - Element element = CommandUtil.excuteInsertion(this._tagItem, - getModel(), position, getCustomizationData()); - if (element != null) { - formatNode(element); - } - this._element = element; - } - } + // essentially copied from ItemCreationTool so that DesignView drop and + // SourceViewDrop are same. + // Note that SourceView does NO drop validation checking. This is + // handled by ItemCreationPolicy in DesignView + final IStatus status = performCustomization(getModel().getDocument(), + position); + + if (status.isOK()) + { + final Element element = CommandUtil.executeInsertion( + _creationProvider, getModel() + , position, getCustomizationData()); + if (element != null) { + formatNode(element); + } + this._element = element; + } + } /** * @param domDoc @@ -105,9 +109,7 @@ * @return status */ protected IStatus performCustomization(final IDOMDocument domDoc, final IDOMPosition position) { - final String uri = _tagItem.getURI(); - final String name = _tagItem.getTagName(); - return new DropCustomizationController(this, uri, name, domDoc, position).performCustomization(); + return new DropCustomizationController(this, _creationProvider, domDoc, position).performCustomization(); } /** Index: src/org/eclipse/jst/pagedesigner/commands/CreateItemCommand.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/commands/CreateItemCommand.java,v retrieving revision 1.6 diff -u -r1.6 CreateItemCommand.java --- src/org/eclipse/jst/pagedesigner/commands/CreateItemCommand.java 4 Nov 2008 01:15:42 -0000 1.6 +++ src/org/eclipse/jst/pagedesigner/commands/CreateItemCommand.java 1 May 2009 01:25:40 -0000 @@ -14,7 +14,7 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jst.pagedesigner.dom.IDOMPosition; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.IDropSourceData; import org.eclipse.jst.pagedesigner.utils.CommandUtil; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; import org.w3c.dom.Element; @@ -24,56 +24,57 @@ */ public class CreateItemCommand extends DesignerCommand implements ICustomizableCommand { - private final IDOMPosition _position; + private final IDOMPosition _position; + private final IDropSourceData _creationProvider; + private Element _ele; + private IAdaptable _customizationData; - private final TagToolPaletteEntry _tagItem; - private Element _ele; - private IAdaptable _customizationData; - - /** - * @param label - * @param model - * @param position - * @param tagItem - */ - public CreateItemCommand(String label, IDOMModel model, - IDOMPosition position, TagToolPaletteEntry tagItem) { - super(label, model.getDocument()); - this._position = position; - this._tagItem = tagItem; - } - - - /** - * @return the dom position for the drop - */ - public IDOMPosition getPosition() + /** + * @param label + * @param model + * @param position + * @param creationProvider + */ + public CreateItemCommand(String label, IDOMModel model, + IDOMPosition position, IDropSourceData creationProvider) { + super(label, model.getDocument()); + this._position = position; + this._creationProvider = creationProvider; + } + + /** + * @return the dom position for the drop + */ + public IDOMPosition getPosition() { return _position; } /* - * (non-Javadoc) - * - * @see org.eclipse.jst.pagedesigner.commands.DesignerCommand#doExecute() - */ - protected void doExecute() { - Element element = CommandUtil.excuteInsertion(this._tagItem, - getModel(), this._position, this._customizationData); - if (element != null) { - formatNode(element); - } - this._ele = element; - } + * (non-Javadoc) + * + * @see org.eclipse.jst.pagedesigner.commands.DesignerCommand#doExecute() + */ + protected void doExecute() + { + Element element = CommandUtil.executeInsertion( + _creationProvider, + getModel(), this._position, this._customizationData); + if (element != null) + { + formatNode(element); + } + this._ele = element; + } - @Override + @Override protected void postPostExecute() - { + { // during JUnit testing, we may not have viewer. // this will cause us not to have undo support, // but should not effect testing for this command - if (getViewer() != null) + if (getViewer() != null) { super.postPostExecute(); } @@ -94,13 +95,14 @@ } /* - * (non-Javadoc) - * - * @see org.eclipse.jst.pagedesigner.commands.DesignerCommand#getAfterCommandDesignerSelection() - */ - protected ISelection getAfterCommandDesignerSelection() { - return toDesignSelection(_ele); - } + * (non-Javadoc) + * + * @seeorg.eclipse.jst.pagedesigner.commands.DesignerCommand# + * getAfterCommandDesignerSelection() + */ + protected ISelection getAfterCommandDesignerSelection() { + return toDesignSelection(_ele); + } /** * @param customizationData Index: src/org/eclipse/jst/pagedesigner/editors/palette/impl/PaletteElementTemplateHelper.java =================================================================== RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.pagedesigner/src/org/eclipse/jst/pagedesigner/editors/palette/impl/PaletteElementTemplateHelper.java,v retrieving revision 1.10 diff -u -r1.10 PaletteElementTemplateHelper.java --- src/org/eclipse/jst/pagedesigner/editors/palette/impl/PaletteElementTemplateHelper.java 18 Nov 2008 22:22:51 -0000 1.10 +++ src/org/eclipse/jst/pagedesigner/editors/palette/impl/PaletteElementTemplateHelper.java 1 May 2009 01:25:40 -0000 @@ -21,9 +21,8 @@ import javax.xml.parsers.ParserConfigurationException; import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.jst.jsf.tagdisplay.internal.paletteinfos.TagCreationInfo; import org.eclipse.jst.pagedesigner.PDPlugin; -import org.eclipse.jst.pagedesigner.editors.palette.TagToolPaletteEntry; +import org.eclipse.jst.pagedesigner.editors.palette.MetadataTagDropSourceData; import org.eclipse.jst.pagedesigner.utils.JSPUtil; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMText; @@ -54,16 +53,15 @@ * * @param model * @param element - * @param tagItem - * @param tagCreationInfo + * @param creationProvider */ public static void applyTemplate(IDOMModel model, Element element, - TagToolPaletteEntry tagItem, TagCreationInfo tagCreationInfo) { + MetadataTagDropSourceData creationProvider) { if (element == null || element.getLocalName() == null) { return; } - Node[] templateNodes = getTemplateNodes(model, tagCreationInfo); + Node[] templateNodes = getTemplateNodes(model, creationProvider); if (templateNodes != null) { for (int i=0;i getAttributes() + { + if (_tagCreationInfo != null) + { + return _tagCreationInfo.getAttributes(); + } + return null; + } + + /** + * @return the template derived from metadata for tag drop or null if none. + */ + public String getTemplate() + { + if (_tagCreationInfo != null) + { + return (String) _tagCreationInfo.getTemplate(); + } + return null; + } + + public String getDefaultPrefix() + { + return _delegate.getDefaultPrefix(); + } + + public String getTagName() + { + return _delegate.getTagName(); + } + + public String getURI() + { + return _delegate.getURI(); + } + + private TagCreationInfo getTagCreationInfo() + { + final ITaglibDomainMetaDataModelContext metadataContext = CommandUtil + .getMetadataContext(getURI(), _model); + TagCreationInfo tagCreationInfo = null; + String id = getId(); + if (metadataContext != null && id != null) + { + tagCreationInfo = createCreationInfo(metadataContext, id, + getTagName()); + } + return tagCreationInfo; + } + + public String getId() + { + return _delegate.getId(); + } + + /** + * @param metaDataContext + * @param id + * @param tagName + * @return a tag creation info for the tag and id in the metadata context + */ + static TagCreationInfo createCreationInfo( + final ITaglibDomainMetaDataModelContext metaDataContext, + final String id, final String tagName) + { + final Model model = TaglibDomainMetaDataQueryHelper + .getModel(metaDataContext); + if (model != null) + { + Trait trait = TaglibDomainMetaDataQueryHelper.getTrait(model, + PaletteInfos.TRAIT_ID); + if (trait != null) + { + final PaletteInfos pis = (PaletteInfos) trait.getValue(); + final PaletteInfo pi = pis.findPaletteInfoById(id); + if (pi != null) + { + return pi.getTagCreation(); + } + } + // tag-creation trait on entity directly? + final Entity tag = getTagEntity(metaDataContext, tagName); + if (tag != null) + {// metadata exists + trait = TaglibDomainMetaDataQueryHelper.getTrait(tag, + "tag-create"); //$NON-NLS-1$ + if (trait != null && trait.getValue() != null) + { + return (TagCreationInfo) trait.getValue(); + } + } + } + return null; + } + /** + * @param metaDataContext + * @param tagName + * @return the {@link Entity} for this tag element being created + */ + private static Entity getTagEntity( + final ITaglibDomainMetaDataModelContext metaDataContext, + final String tagName) + { + return TaglibDomainMetaDataQueryHelper.getEntity(metaDataContext, + tagName); + } +} \ No newline at end of file Index: src/org/eclipse/jst/pagedesigner/editors/palette/TagToolCreationAdapter.java =================================================================== RCS file: src/org/eclipse/jst/pagedesigner/editors/palette/TagToolCreationAdapter.java diff -N src/org/eclipse/jst/pagedesigner/editors/palette/TagToolCreationAdapter.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/jst/pagedesigner/editors/palette/TagToolCreationAdapter.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,104 @@ +package org.eclipse.jst.pagedesigner.editors.palette; + + +import javax.xml.namespace.QName; + +import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemManager; +import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; +import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; + +/** + * Adapt a TagToolPaletteEntry to the ITagDropSourceData + * + * @author cbateman + * + */ +public final class TagToolCreationAdapter implements ITagDropSourceData +{ + private String _uri; + private String _tagName; + private String _defaultPrefix; + private String _id; + + /** + * @param uri + * @param tagName + * @param defaultPrefix + * @param id + */ + public TagToolCreationAdapter(final String uri, final String tagName, final String defaultPrefix, + final String id) + { + _uri = uri; + _tagName = tagName; + _defaultPrefix = defaultPrefix; + _id = id; + } + + public String getDefaultPrefix() + { + return _defaultPrefix; + } + + public String getTagName() + { + return _tagName; + } + + public String getURI() + { + return _uri; + } + + public String getId() + { + return _id; + } + + /** + * @param provider + * @param model + * @return a metadata tag creation adapter for an existing tag + * creation provider (which need not itself be a TagToolCreationAdapter) + * and a dom model. + */ + public static MetadataTagDropSourceData createMdTagCreationProvider(final ITagDropSourceData provider, final IDOMModel model) + { + return new MetadataTagDropSourceData(provider, model); + } + + /** + * @param container + * @return the tag creation provider + */ + public static ITagDropSourceData findProviderForContainer( + final QName container) + { + return findProviderForContainer(container.getNamespaceURI(), container + .getLocalPart(), PaletteItemManager.getCurrentInstance()); + } + + /** + * @param uri + * @param tagName + * @param itemManager + * @return the tag creation provider + */ + public static ITagDropSourceData findProviderForContainer( + final String uri, final String tagName, + final PaletteItemManager itemManager) + { + final TaglibPaletteDrawer category = itemManager.findCategoryByURI(uri); + if (category != null) + { + final TagToolPaletteEntry tagItem = category + .getTagPaletteEntryByTagName(tagName); + if (tagItem != null) + { + return tagItem.getTemplate(); + } + } + return null; + } + +} Index: src/org/eclipse/jst/pagedesigner/editors/palette/ITagDropSourceData.java =================================================================== RCS file: src/org/eclipse/jst/pagedesigner/editors/palette/ITagDropSourceData.java diff -N src/org/eclipse/jst/pagedesigner/editors/palette/ITagDropSourceData.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/jst/pagedesigner/editors/palette/ITagDropSourceData.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,19 @@ +package org.eclipse.jst.pagedesigner.editors.palette; + + +/** + * Provides generic information for tag creation from a palette drop. + * + * @author cbateman + * + */ +public interface ITagDropSourceData extends IDropSourceData +{ + /** + * Convenience method returning the tag libraries default prefix, if + * applicable + * + * @return default prefix + */ + public String getDefaultPrefix(); +} Index: src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceData.java =================================================================== RCS file: src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceData.java diff -N src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceData.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceData.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,26 @@ +package org.eclipse.jst.pagedesigner.editors.palette; + +/** + * Data describing a palette drop. + * + * @author cbateman + * + */ +public interface IDropSourceData +{ + /** + * @return uri of the tag's library + */ + public String getURI(); + /** + * @return tagName + */ + public String getTagName(); + /** + * Optional value. + * + * @return a unique id for a tag creation provider that may be different + * from the uri. MAY BE NULL. + */ + public String getId(); +} Index: src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceDataProvider.java =================================================================== RCS file: src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceDataProvider.java diff -N src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceDataProvider.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/jst/pagedesigner/editors/palette/IDropSourceDataProvider.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,16 @@ +package org.eclipse.jst.pagedesigner.editors.palette; + +/** + * Used by objects (usually palette entries) that wish provide drop source data + * to a client. + * + * @author cbateman + * + */ +public interface IDropSourceDataProvider +{ + /** + * @return a drop source data in context + */ + IDropSourceData getDropSourceData(); +}