Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 35822 Details for
Bug 128779
Provide option to generate gmfgraph figures as a standalone plug-in
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Added option to create separate .gmfgraph instance pointing to newly
patch_128779_2.txt (text/plain), 13.04 KB, created by
Michael Golubev
on 2006-03-07 06:40:08 EST
(
hide
)
Description:
Added option to create separate .gmfgraph instance pointing to newly
Filename:
MIME Type:
Creator:
Michael Golubev
Created:
2006-03-07 06:40:08 EST
Size:
13.04 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.graphdef.codegen.ui >Index: src/org/eclipse/gmf/internal/graphdef/codegen/ui/ConverterSection.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen.ui/src/org/eclipse/gmf/internal/graphdef/codegen/ui/ConverterSection.java,v >retrieving revision 1.2 >diff -u -r1.2 ConverterSection.java >--- src/org/eclipse/gmf/internal/graphdef/codegen/ui/ConverterSection.java 2 Mar 2006 13:16:16 -0000 1.2 >+++ src/org/eclipse/gmf/internal/graphdef/codegen/ui/ConverterSection.java 7 Mar 2006 11:38:00 -0000 >@@ -61,16 +61,20 @@ > public static final String OPTION_MAIN_PACKAGE_NAME = SECTION_ID + ".mainPackageName"; > public static final String OPTION_NEEDS_MAP_MODE = SECTION_ID + ".needsMapMode"; > public static final String OPTION_INPUT_RESOURCE_FULL_PATH = SECTION_ID + ".inputResource"; >+ public static final String OPTION_OUTPUT_RESOURCE_FULL_PATH = SECTION_ID + ".outputResource"; > > private TemplateOption myPackageNameOption; > private FileNameOption myInputPathOption; >+ private FileNameOption myOutputGalleryPathOption; > private final CachedInputValidationState myCachedInputValidationState; > private ManifestElement[] myRequiredBundles; > > public ConverterSection(){ > setPageCount(THE_ONLY_PAGE_INDEX + 1); > myPackageNameOption = addOption(OPTION_MAIN_PACKAGE_NAME, "Generate figures package", null, THE_ONLY_PAGE_INDEX); >- myInputPathOption = addFileNameOption(OPTION_INPUT_RESOURCE_FULL_PATH, "Input GMFGraph instance", "", THE_ONLY_PAGE_INDEX); >+ myInputPathOption = addFileNameOption(false, OPTION_INPUT_RESOURCE_FULL_PATH, "Input GMFGraph instance", "", THE_ONLY_PAGE_INDEX); >+ myOutputGalleryPathOption = addFileNameOption(true, OPTION_OUTPUT_RESOURCE_FULL_PATH, "Create Figure Gallery", "", THE_ONLY_PAGE_INDEX); >+ myOutputGalleryPathOption.setRequired(false); > addOption(OPTION_NEEDS_MAP_MODE, "Use IMapMode", false, THE_ONLY_PAGE_INDEX); > myCachedInputValidationState = new CachedInputValidationState(); > } >@@ -84,6 +88,7 @@ > markPagesAdded(); > validateOptions(myPackageNameOption); > validateOptions(myInputPathOption); >+ validateOptions(myOutputGalleryPathOption); > } > > public IPluginReference[] getDependencies(String schemaVersion) { >@@ -118,6 +123,22 @@ > if (!generator.getRunStatus().isOK()){ > throw new CoreException(generator.getRunStatus()); > } >+ createFigureGallery(generator.getGenerationInfo()); >+ } >+ >+ private void createFigureGallery(StandaloneGenerator.GenerationInfo info) throws CoreException { >+ if (!myOutputGalleryPathOption.isEmpty()){ >+ String path = myOutputGalleryPathOption.getText(); >+ Resource galleryResource = new ResourceSetImpl().createResource(URI.createFileURI(path)); >+ galleryResource.getContents().add(new StandaloneGalleryConverter().convertFigureGallery(info)); >+ try { >+ galleryResource.save(null); >+ } catch (IOException e) { >+ throw new CoreException(new Status(// >+ IStatus.ERROR, MY_PLUGIN_ID, 0, e.getMessage(), e >+ )); >+ } >+ } > } > > private void readRequiredBundles() throws CoreException, IOException { >@@ -190,6 +211,9 @@ > if (!validateInputPath()){ > return; > } >+ if (!validateOutputGalleryPath()){ >+ return; >+ } > resetPageState(); > } > >@@ -253,8 +277,9 @@ > return buffer.toString().toLowerCase(Locale.ENGLISH); > } > >- private FileNameOption addFileNameOption(String name, String label, String value, int pageIndex) { >+ private FileNameOption addFileNameOption(boolean saveNotLoad, String name, String label, String value, int pageIndex) { > FileNameOption result = new FileNameOption(this, name, label, new String[] {"*.gmfgraph"}); >+ result.setSaveNotLoad(saveNotLoad); > registerOption(result, value, pageIndex); > return result; > } >@@ -281,6 +306,23 @@ > } > return true; > } >+ >+ private boolean validateOutputGalleryPath() { >+ if (myOutputGalleryPathOption.isEmpty()){ >+ //optional -- ok >+ return true; >+ } >+ String path = myOutputGalleryPathOption.getText(); >+ try { >+ URI.createFileURI(path); >+ } catch (IllegalArgumentException e){ >+ String message = MessageFormat.format("Path {0} is invalid", new Object[] {path}); >+ getTheOnlyPage().setPageComplete(false); >+ getTheOnlyPage().setErrorMessage(message); >+ return false; >+ } >+ return true; >+ } > > private WizardPage getTheOnlyPage() { > return getPage(THE_ONLY_PAGE_INDEX); >Index: src/org/eclipse/gmf/internal/graphdef/codegen/ui/FileNameOption.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen.ui/src/org/eclipse/gmf/internal/graphdef/codegen/ui/FileNameOption.java,v >retrieving revision 1.2 >diff -u -r1.2 FileNameOption.java >--- src/org/eclipse/gmf/internal/graphdef/codegen/ui/FileNameOption.java 2 Mar 2006 13:16:16 -0000 1.2 >+++ src/org/eclipse/gmf/internal/graphdef/codegen/ui/FileNameOption.java 7 Mar 2006 11:38:01 -0000 >@@ -36,6 +36,7 @@ > private Label myLabelControl; > private Button myBrowseButton; > private boolean myIgnoreListener; >+ private boolean mySaveNotLoad; > > /** > * @param section >@@ -51,6 +52,10 @@ > myExtensions = extensions; > } > >+ public void setSaveNotLoad(boolean saveNotLoad){ >+ mySaveNotLoad = saveNotLoad; >+ } >+ > /** > * A utility version of the <samp>getValue() </samp> method that converts > * the current value into the String object. >@@ -109,7 +114,7 @@ > groupLayout.marginWidth = 0; > groupLayout.marginHeight = 0; > groupLayout.verticalSpacing = 0; >- groupLayout.horizontalSpacing = 0; >+ groupLayout.horizontalSpacing = 5; > textAndButtonGroup.setLayout(groupLayout); > > GridData groupLayoutData = new GridData(GridData.FILL_HORIZONTAL); >@@ -145,11 +150,15 @@ > } > > public void widgetSelected(SelectionEvent e) { >- FileDialog fileDialog = new FileDialog(e.display.getActiveShell(), SWT.PRIMARY_MODAL | SWT.OPEN); >+ FileDialog fileDialog = new FileDialog(e.display.getActiveShell(), getSaveNotLoadDialogStyle() | SWT.PRIMARY_MODAL); > fileDialog.setFilterExtensions(myExtensions); > setText(fileDialog.open()); > getSection().validateOptions(FileNameOption.this); > } >+ >+ private int getSaveNotLoadDialogStyle(){ >+ return FileNameOption.this.isSaveNotLoad() ? SWT.SAVE : SWT.OPEN; >+ } > }); > } > >@@ -176,4 +185,8 @@ > myBrowseButton.setEnabled(enabled); > } > } >+ >+ private boolean isSaveNotLoad(){ >+ return mySaveNotLoad; >+ } > } >Index: src/org/eclipse/gmf/internal/graphdef/codegen/ui/StandaloneGalleryConverter.java >=================================================================== >RCS file: src/org/eclipse/gmf/internal/graphdef/codegen/ui/StandaloneGalleryConverter.java >diff -N src/org/eclipse/gmf/internal/graphdef/codegen/ui/StandaloneGalleryConverter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/internal/graphdef/codegen/ui/StandaloneGalleryConverter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,54 @@ >+/* >+ * Copyright (c) 2006 Borland Software Corporation >+ * >+ * 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: >+ * Michael Golubev (Borland) - initial API and implementation >+ */ >+ >+package org.eclipse.gmf.internal.graphdef.codegen.ui; >+ >+import java.util.Enumeration; >+ >+import org.eclipse.gmf.gmfgraph.ConnectionFigure; >+import org.eclipse.gmf.gmfgraph.CustomFigure; >+import org.eclipse.gmf.gmfgraph.DecorationFigure; >+import org.eclipse.gmf.gmfgraph.Figure; >+import org.eclipse.gmf.gmfgraph.FigureGallery; >+import org.eclipse.gmf.gmfgraph.GMFGraphFactory; >+import org.eclipse.gmf.graphdef.codegen.StandaloneGenerator; >+ >+public class StandaloneGalleryConverter { >+ public FigureGallery convertFigureGallery(StandaloneGenerator.GenerationInfo generationInfo){ >+ FigureGallery result = GMFGraphFactory.eINSTANCE.createFigureGallery(); >+ String generatedBundle = generationInfo.getConfig().getPluginID(); >+ result.setImplementationBundle(generatedBundle); >+ >+ for (Enumeration originalFigures = generationInfo.getProcessedFigures(); originalFigures.hasMoreElements();){ >+ Figure nextOriginal = (Figure) originalFigures.nextElement(); >+ String nextConvertedFqn = generationInfo.getGeneratedClassFQN(nextOriginal); >+ CustomFigure custom = createCustomFigure(nextOriginal); >+ custom.setBundleName(generatedBundle); >+ custom.setQualifiedClassName(nextConvertedFqn); >+ >+ result.getFigures().add(custom); >+ } >+ return result; >+ } >+ >+ private CustomFigure createCustomFigure(Figure original){ >+ GMFGraphFactory factory = GMFGraphFactory.eINSTANCE; >+ if (original instanceof DecorationFigure){ >+ return factory.createCustomDecoration(); >+ } >+ if (original instanceof ConnectionFigure){ >+ return factory.createCustomConnection(); >+ } >+ return factory.createCustomFigure(); >+ } >+ >+} >#P org.eclipse.gmf.graphdef.codegen >Index: src/org/eclipse/gmf/graphdef/codegen/StandaloneGenerator.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/StandaloneGenerator.java,v >retrieving revision 1.1 >diff -u -r1.1 StandaloneGenerator.java >--- src/org/eclipse/gmf/graphdef/codegen/StandaloneGenerator.java 2 Mar 2006 13:16:15 -0000 1.1 >+++ src/org/eclipse/gmf/graphdef/codegen/StandaloneGenerator.java 7 Mar 2006 11:38:02 -0000 >@@ -14,9 +14,12 @@ > import java.net.URL; > import java.util.Arrays; > import java.util.Collections; >+import java.util.Enumeration; > import java.util.HashSet; >+import java.util.IdentityHashMap; > import java.util.Iterator; > import java.util.List; >+import java.util.Map; > > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.Path; >@@ -36,6 +39,13 @@ > private final StandaloneEmitters myAuxiliaryGenerators; > private boolean mySkipPluginStructire; > private final FigureQualifiedNameSwitch myFigureNameSwitch; >+ private final GenerationInfoImpl myGenerationInfo; >+ >+ public interface GenerationInfo { >+ public Config getConfig(); >+ public Enumeration/*<Figure>*/ getProcessedFigures(); >+ public String getGeneratedClassFQN(Figure figure); >+ } > > public interface Config { > public String getPluginID(); >@@ -117,6 +127,11 @@ > new FigureGenerator(getPackageName(), importAssistant, fqnSwitch, strategy) > ); > myAuxiliaryGenerators = new StandaloneEmitters(); >+ myGenerationInfo = new GenerationInfoImpl(myArgs); >+ } >+ >+ public GenerationInfo getGenerationInfo() { >+ return myGenerationInfo; > } > > /** >@@ -127,12 +142,6 @@ > mySkipPluginStructire = skipManifest; > } > >- private static String composePluginActivatorClassFQN(Config config) { >- String packageName = config.getPluginActivatorPackageName(); >- String className = config.getPluginActivatorClassName(); >- return packageName == null || "".equals(packageName) ? className : packageName + "." + className; >- } >- > protected void setupProgressMonitor() { > //setupProgressMonitor("Generating GMFGraph plugin", 100); > } >@@ -187,13 +196,26 @@ > } > > private void visitFigure(Figure figure) throws InterruptedException { >- doGenerateJavaClass(myFigureGenerator, getPackageName(), figure.getName(), figure); >+ String packageName = getPackageName(); >+ String className = figure.getName(); >+ doGenerateJavaClass(myFigureGenerator, packageName, className, figure); >+ myGenerationInfo.registerFQN(figure, composeFQN(packageName, className)); > } >- >+ > private String getPackageName(){ > return myArgs.getMainPackageName(); > } >+ >+ private static String composePluginActivatorClassFQN(Config config) { >+ String packageName = config.getPluginActivatorPackageName(); >+ String className = config.getPluginActivatorClassName(); >+ return composeFQN(packageName, className); >+ } > >+ private static String composeFQN(String packageName, String className){ >+ return packageName == null || "".equals(packageName) ? className : packageName + "." + className; >+ } >+ > private static class FigureGeneratorAdapter implements GeneratorBase.Emitter { > private final FigureGenerator myDelegate; > >@@ -209,4 +231,30 @@ > } > } > >+ private static class GenerationInfoImpl implements GenerationInfo { >+ private final Map myFigure2FQN = new IdentityHashMap(); >+ private final Config myConfig; >+ >+ public GenerationInfoImpl(Config config){ >+ myConfig = config; >+ } >+ >+ public Config getConfig() { >+ return myConfig; >+ } >+ >+ public void registerFQN(Figure figure, String fqn){ >+ myFigure2FQN.put(figure, fqn); >+ } >+ >+ public String getGeneratedClassFQN(Figure figure) { >+ return (String)myFigure2FQN.get(figure); >+ } >+ >+ public Enumeration getProcessedFigures() { >+ return Collections.enumeration(myFigure2FQN.keySet()); >+ } >+ >+ } >+ > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 128779
:
35440
|
35441
|
35822
|
35908
|
37543