SVN-fs-dump-format-version: 2 UUID: b870cda2-b769-0410-84b9-88c412825fa1 Revision-number: 0 Prop-content-length: 56 Content-length: 56 K 8 svn:date V 27 2009-05-12T14:08:58.155048Z PROPS-END Revision-number: 1 Prop-content-length: 5754 Content-length: 5754 K 7 svn:log V 5649 Share project "org.eclipse.egf.tests.ju" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.tests.pattern" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern.ui" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.engine.doc.process" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.emf.generator.edit" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.tests.emf.generation.library" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.fc.doc.gen" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pde.emf" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.tests.factory" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern.runner" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.doc.user" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.core.fc.feature" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.fc.emf.model" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.engine.doc.pattern" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "egf.builder" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.core" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.tests.ju.pattern" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pde.pattern" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.fc.builder.java" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.core.fc" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.model.edit" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.mapping.ui.editor" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.common" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "egf.releng" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.mapping" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.tests.ju.factory" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.fc.doc.patterns" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.console" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.emf.generator.common" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.tests.ju.feature" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.tests.feature" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.model" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.plugin.gen" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern.refactoring" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern.runner.nsuri" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern.runner.fc" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern.emf" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.fc.generator.javadoc" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.engine.doc" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.core.ui.workbench" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.core.ui" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pde" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.pattern.condition.gen" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.common.ui" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.emf.generator.editor" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.batch.application" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.fc.generator.java" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" Share project "org.eclipse.egf.core.feature" into "svn+ssh://dev.eclipse.org/svnroot/modeling/org.eclipse.emf.egf" K 10 svn:author V 8 langlois K 8 svn:date V 27 2009-07-23T12:37:54.730847Z PROPS-END Node-path: plugins Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/egf.builder Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/egf.releng Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc.feature Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.feature Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.doc.user Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc.pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc.process Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.fc.builder.java Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.fc.doc.gen Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.fc.doc.patterns Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.fc.emf.model Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.fc.generator.java Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.fc.generator.javadoc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.mapping Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.mapping.ui.editor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.model Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.model.edit Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern.condition.gen Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern.emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern.refactoring Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern.runner Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern.runner.fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern.runner.nsuri Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pattern.ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pde Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pde.emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.pde.pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.plugin.gen Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.emf.generation.library Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.factory Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.feature Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.ju Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.ju.factory Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.ju.feature Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.ju.pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.tests.pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Revision-number: 2 Prop-content-length: 124 Content-length: 124 K 7 svn:log V 21 Initial commit of EGF K 10 svn:author V 8 langlois K 8 svn:date V 27 2009-07-23T13:03:19.825378Z PROPS-END Node-path: plugins/egf.builder/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 215 Text-content-md5: 6e9b1a2c3744b6cb4bcec44d4076deda Text-content-sha1: 9dc0feba38608c951694e6644ef5f321c5f9c7cf Content-length: 260 K 13 svn:mime-type V 10 text/plain PROPS-END egf.builder Node-path: plugins/egf.builder/allElements.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2537 Text-content-md5: d3cd20dba5102da79e314f456bf4dbd6 Text-content-sha1: 40a14ab55a0b15bf52347423642a1948f75bbc8f Content-length: 2582 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/egf.builder/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9166 Text-content-md5: 40b64a59adc35f6be427648a764f210f Text-content-sha1: 42753eff5b0530790595dc805d08e21b420512db Content-length: 9211 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2003, 2006 IBM Corporation and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # IBM Corporation - initial API and implementation ############################################################################### ##################### # Parameters describing how and where to execute the build. # Typical users need only update the following properties: # baseLocation - where things you are building against are installed # bootclasspath - The base jars to compile against (typicaly rt.jar) # configs - the list of {os, ws, arch} configurations to build. # # Of course any of the settings here can be overridden by spec'ing # them on the command line (e.g., -DbaseLocation=d:/eclipse ############# PRODUCT/PACKAGING CONTROL ############# #product=/plugin or feature or source id/path/to/.product runPackager=true #Set the name of the archive that will result from the product build. #archiveNamePrefix= # The prefix that will be used in the generated archive. archivePrefix=eclipse # The location underwhich all of the build output will be collected. collectingFolder=${archivePrefix} # The list of {os, ws, arch} configurations to build. This # value is a '&' separated list of ',' separate triples. For example, # configs=win32,win32,x86 & linux,motif,x86 # By default the value is *,*,* #configs = *, *, * #configs=win32, win32, x86 #configs=win32, win32, x86 & \ # linux, gtk, ppc &\ # linux, gtk, x86 & \ # linux, gtk, x86_64 & \ # linux, motif, x86 & \ # solaris, motif, sparc & \ # solaris, gtk, sparc & \ # aix, motif, ppc & \ # hpux, motif, PA_RISC & \ # macosx, carbon, ppc # By default PDE creates one archive (result) per entry listed in the configs property. # Setting this value to try will cause PDE to only create one output containing all # artifacts for all the platforms listed in the configs property. #groupConfigurations=true #The format of the archive. By default a zip is created using antZip. #The list can only contain the configuration for which the desired format is different than zip. #archivesFormat=win32, win32, x86 - antZip& \ # linux, gtk, ppc - antZip &\ # linux, gtk, x86 - antZip& \ # linux, gtk, x86_64 - antZip& \ # linux, motif, x86 - antZip& \ # solaris, motif, sparc - antZip& \ # solaris, gtk, sparc - antZip& \ # aix, motif, ppc - antZip& \ # hpux, motif, PA_RISC - antZip& \ # macosx, carbon, ppc - antZip #Set to true if you want the output to be ready for an update jar (no site.xml generated) # If set to true, all elements (including features) are jarred ! Be careful, Eclipse does not handle correctly jarred features. #outputUpdateJars = true #Set to true for Jnlp generation #codebase should be a URL that will be used as the root of all relative URLs in the output. #generateJnlp=false #jnlp.codebase= #jnlp.j2se= #jnlp.locale= #jnlp.generateOfflineAllowed=true or false generate attribute in the generated features #jnlp.configs=${configs} #uncomment to filter the content of the generated jnlp files based on the configuration being built #Set to true if you want to sign jars #signJars=false #sign.alias= #sign.keystore= #sign.storepass= #Arguments to send to the zip executable zipargs= #Arguments to send to the tar executable #tarargs= #Control the creation of a file containing the version included in each configuration - on by default #generateVersionsLists=false ############## BUILD NAMING CONTROL ################ # The directory into which the build elements are fetched and where # the build takes place. #buildDirectory=${builder}/.. # Type of build. Used in naming the build output. Typically this value is # one of I, N, M, S, ... buildType=I # ID of the build. Used in naming the build output. buildId=${BuildId} # Label for the build. Used in naming the build output buildLabel=${BuildLabel} # Timestamp for the build. Used in naming the build output timestamp=0000 #The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde. #The value will only be applied to plugin or features indicating build.properties, qualifier = context #forceContextQualifier= #Enable / disable the generation of a suffix for the features that use .qualifier. #The generated suffix is computed according to the content of the feature generateFeatureVersionSuffix=true ############# BASE CONTROL ############# # Settings for the base Eclipse components and Java class libraries # against which you are building. # Base location for anything the build needs to compile against. For example, # in most RCP app or a plug-in, the baseLocation should be the location of a previously # installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack. #base= #baseLocation=${eclipse.home} #Os/Ws/Arch/nl of the eclipse specified by baseLocation #baseos=win32 #basews=win32 #basearch=x86 #this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built #filteredDependencyCheck=false #this property indicates whether the resolution should be done in development mode (i.e. ignore multiple bundles with singletons) #resolution.devMode=false #pluginPath is a list of locations in which to find plugins and features. This list is separated by the platform file separator (; or :) #a location is one of: #- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo #- a directory that contains a /plugins or /features subdirectory #- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml pluginPath=${buildDirectory} skipBase=true eclipseURL= eclipseBuildId= eclipseBaseURL=${eclipseURL}/eclipse-platform-${eclipseBuildId}-win32.zip ############# MAP FILE CONTROL ################ # This section defines CVS tags to use when fetching the map files from the repository. # If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml #skipMaps=true #mapsRepo=:pserver:anonymous@example.com/path/to/repo #mapsRoot=path/to/maps #mapsCheckoutTag=HEAD #tagMaps=true #mapsTagTag=v${buildId} ############ REPOSITORY CONTROL ############### # This section defines properties parameterizing the repositories where plugins, fragments # bundles and features are being obtained from. # The tags to use when fetching elements to build. # By default thebuilder will use whatever is in the maps. # This value takes the form of a comma separated list of repository identifier (like used in the map files) and the # overriding value # For example fetchTag=CVS=HEAD, SVN=v20050101 # fetchTag=HEAD # Does not work anymore the overridetag possibility. #fetchTag=COPY=D:/views/solfa_1.2_dev #skipFetch=true ############# JAVA COMPILER OPTIONS ############## # The location of the Java jars to compile against. Typically the rt.jar for your JDK/JRE bootclasspath=${java.home}/lib/rt.jar # specific JRE locations to compile against. These values are used to compile bundles specifying a # Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support #CDC-1.0/Foundation-1.0= /path/to/rt.jar #CDC-1.1/Foundation-1.1= #OSGi/Minimum-1.0= #OSGi/Minimum-1.1= #JRE-1.1= #J2SE-1.2= #J2SE-1.3= #J2SE-1.4= #J2SE-1.5= #JavaSE-1.6= #PersonalJava-1.1= #PersonalJava-1.2= #CDC-1.0/PersonalBasis-1.0= #CDC-1.0/PersonalJava-1.0= #CDC-1.1/PersonalBasis-1.1= #CDC-1.1/PersonalJava-1.1= # Specify the output format of the compiler log when eclipse jdt is used logExtension=.log # Whether or not to include debug info in the output jars javacDebugInfo=on # Whether or not to fail the build if there are compiler errors javacFailOnError=true # Enable or disable verbose mode of the compiler javacVerbose=false # Extra arguments for the compiler. These are specific to the java compiler being used. build.compiler=org.eclipse.jdt.core.JDTCompilerAdapter compilerArg=-enableJavadoc -warn:+boxing,conditionAssign,emptyBlock,hiding,indirectStatic,nls,over-ann,semicolon,unusedImport,unusedThrown,uselessTypeCheck # Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties javacSource=1.5 # Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties. javacTarget=1.5 individualSourceBundles=true archivesFormat = *,*,*-antZip Node-path: plugins/egf.builder/customTargets.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9083 Text-content-md5: 076a9c8148d472134a116aa0b83791bd Text-content-sha1: 16532d6ad8feb1700f55e610ff570b48093ac24d Content-length: 9128 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/egf.builder/egf.map Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 2267 Text-content-md5: 93b951a3704686ccaef7e813b5e2b35a Text-content-sha1: fa6629fbe3db5ad2bafcc73d9fbd636a56316109 Content-length: 2277 PROPS-END feature@org.eclipse.egf.core=COPY,X:/,org.eclipse.egf.core.feature plugin@org.eclipse.egf.batch.application=COPY,X: plugin@org.eclipse.egf.console=COPY,X:/ plugin@org.eclipse.egf.common=COPY,X:/ plugin@org.eclipse.egf.common.ui=COPY,X:/ plugin@org.eclipse.egf.core=COPY,X:/ plugin@org.eclipse.egf.core.ui=COPY,X:/ plugin@org.eclipse.egf.core.ui.workbench=COPY,X:/ plugin@org.eclipse.egf.doc.user=COPY,X:/ plugin@org.eclipse.egf.engine.doc=COPY,X:/ plugin@org.eclipse.egf.engine.doc.pattern=COPY,X:/ plugin@org.eclipse.egf.engine.doc.process=COPY,X:/ plugin@org.eclipse.egf.fc.builder.java=COPY,X:/ plugin@org.eclipse.egf.fc.generator.java=COPY,X:/ plugin@org.eclipse.egf.mapping=COPY,X:/ plugin@org.eclipse.egf.mapping.ui.editor=COPY,X:/ plugin@org.eclipse.egf.model=COPY,X:/ plugin@org.eclipse.egf.model.edit=COPY,X:/ plugin@org.eclipse.egf.pattern=COPY,X:/ plugin@org.eclipse.egf.pattern.condition.gen=COPY,X:/ plugin@org.eclipse.egf.pattern.refactoring=COPY,X:/ plugin@org.eclipse.egf.pattern.runner=COPY,X:/ plugin@org.eclipse.egf.pattern.ui=COPY,X:/ plugin@org.eclipse.egf.pde=COPY,X:/ plugin@org.eclipse.egf.pde.emf=COPY,X:/ plugin@org.eclipse.egf.pde.pattern=COPY,X:/ feature@org.eclipse.egf.core.fc=COPY,X:/,org.eclipse.egf.core.fc.feature plugin@org.eclipse.egf.core.fc=COPY,X:/ plugin@org.eclipse.egf.emf.generator.common=COPY,X:/ plugin@org.eclipse.egf.emf.generator.edit=COPY,X:/ plugin@org.eclipse.egf.emf.generator.editor=COPY,X:/ plugin@org.eclipse.egf.fc.doc.gen=COPY,X:/ plugin@org.eclipse.egf.fc.doc.patterns=COPY,X:/ plugin@org.eclipse.egf.fc.generator.javadoc=COPY,X:/ plugin@org.eclipse.egf.pattern.emf=COPY,X:/ plugin@org.eclipse.egf.pattern.runner.fc=COPY,X:/ plugin@org.eclipse.egf.pattern.runner.nsuri=COPY,X:/ plugin@org.eclipse.egf.plugin.gen=COPY,X:/ feature@org.eclipse.egf.tests=COPY,X:/,org.eclipse.egf.tests.feature plugin@org.eclipse.egf.tests.emf.generation.library=COPY,X:/ plugin@org.eclipse.egf.tests.factory=COPY,X:/ plugin@org.eclipse.egf.tests.pattern=COPY,X:/ feature@org.eclipse.egf.tests.ju=COPY,X:/,org.eclipse.egf.tests.ju.feature plugin@org.eclipse.egf.tests.ju=COPY,X:/ plugin@org.eclipse.egf.tests.ju.factory=COPY,X:/ plugin@org.eclipse.egf.tests.ju.pattern=COPY,X:/ Node-path: plugins/egf.releng/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 214 Text-content-md5: cbb95111bdf4238359287bd18a727ecc Text-content-sha1: 9eb09741991aa485b89fa07baa61ada9ccd00f12 Content-length: 259 K 13 svn:mime-type V 10 text/plain PROPS-END egf.releng Node-path: plugins/egf.releng/build.bat Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 3504 Text-content-md5: 5c7f702dd6d82cbab8f5ef5cd72b1f06 Text-content-sha1: 17f520147a0dfa51d03cccf213b643535a202db6 Content-length: 3514 PROPS-END @echo off rem check environment if "%JAVA_HOME%" == "" ( echo You must set the JAVA_HOME env variable e.g D:\jdk\jdk1.5.0 goto end ) if "%1" =="" ( echo {targetPlatformPath} is missing echo. goto usage ) if "%2" =="" ( echo {builderPath} is missing echo. goto usage ) if "%3" =="" ( echo {outputBuildPath} is missing echo. goto usage ) if "%4" =="" ( echo {viewPath} is missing echo. goto usage ) if "%5" =="" ( echo {builderEquinoxJarFilePath} is missing echo. goto usage ) if "%6" =="" ( echo {buildFile} is missing echo. goto usage ) if "%7" =="" ( echo {eclipseTestHostHome} is missing echo. goto usage ) :next rem Compute time stamps set builddate=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2% set hh=%TIME:~0,2% set mm=%time:~-8,2% rem Since there is no leading zero for times before 10 am, have to put in rem a zero when this is run before 10 am. if "%time:~0,1%"==" " set hh=0%hh:~1,1% rem get only the two digits regarding hours independently from current time (i.e before or after 10am) set buildtime=%hh:~0,2%%mm% set timestamp=%builddate%%buildtime% rem Define pde build properties. set targetPlatform=%1% set builder=%2% set buildDirectory=%3% rem View path where sources are located set viewPath=%4% set builderEquinoxJarFilePath=%5% set buildFile=%6% rem default property values set buildType=I set buildId=%timestamp% set buildLabel=%timestamp% rem Map file is not used anymore. Sources are fetched directly from view path. set mapfile=%builder%/egf.map set eclipseAutomatedTestHome=%7% goto build :usage echo. echo Usage : build.bat {targetPlatformPath} {builderPath} {outputBuildPath} {viewPath} {builderEquinoxJarFilePath} {buildFile} rem empty ligne echo. echo. echo targetPlatformPath: path to an eclipse target platform that allows source code to be able to compile against. echo builderPath: path to your product builder (folder that contains allElements.xml, build.properties, ...) echo outputBuildPath: path where build is output. echo viewPath: path where sources to build are located. echo builderEquinoxJarFilePath: path to the releng basebuilder equinox launcher jar file. echo buildFile: path to the master ant build script. echo eclipseTestHostHome: path to the test host target platform parent root folder (folder that contains test.xml, label.properties, ...) echo. echo. echo Example : build.bat F:/distrib/egf_1.0.0_M1/3.5/eclipse D:/views/egf_1.0_dev/MDE_EGF/releng/egf.builder f:/prod_egf/builds D:/views/egf_1.0_dev/MDE_EGF/ f:/prod_egf/org.eclipse.releng.basebuilder/3.5/eclipse/plugins/org.eclipse.equinox.launcher.jar D:/views/egf_1.0_dev/MDE_EGF/releng/build.xml f:/prod_egf/testhost echo. :build rem remove a potential existing subst over X. echo Don't worry : an error message could be displayed if no mount on X drive already exists. subst /D x: rem mount X: over the view path. subst x: %viewPath% rem Use the java.exe provided by a jdk to be able to produce the javadoc. %JAVA_HOME%\bin\java -Xms256m -Xmx1024m -jar %builderEquinoxJarFilePath% -application org.eclipse.ant.core.antRunner -f %buildFile% -DbaseLocation=%targetPlatform% -DbuildDirectory=%buildDirectory% -Dbuilder=%builder% -DbuildType=%buildType% -DbuildId=%buildId% -DbuildLabel=%buildLabel% -DviewPath=%viewPath%/ -Dmap.file=%mapfile% -DeclipseAutomatedTestHome=%eclipseAutomatedTestHome% subst /D x: :end Node-path: plugins/egf.releng/build.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5846 Text-content-md5: 560e3358d0680b34448d8a3d968d3747 Text-content-sha1: 1cd77c958c1e5bafb09faefc891d5bf462f29f70 Content-length: 5891 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/egf.releng/build_egf.bat Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 309 Text-content-md5: 84c476bf48da46bdf0f3a6c2c22fc715 Text-content-sha1: 0356650105e6dc831695202f8d40fed498542c06 Content-length: 319 PROPS-END @echo off set JAVA_HOME=D:\jdk\jdk1.5.0 set view=D:\dev\eclipse\workspace-3.5 call %view%/egf.releng/build.bat D:\eclipse-3.5-M5 %view%/egf.builder D:/prod_egf/builds %view% D:/prod_egf/org.eclipse.releng.basebuilder/plugins/org.eclipse.equinox.launcher.jar %view%/egf.releng/build.xml D:/prod_egf/testhost Node-path: plugins/org.eclipse.egf.batch.application/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 437 Text-content-md5: 343c3ecacddbcd28cbb6d801131fcf98 Text-content-sha1: ade11847dad48975f6c83dbe6d43b87435e15cfe Content-length: 482 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 694 Text-content-md5: 5a91c1f75c04d7744d7631aa03a67cc7 Text-content-sha1: 9af9e1ed6cb009014f1651f0b847d8eef8b48d6e Content-length: 739 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.batch.application org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.batch.application/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: b2390447475d7a6c4098b527b3e22c0e Text-content-sha1: 0cb02745b686fc1fa99bbd29435d2c4a14894145 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:56 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.batch.application/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 509 Text-content-md5: 87a9a87e29557c9d25cb361a306cc634 Text-content-sha1: cae33149ef863a7afd62f036dfc167cadfcf348b Content-length: 554 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.batch.application; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.egf.batch.application.EgfApplicationActivator Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.common.ui, org.eclipse.egf.core.ui.workbench, org.eclipse.egf.core Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.batch.application/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.batch.application/ant_tasks Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/EgfApplicationActivator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 905 Text-content-md5: b5309f98c988cecdb8043b451b7e85a7 Text-content-sha1: f439e01879c036a90e3c9f18955b72ca44463ba4 Content-length: 964 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1!9org/eclipse/egf/batch/application/EgfApplicationActivator7org/eclipse/egf/common/ui/activator/AbstractUIActivator__plugin;Lorg/eclipse/egf/batch/application/EgfApplicationActivator;()VCode  LineNumberTableLocalVariableTablethisstart%(Lorg/osgi/framework/BundleContext;)V Exceptionsjava/lang/Exception    context"Lorg/osgi/framework/BundleContext;stop   getDefault=()Lorg/eclipse/egf/batch/application/EgfApplicationActivator; SourceFileEgfApplicationActivator.java!  /*    F *+*      F *+ &' (     $ /  Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/FactoryComponentRunnerActionBarAdvisor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 906 Text-content-md5: c18636dd4ddfb7a5a6c6704d1e3edbea Text-content-sha1: 71ef3cb2c40e0e4000534e3d656b84d43bfb149b Content-length: 965 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Horg/eclipse/egf/batch/application/FactoryComponentRunnerActionBarAdvisor+org/eclipse/ui/application/ActionBarAdvisor4(Lorg/eclipse/ui/application/IActionBarConfigurer;)VCode  LineNumberTableLocalVariableTablethisJLorg/eclipse/egf/batch/application/FactoryComponentRunnerActionBarAdvisor; configurer1Lorg/eclipse/ui/application/IActionBarConfigurer; makeActions$(Lorg/eclipse/ui/IWorkbenchWindow;)Vwindow!Lorg/eclipse/ui/IWorkbenchWindow; fillMenuBar*(Lorg/eclipse/jface/action/IMenuManager;)VmenuBar'Lorg/eclipse/jface/action/IMenuManager; SourceFile+FactoryComponentRunnerActionBarAdvisor.java!>*+   5 %  5 *   Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/FactoryComponentRunnerApplication$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1157 Text-content-md5: 18cea791c5ffae21da1ecda13aa317a5 Text-content-sha1: 7b5e00c1b46bbb638643d86cd0dbbcdb13cdc8fe Content-length: 1216 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Eorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication$1java/lang/Objectjava/lang/Runnablethis$0ELorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication; val$display!Lorg/eclipse/swt/widgets/Display; val$workbenchLorg/eclipse/ui/IWorkbench;(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication;Lorg/eclipse/swt/widgets/Display;Lorg/eclipse/ui/IWorkbench;)VCode      ()VLineNumberTableLocalVariableTablethisGLorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication$1;run ! org/eclipse/swt/widgets/Display "# isDisposed()Z %'&org/eclipse/ui/IWorkbench (#close SourceFile&FactoryComponentRunnerApplication.javaEnclosingMethod-Corg/eclipse/egf/batch/application/FactoryComponentRunnerApplication /stop InnerClasses    B*+*,*-* H G* *$WJ KL )*+,.0  Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/FactoryComponentRunnerApplication.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3038 Text-content-md5: 6067cc01f29d266d46ade9d7d451cd08 Text-content-sha1: a4a8534ec4721d9a4ca4dfb158ab42da9756e5a3 Content-length: 3097 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Corg/eclipse/egf/batch/application/FactoryComponentRunnerApplicationjava/lang/Object$org/eclipse/equinox/app/IApplicationFACTORY_COMPONENT_IDLjava/lang/String; ConstantValue -factoryComponentId()VCode  LineNumberTableLocalVariableTablethisELorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication;startA(Lorg/eclipse/equinox/app/IApplicationContext;)Ljava/lang/Object; Exceptionsjava/lang/Exception +org/eclipse/equinox/app/IApplicationContext  getArguments()Ljava/util/Map;!application.args #%$ java/util/Map &'get&(Ljava/lang/Object;)Ljava/lang/Object;)[Ljava/lang/String; + ,-run'([Ljava/lang/String;)Ljava/lang/Object; context_p-Lorg/eclipse/equinox/app/IApplicationContext;args 2 34getFactoryComponentId'([Ljava/lang/String;)Ljava/lang/String; 687java/lang/String 9:length()I<java/lang/Integer ;> ?(I)V ACBorg/eclipse/ui/PlatformUI DE createDisplay#()Lorg/eclipse/swt/widgets/Display;GHorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor F FJ KLsetExecutedFactoryComponentId(Ljava/lang/String;)V AN OPcreateAndRunWorkbenchQ(Lorg/eclipse/swt/widgets/Display;Lorg/eclipse/ui/application/WorkbenchAdvisor;)I R ST EXIT_RESTARTLjava/lang/Integer; VXWorg/eclipse/swt/widgets/Display Y dispose [ \TEXIT_OKargs_pfactoryComponentIddisplay!Lorg/eclipse/swt/widgets/Display;workbenchAdvisorJLorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor; returnCodeIstop Ag hi getWorkbench()Lorg/eclipse/ui/IWorkbench; kmlorg/eclipse/ui/IWorkbench nE getDisplaypEorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication$1 or s(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication;Lorg/eclipse/swt/widgets/Display;Lorg/eclipse/ui/IWorkbench;)V Vu vwsyncExec(Ljava/lang/Runnable;)V workbenchLorg/eclipse/ui/IWorkbench; 6{ |}equals(Ljava/lang/Object;)Zresultiargument SourceFile&FactoryComponentRunnerApplication.java InnerClasses!   /* Y+ "(M*,* !" ./0),-\*+1M, ,5 ;Y=@NFYH:,I-M6Q:-UZ:-U:-U@SGLSF+-/13'5-657;8@<D8G:L<P:S;U<Y=>\\])V^>_`',ab5cde qfL++jM,oY*,+qtDEF GHN xy_`34,M>+2: z +2M+,,UVW XYV*\4,,])*~&d  o Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1117 Text-content-md5: 2660f44e7f7792476681359f6bd0b572 Text-content-sha1: a984ef1341168154a3556cf7b47725d35356e3a8 Content-length: 1176 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1$1java/lang/Objectjava/lang/Runnablethis$1LLorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1; val$workbenchLorg/eclipse/ui/IWorkbench;j(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1;Lorg/eclipse/ui/IWorkbench;)VCode     ()VLineNumberTableLocalVariableTablethisNLorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1$1;run org/eclipse/ui/IWorkbench close()Z SourceFile+FactoryComponentRunnerWorkbenchAdvisor.javaEnclosingMethod$Jorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1 &'runInWorkspaceO(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IStatus; InnerClasses    =*+*,*    9 *W     !"#%(# Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2164 Text-content-md5: 88f7d5b2a413c7378718f3f21c7ab2c9 Text-content-sha1: f27c438eb01dbe41b93005c366e764fe17d65c11 Content-length: 2223 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1RJorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1'org/eclipse/core/resources/WorkspaceJobthis$0JLorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor;_(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor;Ljava/lang/String;)VCode    (Ljava/lang/String;)VLineNumberTableLocalVariableTablethisLLorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1; $anonymous0Ljava/lang/String;runInWorkspaceO(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IStatus; Exceptions&org/eclipse/core/runtime/CoreException "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator; !#"Horg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor $%access$0^(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor;)Ljava/lang/String; ' ()generateFactoryComponentA(Ljava/lang/String;Lorg/eclipse/core/runtime/IProgressMonitor;Z)Z +-,org/eclipse/ui/PlatformUI ./ getWorkbench()Lorg/eclipse/ui/IWorkbench; 132org/eclipse/ui/IWorkbench 45 getDisplay#()Lorg/eclipse/swt/widgets/Display;7Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1$1 69 :j(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1;Lorg/eclipse/ui/IWorkbench;)V <>=org/eclipse/swt/widgets/Display ?@ asyncExec(Ljava/lang/Runnable;)V BDCorg/eclipse/core/runtime/Status EF OK_STATUS"Lorg/eclipse/core/runtime/IStatus; monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; workbenchLorg/eclipse/ui/IWorkbench; SourceFile+FactoryComponentRunnerWorkbenchAdvisor.javaEnclosingMethod OP postStartup()V InnerClasses  C *+ *,     t** +&W*M,06Y*,8;A& **GHIJKLM!NQ6 Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5327 Text-content-md5: 2feb5665b9c77b9c7704a4fc8a2ce5da Text-content-sha1: 8414136dd5a35baa5df6a954be95a9ec65026736 Content-length: 5386 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Horg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor+org/eclipse/ui/application/WorkbenchAdvisor__loggerLorg/apache/log4j/Logger;_factoryComponentIdLjava/lang/String;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable $ " thisJLorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor;createWorkbenchWindowAdvisorl(Lorg/eclipse/ui/application/IWorkbenchWindowConfigurer;)Lorg/eclipse/ui/application/WorkbenchWindowAdvisor;*Norg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchWindowAdvisor ), "-:(Lorg/eclipse/ui/application/IWorkbenchWindowConfigurer;)V configurer7Lorg/eclipse/ui/application/IWorkbenchWindowConfigurer;getInitialWindowPerspectiveId2-org.eclipse.egf.core.ui.workbench.perspective initialize4(Lorg/eclipse/ui/application/IWorkbenchConfigurer;)V 687/org/eclipse/ui/application/IWorkbenchConfigurer 9:setSaveAndRestore(Z)V <>=9org/eclipse/ui/internal/ide/model/WorkbenchAdapterBuilder ? registerAdapters A B4declareWorkbenchImages configurer_p1Lorg/eclipse/ui/application/IWorkbenchConfigurer;declareWorkbenchImaget(Lorg/eclipse/ui/application/IWorkbenchConfigurer;Lorg/osgi/framework/Bundle;Ljava/lang/String;Ljava/lang/String;Z)V HJIorg/osgi/framework/Bundle KLgetEntry"(Ljava/lang/String;)Ljava/net/URL; NPO*org/eclipse/jface/resource/ImageDescriptor QR createFromURL<(Ljava/net/URL;)Lorg/eclipse/jface/resource/ImageDescriptor; 6T UV declareImageB(Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;Z)Vbundle_pLorg/osgi/framework/Bundle;symbolicName_ppath_pshared_pZurlLjava/net/URL;desc,Lorg/eclipse/jface/resource/ImageDescriptor;bicons/full/obj16/dorg.eclipse.ui.ide fhg!org/eclipse/core/runtime/Platform ij getBundle/(Ljava/lang/String;)Lorg/osgi/framework/Bundle;lIMG_OBJ_PROJECTnicons/full/obj16/prj_obj.gif p EFrIMG_OBJ_PROJECT_CLOSEDticons/full/obj16/cprj_obj.gifvorg.eclipse.uix IMG_OBJ_FILEzicons/full/obj16/file_obj.gif|IMG_OBJ_FOLDER~icons/full/obj16/fldr_obj.gif ICONS_PATH ideBundleuiBundle postStartup *org/eclipse/core/resources/ResourcesPlugin  getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; %org/eclipse/core/resources/IWorkspace getRoot-()Lorg/eclipse/core/resources/IWorkspaceRoot;,org/eclipse/core/runtime/NullProgressMonitor $ )org/eclipse/core/resources/IWorkspaceRoot  refreshLocal/(ILorg/eclipse/core/runtime/IProgressMonitor;)Vjava/lang/StringBuilder9FactoryComponentRunnerWorkbenchAdvisor.postStartup(..) _ "(Ljava/lang/String;)V toString  warn*(Ljava/lang/Object;Ljava/lang/Throwable;)V *org/eclipse/egf/batch/application/Messages 0FactoryComponentRunnerWorkbenchAdvisor_Job_Titlejava/lang/Object   java/text/MessageFormat format9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;Jorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor$1 "_(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor;Ljava/lang/String;)V !org/eclipse/core/runtime/jobs/Job setRule2(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V schedule&org/eclipse/core/runtime/CoreExceptionroot+Lorg/eclipse/core/resources/IWorkspaceRoot; exception_p(Lorg/eclipse/core/runtime/CoreException; loggerMessageLjava/lang/StringBuilder; jobMessageexecuteFactoryComponentJob#Lorg/eclipse/core/runtime/jobs/Job;setExecutedFactoryComponentIdfcId_paccess$0^(Lorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor;)Ljava/lang/String; SourceFile+FactoryComponentRunnerWorkbenchAdvisor.java InnerClasses!   3  40!"  /*# 0! %&'( = )Y++ <! %& ./0 -1 D! %&34 P+5;*+@ LM NO!%&CDEF ,G:M:+-S Z [\]!R%&CDWXYZ[\ ]^ _`B4 ?aMceN*+-kmo*+-qsoue:*+wyo*+{}o "df ghj&k2l>m!4?%&?CD< 6X&X  VL+YMYN-,Y*SMY*,N-+-  * u wxy%z0~BLQU!>V%& M% BL  >*+ !%& %* 5!  Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchWindowAdvisor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1720 Text-content-md5: 3897be6e24fede5c94e9ac1be3e22c50 Text-content-sha1: 3f0bb695ca6ddf3fffec6f81e34ea2ff7639041f Content-length: 1779 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?Norg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchWindowAdvisor1org/eclipse/ui/application/WorkbenchWindowAdvisor:(Lorg/eclipse/ui/application/IWorkbenchWindowConfigurer;)VCode  LineNumberTableLocalVariableTablethisPLorg/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchWindowAdvisor; configurer7Lorg/eclipse/ui/application/IWorkbenchWindowConfigurer;createActionBarAdvisor`(Lorg/eclipse/ui/application/IActionBarConfigurer;)Lorg/eclipse/ui/application/ActionBarAdvisor;Horg/eclipse/egf/batch/application/FactoryComponentRunnerActionBarAdvisor  4(Lorg/eclipse/ui/application/IActionBarConfigurer;)V1Lorg/eclipse/ui/application/IActionBarConfigurer; preWindowOpen()V  getWindowConfigurer9()Lorg/eclipse/ui/application/IWorkbenchWindowConfigurer;org/eclipse/swt/graphics/Point ! "(II)V $&%5org/eclipse/ui/application/IWorkbenchWindowConfigurer '(setInitialSize#(Lorg/eclipse/swt/graphics/Point;)V $* +,setShowCoolBar(Z)V $. /,setShowStatusLine $1 2,setShowProgressIndicator 465*org/eclipse/egf/batch/application/Messages 78>FactoryComponentRunnerWorkbenchWindowAdvisor_Application_TitleLjava/lang/String; $: ;<setTitle(Ljava/lang/String;)V SourceFile1FactoryComponentRunnerWorkbenchWindowAdvisor.java!>*+   = Y+ %  7*L+Y, #+)+-+0+39 -./0&1-263 7 2=> Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 718 Text-content-md5: d3a78b456d1bf7e3832f187b6c948eda Text-content-sha1: 12a9ec2da5f42f4da76621835299d2e623994041 Content-length: 777 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*org/eclipse/egf/batch/application/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue *org.eclipse.egf.batch.application.messages0FactoryComponentRunnerWorkbenchAdvisor_Job_Title>FactoryComponentRunnerWorkbenchWindowAdvisor_Application_Title()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this,Lorg/eclipse/egf/batch/application/Messages; SourceFile Messages.java!   ,  3*  "  Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/headless Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1640 Text-content-md5: 4a47f4fbadb38bd950202f43abc0c015 Text-content-sha1: 4bb2a351dbcc957f2be4f532fff60e368ba94857 Content-length: 1699 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1<Porg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication$1'org/eclipse/core/resources/WorkspaceJobthis$0PLorg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication;val$factoryComponentId_pLjava/lang/String;w(Lorg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication;Ljava/lang/String;Ljava/lang/String;)VCode      (Ljava/lang/String;)VLineNumberTableLocalVariableTablethisRLorg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication$1; $anonymous0runInWorkspaceO(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IStatus; Exceptions&org/eclipse/core/runtime/CoreException  "org/eclipse/egf/core/CoreActivator !" getDefault&()Lorg/eclipse/egf/core/CoreActivator;$,org/eclipse/core/runtime/NullProgressMonitor #& '()V ) *+generateFactoryComponentA(Ljava/lang/String;Lorg/eclipse/core/runtime/IProgressMonitor;Z)Z -/.org/eclipse/core/runtime/Status 01 OK_STATUS"Lorg/eclipse/core/runtime/IStatus; monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; SourceFile(FactoryComponentHeadlessApplication.javaEnclosingMethod8Norg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication :run InnerClasses   H*+ *-*,  ) O*#Y%(W, 012345679;  Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2376 Text-content-md5: 21a246064720b72e08f5c76623017654 Text-content-sha1: 8494b2f444407c13075a5a05ea4e7547977766fc Content-length: 2435 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1lNorg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplicationjava/lang/Object__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable " thisPLorg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication;run(Ljava/lang/String;)V (*)*org/eclipse/egf/batch/application/Messages +,0FactoryComponentRunnerWorkbenchAdvisor_Job_TitleLjava/lang/String; .0/java/text/MessageFormat 12format9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;4Porg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication$1 36 7w(Lorg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication;Ljava/lang/String;Ljava/lang/String;)V 9;:*org/eclipse/core/resources/ResourcesPlugin <= getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; ?A@%org/eclipse/core/resources/IWorkspace BCgetRoot-()Lorg/eclipse/core/resources/IWorkspaceRoot; EGF!org/eclipse/core/runtime/jobs/Job HIsetRule2(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V EK Lschedule EN OjoinQjava/lang/StringBuilderS.FactoryComponentHeadlessApplication.run(..) _ PU & PW XtoString Z [\warn*(Ljava/lang/Object;Ljava/lang/Throwable;)V^java/lang/InterruptedExceptionfactoryComponentId_p jobMessageexecuteFactoryComponentJob#Lorg/eclipse/core/runtime/jobs/Job;root+Lorg/eclipse/core/resources/IWorkspaceRoot; exception_p Ljava/lang/InterruptedException; loggerMessageLjava/lang/StringBuilder; SourceFile(FactoryComponentHeadlessApplication.java InnerClasses! 3  %!  /*!! #$!%& P'Y+S-M3Y*,+5N8>:-D-J-M:PYRT:VY.25]* ()5$6*7.95:7;B<O>HP#$P_,A`,6ab$,cd7efB ghijk 3 Node-path: plugins/org.eclipse.egf.batch.application/bin/org/eclipse/egf/batch/application/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 728 Text-content-md5: 9136d8b10270277359fb85cfe7e83cf3 Text-content-sha1: 638ce8d2e9d8b03c49d00c0be2b6220dbd991e09 Content-length: 738 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### FactoryComponentRunnerWorkbenchAdvisor_Job_Title=Run Factory Component {0} FactoryComponentRunnerWorkbenchWindowAdvisor_Application_Title=Factory Component Runner Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse/egf/batch Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse/egf/batch/application Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse/egf/batch/application/taskdefs Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse/egf/batch/application/taskdefs/AbstractFactoryComponentRunnerTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1006 Text-content-md5: 2143882df4e70031583fe30130a73b98 Text-content-sha1: 6ddaf2d2415bd0e6f9315663ed2bc45bc68edf57 Content-length: 1065 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#Morg/eclipse/egf/batch/application/taskdefs/AbstractFactoryComponentRunnerTask*org/eclipse/egf/common/ant/AbstractAntTask_factoryComponentIdLjava/lang/String;()VCode  LineNumberTableLocalVariableTablethisOLorg/eclipse/egf/batch/application/taskdefs/AbstractFactoryComponentRunnerTask;checkAttributes Exceptions#org/apache/tools/ant/BuildException%Factory Component Id must be provided     assertTrue(Ljava/lang/String;Z)VsetFactoryComponentId(Ljava/lang/String;)VfactoryComponentId_pgetFactoryComponentId()Ljava/lang/String; SourceFile'AbstractFactoryComponentRunnerTask.java! /*    @*  !  >*+ ()   /* 0 !" Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse/egf/batch/application/taskdefs/FactoryComponentHeadlessRunnerTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 795 Text-content-md5: 619f5dd7f260f1dea698150528daff7e Text-content-sha1: 86f3d28993586509427dde65f694d764e81d2957 Content-length: 854 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Morg/eclipse/egf/batch/application/taskdefs/FactoryComponentHeadlessRunnerTaskMorg/eclipse/egf/batch/application/taskdefs/AbstractFactoryComponentRunnerTask()VCode  LineNumberTableLocalVariableTablethisOLorg/eclipse/egf/batch/application/taskdefs/FactoryComponentHeadlessRunnerTask; doExecute Exceptionsjava/lang/ExceptionNorg/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication   getFactoryComponentId()Ljava/lang/String;  run(Ljava/lang/String;)V SourceFile'FactoryComponentHeadlessRunnerTask.java!/* %  =Y* ,-   Node-path: plugins/org.eclipse.egf.batch.application/bin.tasks/org/eclipse/egf/batch/application/taskdefs/FactoryComponentUiRunnerTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 844 Text-content-md5: b091ec1cfef2bbdef982d9251e50b366 Text-content-sha1: e0882ce9ca43eaa0c5d32732726e8fdd5ff8ccd3 Content-length: 903 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#Gorg/eclipse/egf/batch/application/taskdefs/FactoryComponentUiRunnerTaskMorg/eclipse/egf/batch/application/taskdefs/AbstractFactoryComponentRunnerTask()VCode  LineNumberTableLocalVariableTablethisILorg/eclipse/egf/batch/application/taskdefs/FactoryComponentUiRunnerTask; doExecute Exceptionsjava/lang/ExceptionCorg/eclipse/egf/batch/application/FactoryComponentRunnerApplication  java/lang/String-factoryComponentId  getFactoryComponentId()Ljava/lang/String;   run'([Ljava/lang/String;)Ljava/lang/Object; SourceFile!FactoryComponentUiRunnerTask.java!/* &  JYYSY*SW ,-  !" Node-path: plugins/org.eclipse.egf.batch.application/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 858 Text-content-md5: 3fb7e1666de04ce8fb96a7600782c88b Text-content-sha1: 8b4631dfba1a00da847e4ea1b9b68bff82551215 Content-length: 903 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ source.ant_tasks/egf.ant.tasks.jar = tasks/ output.ant_tasks/egf.ant.tasks.jar = bin.tasks/ src.includes = about.html,\ examples/ bin.includes = about.html,\ .,\ plugin.properties,\ plugin.xml,\ META-INF/,\ ant_tasks/egf.ant.tasks.jar jars.compile.order = .,\ ant_tasks/egf.ant.tasks.jar Node-path: plugins/org.eclipse.egf.batch.application/examples Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/examples/build.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 508 Text-content-md5: 5db7067e7cb71aecd07d424db7dfb337 Text-content-sha1: 4890d8f971e89c3623a4a17ecbe8eaf6c3c5b496 Content-length: 553 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 497 Text-content-md5: 8c59e97f53f2531f55ea24efd54b2761 Text-content-sha1: 8ef0866c35f6c23615e889c355034fe9022b4a69 Content-length: 542 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Batch Application (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.batch.application/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1270 Text-content-md5: 5b4f6629d60cf57cf5e58d5b82e722ff Text-content-sha1: f709b7cffa5c64f886fbf44d283860963301ff72 Content-length: 1315 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/EgfApplicationActivator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1583 Text-content-md5: 33b142177c624e870fda5c929cd3e4fa Text-content-sha1: 20805b7ad95915fc8bb438abb778c39f441b7d3b Content-length: 1628 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application; import org.eclipse.egf.common.ui.activator.AbstractUIActivator; import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle. */ public class EgfApplicationActivator extends AbstractUIActivator { // The shared instance private static EgfApplicationActivator __plugin; /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context) throws Exception { super.start(context); __plugin = this; } /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext context) throws Exception { __plugin = null; super.stop(context); } /** * Returns the shared instance * @return the shared instance */ public static EgfApplicationActivator getDefault() { return __plugin; } } Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/FactoryComponentRunnerActionBarAdvisor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1448 Text-content-md5: f72a24eb2b7c7a06a9986c0462730f5e Text-content-sha1: 96de24372a44569b154bcc9247d6294382045d8f Content-length: 1493 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application; import org.eclipse.jface.action.IMenuManager; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; /** * This class configures the action bars content of a workbench window. * @author Guillaume Brocard */ public class FactoryComponentRunnerActionBarAdvisor extends ActionBarAdvisor { /** * Constructor. * @param configurer */ public FactoryComponentRunnerActionBarAdvisor(IActionBarConfigurer configurer) { super(configurer); } /** * @see org.eclipse.ui.application.ActionBarAdvisor#makeActions(org.eclipse.ui.IWorkbenchWindow) */ @Override protected void makeActions(IWorkbenchWindow window) { // Do nothing. } @Override protected void fillMenuBar(IMenuManager menuBar) { // Do nothing. } } Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/FactoryComponentRunnerApplication.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3286 Text-content-md5: b4783275b5d0cb7bc4020ecddcf7d959 Text-content-sha1: af6dfccf6148d983c95e64fcec10c004500d8b4b Content-length: 3331 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PlatformUI; /** * This class controls all aspects of the application's execution.
* This application is a workbench window that runs given factory component and exit immediately when execution is done. */ public class FactoryComponentRunnerApplication implements IApplication { /** * Constant to be used to set the factory component to run. */ public static final String FACTORY_COMPONENT_ID = "-factoryComponentId"; //$NON-NLS-1$ /** * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext) */ public Object start(IApplicationContext context_p) throws Exception { String[] args = (String[]) context_p.getArguments().get(IApplicationContext.APPLICATION_ARGS); return run(args); } /** * Starts this application with the given context and returns a result. * @param args_p * @return */ public Object run(String[] args_p) { String factoryComponentId = getFactoryComponentId(args_p); // Precondition. if ((null == factoryComponentId) || (factoryComponentId.length() == 0)) { // Exist with failed status. return new Integer(-1); } Display display = PlatformUI.createDisplay(); try { FactoryComponentRunnerWorkbenchAdvisor workbenchAdvisor = new FactoryComponentRunnerWorkbenchAdvisor(); // Set it the factory component to run. workbenchAdvisor.setExecutedFactoryComponentId(factoryComponentId); int returnCode = PlatformUI.createAndRunWorkbench(display, workbenchAdvisor); if (returnCode == PlatformUI.RETURN_RESTART) { return IApplication.EXIT_RESTART; } return IApplication.EXIT_OK; } finally { display.dispose(); } } /** * @see org.eclipse.equinox.app.IApplication#stop() */ public void stop() { final IWorkbench workbench = PlatformUI.getWorkbench(); if (workbench == null) return; final Display display = workbench.getDisplay(); display.syncExec(new Runnable() { public void run() { if (!display.isDisposed()) workbench.close(); } }); } /** * Get the fc id from the arguments command line. * @return */ private String getFactoryComponentId(String[] args_p) { String result = null; for (int i = 0; i < args_p.length && (null == result); i++) { String argument = args_p[i]; if (argument.equals(FACTORY_COMPONENT_ID)) { result = args_p[++i]; } } return result; } } Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchAdvisor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6651 Text-content-md5: 27a4152547070c2fcabce8ae3fb2a007 Text-content-sha1: d93c88cca37ebb4d2b092fbb8368b2721e945c02 Content-length: 6696 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.batch.application; import java.net.URL; import java.text.MessageFormat; import org.apache.log4j.Logger; import org.osgi.framework.Bundle; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.application.IWorkbenchConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchAdvisor; import org.eclipse.ui.application.WorkbenchWindowAdvisor; import org.eclipse.ui.ide.IDE; import org.eclipse.ui.internal.ide.model.WorkbenchAdapterBuilder; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.ui.workbench.perspective.EgfPerspective; /** * This class configures the workbench to be able to run a factory component. * @author Guillaume Brocard */ public class FactoryComponentRunnerWorkbenchAdvisor extends WorkbenchAdvisor { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(FactoryComponentRunnerWorkbenchAdvisor.class.getPackage().getName()); private String _factoryComponentId; /** * @see org.eclipse.ui.application.WorkbenchAdvisor#createWorkbenchWindowAdvisor(org.eclipse.ui.application.IWorkbenchWindowConfigurer) */ @Override public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) { return new FactoryComponentRunnerWorkbenchWindowAdvisor(configurer); } /** * @see org.eclipse.ui.application.WorkbenchAdvisor#getInitialWindowPerspectiveId() */ @Override public String getInitialWindowPerspectiveId() { return EgfPerspective.PERSPECTIVE_ID; } /** * @see org.eclipse.ui.application.WorkbenchAdvisor#initialize(org.eclipse.ui.application.IWorkbenchConfigurer) */ @Override public void initialize(IWorkbenchConfigurer configurer_p) { configurer_p.setSaveAndRestore(true); WorkbenchAdapterBuilder.registerAdapters(); declareWorkbenchImages(configurer_p); } /** * Declares a workbench image. * @param configurer_p * @param symbolicName_p the symbolic name of the image * @param path_p the path of the image file; this path is relative to the base of the IDE plug-in * @param shared_p true if this is a shared image, and false if this is not a shared image * @see IWorkbenchConfigurer#declareImage */ private void declareWorkbenchImage(IWorkbenchConfigurer configurer_p, Bundle bundle_p, String symbolicName_p, String path_p, boolean shared_p) { URL url = bundle_p.getEntry(path_p); ImageDescriptor desc = ImageDescriptor.createFromURL(url); configurer_p.declareImage(symbolicName_p, desc, shared_p); } /** * Declares specific workbench images. * @see IWorkbenchConfigurer#declareImage */ private void declareWorkbenchImages(IWorkbenchConfigurer configurer_p) { final String ICONS_PATH = "icons/full/obj16/";//$NON-NLS-1$ // Declare IDE specific images. Bundle ideBundle = Platform.getBundle("org.eclipse.ui.ide"); //$NON-NLS-1$ declareWorkbenchImage(configurer_p, ideBundle, IDE.SharedImages.IMG_OBJ_PROJECT, ICONS_PATH + "prj_obj.gif", true); //$NON-NLS-1$ declareWorkbenchImage(configurer_p, ideBundle, IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED, ICONS_PATH + "cprj_obj.gif", true); //$NON-NLS-1$ // Declare UI specific images. Bundle uiBundle = Platform.getBundle("org.eclipse.ui"); //$NON-NLS-1$ declareWorkbenchImage(configurer_p, uiBundle, ISharedImages.IMG_OBJ_FILE, ICONS_PATH + "file_obj.gif", true); //$NON-NLS-1$ declareWorkbenchImage(configurer_p, uiBundle, ISharedImages.IMG_OBJ_FOLDER, ICONS_PATH + "fldr_obj.gif", true); //$NON-NLS-1$ } /** * @see org.eclipse.ui.application.WorkbenchAdvisor#postStartup() */ @Override public void postStartup() { // First, refresh the workspace content. IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); try { root.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); } catch (CoreException exception_p) { StringBuilder loggerMessage = new StringBuilder("FactoryComponentRunnerWorkbenchAdvisor.postStartup(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } // Create a new job that runs given factory component from its id. String jobMessage = MessageFormat.format(Messages.FactoryComponentRunnerWorkbenchAdvisor_Job_Title, new Object[] { _factoryComponentId }); Job executeFactoryComponentJob = new WorkspaceJob(jobMessage) { /** * @see org.eclipse.core.resources.WorkspaceJob#runInWorkspace(org.eclipse.core.runtime.IProgressMonitor) */ @SuppressWarnings("synthetic-access") @Override public IStatus runInWorkspace(IProgressMonitor monitor_p) throws CoreException { // Run the factory component from its id. CoreActivator.getDefault().generateFactoryComponent(_factoryComponentId, monitor_p, false); // Close the workbench, because factory component run is over. final IWorkbench workbench = PlatformUI.getWorkbench(); workbench.getDisplay().asyncExec(new Runnable() { /** * @see java.lang.Runnable#run() */ public void run() { workbench.close(); } }); return Status.OK_STATUS; } }; // Execute the job. executeFactoryComponentJob.setRule(root); executeFactoryComponentJob.schedule(); } /** * Set the value of the factory component to execute. * @param fcId_p */ public void setExecutedFactoryComponentId(String fcId_p) { _factoryComponentId = fcId_p; } } Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/FactoryComponentRunnerWorkbenchWindowAdvisor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2049 Text-content-md5: 3fb01804e7e68a2947fa61209caa918e Text-content-sha1: a359af11d28fc57258f98ad444569fa2bb85880e Content-length: 2094 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchWindowAdvisor; /** * This class configures the workbench to be able to run a factory component. * @author Guillaume Brocard */ public class FactoryComponentRunnerWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { /** * Constructor. * @param configurer */ public FactoryComponentRunnerWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) { super(configurer); } /** * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#createActionBarAdvisor(org.eclipse.ui.application.IActionBarConfigurer) */ @Override public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) { return new FactoryComponentRunnerActionBarAdvisor(configurer); } /** * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#preWindowOpen() */ @Override public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(400, 300)); configurer.setShowCoolBar(true); configurer.setShowStatusLine(true); configurer.setShowProgressIndicator(true); configurer.setTitle(Messages.FactoryComponentRunnerWorkbenchWindowAdvisor_Application_Title); } } Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1233 Text-content-md5: 9f905ee682efa09a2a8e32f94f2d8da1 Text-content-sha1: 3001758df7f54f827e05a2f31bfe0ec8dad3fe59 Content-length: 1278 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application; import org.eclipse.osgi.util.NLS; /** * I18n translation helper. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.batch.application.messages"; //$NON-NLS-1$ public static String FactoryComponentRunnerWorkbenchAdvisor_Job_Title; public static String FactoryComponentRunnerWorkbenchWindowAdvisor_Application_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/headless Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/headless/FactoryComponentHeadlessApplication.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2768 Text-content-md5: 3db0510ac11814ca9f373ae622659e14 Text-content-sha1: ea2cd42f9c869e41b111f5628ccd5d4b9b337d41 Content-length: 2813 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application.headless; import java.text.MessageFormat; import org.apache.log4j.Logger; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.egf.batch.application.Messages; import org.eclipse.egf.core.CoreActivator; /** * Run given factory component from a given id. * @author Guillaume Brocard */ public class FactoryComponentHeadlessApplication { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(FactoryComponentHeadlessApplication.class.getPackage().getName()); public synchronized void run(final String factoryComponentId_p) { String jobMessage = MessageFormat.format(Messages.FactoryComponentRunnerWorkbenchAdvisor_Job_Title, new Object[] { factoryComponentId_p }); Job executeFactoryComponentJob = new WorkspaceJob(jobMessage) { /** * @see org.eclipse.core.resources.WorkspaceJob#runInWorkspace(org.eclipse.core.runtime.IProgressMonitor) */ @Override public IStatus runInWorkspace(IProgressMonitor monitor_p) throws CoreException { // Run the factory component from its id. CoreActivator.getDefault().generateFactoryComponent(factoryComponentId_p, new NullProgressMonitor(), false); return Status.OK_STATUS; } }; // Execute the job. IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); executeFactoryComponentJob.setRule(root); executeFactoryComponentJob.schedule(); try { executeFactoryComponentJob.join(); } catch (InterruptedException exception_p) { StringBuilder loggerMessage = new StringBuilder("FactoryComponentHeadlessApplication.run(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } } Node-path: plugins/org.eclipse.egf.batch.application/src/org/eclipse/egf/batch/application/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 728 Text-content-md5: 9136d8b10270277359fb85cfe7e83cf3 Text-content-sha1: 638ce8d2e9d8b03c49d00c0be2b6220dbd991e09 Content-length: 773 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### FactoryComponentRunnerWorkbenchAdvisor_Job_Title=Run Factory Component {0} FactoryComponentRunnerWorkbenchWindowAdvisor_Application_Title=Factory Component Runner Node-path: plugins/org.eclipse.egf.batch.application/tasks Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/tasks/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse/egf/batch Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse/egf/batch/application Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse/egf/batch/application/taskdefs Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse/egf/batch/application/taskdefs/AbstractFactoryComponentRunnerTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1798 Text-content-md5: 106f76432493e9994ae790b2950a8f71 Text-content-sha1: aa1bbbc1084fab1b46de50ff5d0564cf53364e83 Content-length: 1843 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application.taskdefs; import org.apache.tools.ant.BuildException; import org.eclipse.egf.common.ant.AbstractAntTask; /** * Base class to implement contributed Ant task that runs factory component. * @author Guillaume Brocard */ public abstract class AbstractFactoryComponentRunnerTask extends AbstractAntTask { /** * Store the id of the executed factory component. */ private String _factoryComponentId; /** * @see org.eclipse.egf.common.ant.AbstractAntTask#checkAttributes() */ @Override protected void checkAttributes() throws BuildException { assertTrue("Factory Component Id must be provided", (null != _factoryComponentId)); //$NON-NLS-1$ } /** * Set the id of executed factory component. * @param factoryComponentId_p */ public void setFactoryComponentId(String factoryComponentId_p) { _factoryComponentId = factoryComponentId_p; } /** * Return the factory component id set through {@link #setFactoryComponentId(String)} method. * @return the factoryComponentId or null if not set. */ protected String getFactoryComponentId() { return _factoryComponentId; } } Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse/egf/batch/application/taskdefs/FactoryComponentHeadlessRunnerTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1908 Text-content-md5: b6d2421b8cfb28acdd91f37f92e8565a Text-content-sha1: 225b9b1ee58a753e7c9c68660f76bc16df0789a4 Content-length: 1953 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application.taskdefs; import org.eclipse.egf.batch.application.headless.FactoryComponentHeadlessApplication; /** * Run a factory component from provided factory component id.
* It instantiates {@link FactoryComponentRunnerApplication} to run the provided FC.
*

* This task is supposed to be executed by the Eclipse {@link AntRunner} application.
* The following command line will start the {@link AntRunner} application and run the specified Ant script. *

*

* eclipseDir/eclipse -noSplash -data worspaceDir -application org.eclipse.ant.core.antRunner -buildfile antScript *

*

* Usage example: *

* *
 * <egf.FactoryComponentRunnerInHeadlessMode factoryComponentId="fc.1197474451873.101" />
 * 
* * In examples folder, you will find an Ant script example (i.e build.xml) that you can use to write your own one. * @author Guillaume Brocard */ public class FactoryComponentHeadlessRunnerTask extends AbstractFactoryComponentRunnerTask { /** * @see org.eclipse.egf.common.ant.AbstractAntTask#doExecute() */ @Override protected void doExecute() throws Exception { new FactoryComponentHeadlessApplication().run(getFactoryComponentId()); } } Node-path: plugins/org.eclipse.egf.batch.application/tasks/org/eclipse/egf/batch/application/taskdefs/FactoryComponentUiRunnerTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2056 Text-content-md5: 25313a5fa989c8253ce7b7891826cbe0 Text-content-sha1: e8011bdae4a3b12c660031f8e84180fe2ebd6421 Content-length: 2101 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.batch.application.taskdefs; import org.eclipse.egf.batch.application.FactoryComponentRunnerApplication; /** * Run a factory component from provided factory component id.
* It instantiates {@link FactoryComponentRunnerApplication} to run the provided FC in a workbench window.
* Hence, it must be launched by a non UI Thread Java application. *

* This task is supposed to be executed by the Eclipse {@link AntRunner} application.
* The following command line will start the {@link AntRunner} application and run the specified Ant script. *

*

* eclipseDir/eclipse -noSplash -data worspaceDir -application org.eclipse.ant.core.antRunner -buildfile antScript *

*

* Usage example: *

* *
 * <egf.FactoryComponentRunnerInWorkbenchWindow factoryComponentId="fc.1197474451873.101" />
 * 
* * In examples folder, you will find an Ant script example (i.e build.xml) that you can use to write your own one. * @author Guillaume Brocard */ public class FactoryComponentUiRunnerTask extends AbstractFactoryComponentRunnerTask { /** * @see org.eclipse.egf.common.ant.AbstractAntTask#doExecute() */ @Override protected void doExecute() throws Exception { new FactoryComponentRunnerApplication().run(new String[] { FactoryComponentRunnerApplication.FACTORY_COMPONENT_ID, getFactoryComponentId() }); } } Node-path: plugins/org.eclipse.egf.common/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 374 Text-content-md5: 911717b9d08ea50d6c596c1f43830080 Text-content-sha1: 00e1f1bc150986effc780aa7408f83a5747113fd Content-length: 419 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.common/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 683 Text-content-md5: d42d7ab2a2e3e9e4e852affa487c2513 Text-content-sha1: 6b8d308d4782600152e78838305719d97db2affa Content-length: 728 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.common org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.common/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: a4e6115c8dcdb4a8fbf0b3308e69c2e2 Text-content-sha1: 7bc6e403012bc1194d12e508b65f294c03b07542 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:57 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.common/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1165 Text-content-md5: 1a6f45d58d0fd8a7b638572ad935f06a Text-content-sha1: 10afd7d5548a6526180b15aa2f3d58087e5e4fcf Content-length: 1210 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.common;singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.egf.common.activator.CommonActivator Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.apache.log4j;visibility:=reexport, org.eclipse.core.resources;visibility:=reexport, org.eclipse.core.runtime;visibility:=reexport, org.eclipse.emf.common, org.eclipse.jdt.core;visibility:=reexport, org.eclipse.pde.core;visibility:=reexport, org.eclipse.emf.codegen.ecore, org.apache.ant;visibility:=reexport, org.eclipse.ant.core;visibility:=reexport Export-Package: org.eclipse.egf.common.activator, org.eclipse.egf.common.adapter, org.eclipse.egf.common.ant, org.eclipse.egf.common.constant, org.eclipse.egf.common.descriptor, org.eclipse.egf.common.descriptor.pattern.helper, org.eclipse.egf.common.generator, org.eclipse.egf.common.helper, org.eclipse.egf.common.listener, org.eclipse.egf.common.misc, org.eclipse.egf.common.progress Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.common/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.common/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/activator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/activator/AbstractActivator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2769 Text-content-md5: dc6d4dda7328a56f521ebcfca990ee2c Text-content-sha1: e62f8c85e02332a19b076d6ce8618c8d628a14bf Content-length: 2828 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1f2org/eclipse/egf/common/activator/AbstractActivatororg/eclipse/core/runtime/Plugin()VCode  LineNumberTableLocalVariableTablethis4Lorg/eclipse/egf/common/activator/AbstractActivator;log(Ljava/lang/Throwable;)V java/lang/Throwable  getMessage()Ljava/lang/String;  newErrorStatusK(Ljava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus;  %(Lorg/eclipse/core/runtime/IStatus;)VtLjava/lang/Throwable; org/eclipse/core/runtime/Status " # getPluginID % &>(ILjava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)VmessageLjava/lang/String; exception(Ljava/lang/String;)V , -.getLog!()Lorg/eclipse/core/runtime/ILog; 021*org/eclipse/egf/common/helper/StatusHelper 34 newStatus^(Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus; 67org/eclipse/core/runtime/ILog*(Ljava/lang/String;Ljava/lang/Throwable;)V : ;7(Ljava/lang/String;Lorg/eclipse/core/runtime/IStatus;)V;(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V Signature>(Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Throwable;)V@Exception in {0}.{1}: {2}Bjava/lang/Object DFEjava/lang/Class GgetName IKJorg/eclipse/osgi/util/NLS LMbind9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; O 8clazzLjava/lang/Class; methodNameLocalVariableTypeTableLjava/lang/Class<*>;status"Lorg/eclipse/core/runtime/IStatus;+(ILjava/lang/String;Ljava/lang/Throwable;)VseverityIe \ ]^ getBundle()Lorg/osgi/framework/Bundle; `baorg/osgi/framework/Bundle cgetSymbolicName SourceFileAbstractActivator.java! /*   F**++    NY*!+,$ %  '()*L*+*!+/5 23  '(8R*+*!+,/9 ?@  '(<=>|*?AY+CSY,SY-SH-N JK * PQR(S PT?*+9 ST  UVW`*Y*!,-$ Z[ * XY'(Z;l"+*+*!+/5*+,5 efh!i " "'("UV#4 *[_ q  de Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/activator/CommonActivator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1935 Text-content-md5: 71d196a78e66813f59ccd7ecedf2652c Text-content-sha1: c53ad2c090e0e17eb32f4e2f6180580297fa978b Content-length: 1994 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1E0org/eclipse/egf/common/activator/CommonActivator2org/eclipse/egf/common/activator/AbstractActivator$EXTENSION_POINT_SHORT_ID_USER_HELPERLjava/lang/String; ConstantValue  user_helper__plugin2Lorg/eclipse/egf/common/activator/CommonActivator; _userHelper3Lorg/eclipse/egf/common/helper/IUserEnforcedHelper;()VCode  LineNumberTableLocalVariableTablethis getDefault4()Lorg/eclipse/egf/common/activator/CommonActivator;  start%(Lorg/osgi/framework/BundleContext;)V Exceptionsjava/lang/Exception   context_p"Lorg/osgi/framework/BundleContext;stop % #getUserEnforcedHelper5()Lorg/eclipse/egf/common/helper/IUserEnforcedHelper; ) + ,- getPluginID()Ljava/lang/String; /102org/eclipse/egf/common/helper/ExtensionPointHelper 23getConfigurationElementsW(Ljava/lang/String;Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement;5class /7 89createInstanceV(Lorg/eclipse/core/runtime/IConfigurationElement;Ljava/lang/String;)Ljava/lang/Object;;1org/eclipse/egf/common/helper/IUserEnforcedHelper=8org/eclipse/egf/common/internal/helper/DefaultUserHelper <configurationElements1[Lorg/eclipse/core/runtime/IConfigurationElement;instantiatedClassLjava/lang/Object; SourceFileCommonActivator.java!  /*  $.F *+*67 8  !"#F *+$?@ A  !"&'I*(@**.L+ ++246M,: *,:(*(*(*(6 IL M KOSTR#W*X2\9]D` I 3?@#ABCD Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/adapter Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/adapter/AbstractAdapterFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2237 Text-content-md5: 7b32c1e21f7a3260bdf8651dcf7fa480 Text-content-sha1: 75964cf9351a7368d78b58f84f1d015a4e275849 Content-length: 2296 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1`5org/eclipse/egf/common/adapter/AbstractAdapterFactoryjava/lang/Object(org/eclipse/core/runtime/IAdapterFactory()VCode  LineNumberTableLocalVariableTablethis7Lorg/eclipse/egf/common/adapter/AbstractAdapterFactory; getAdapter7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;   getAdapters()Ljava/util/Map;  java/util/Map entrySet()Ljava/util/Set;  java/util/Set !iterator()Ljava/util/Iterator; #%$java/util/Iterator &'next()Ljava/lang/Object;)java/util/Map$Entry (+ ,'getKey.java/lang/Class -0 12 isInstance(Ljava/lang/Object;)Z (4 5'getValue70org/eclipse/egf/common/adapter/AdapterDescriptor 69 ' #; <=hasNext()ZadaptableObject_pLjava/lang/Object; adapterType_pLjava/lang/Class;adapterLjava/util/Iterator;entryLjava/util/Map$Entry; modelObjectadapterDescriptor2Lorg/eclipse/egf/common/adapter/AdapterDescriptor;LocalVariableTypeTablesLjava/util/Iterator;Lorg/eclipse/egf/common/adapter/AdapterDescriptor;>;>;]Ljava/util/Map$Entry;Lorg/eclipse/egf/common/adapter/AdapterDescriptor;>;Ljava/lang/Class<*>; SignatureY()Ljava/util/Map;Lorg/eclipse/egf/common/adapter/AdapterDescriptor;>;getPlatformAdapter:(Ljava/lang/Object;Ljava/lang/Class<*>;)Ljava/lang/Object; RTS!org/eclipse/core/runtime/Platform UVgetAdapterManager,()Lorg/eclipse/core/runtime/IAdapterManager; XZY(org/eclipse/core/runtime/IAdapterManager  adaptable_p SourceFileAbstractAdapterFactory.java InnerClassesEntry! /*    XN*:6"(:*-:+/36:8N:-- * !"#!$-&6'B(H"V+ RXX>?X@AVB?F C!'DE-FABGHI F J!'DK-FLMN OMP Q Q*+W @  [? @AI  @L\]^ (_ Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/adapter/AdapterDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1972 Text-content-md5: 7a6906895c4854ee5bef286d876638f5 Text-content-sha1: a3e8df49933226809863115585525ba07fabb557 Content-length: 2031 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1`0org/eclipse/egf/common/adapter/AdapterDescriptorjava/lang/Object__loggerLorg/apache/log4j/Logger;_couple$Lorg/eclipse/egf/common/misc/Couple; SignatureLLorg/eclipse/egf/common/misc/Couple;Ljava/lang/Object;>;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; ! LineNumberTableLocalVariableTable(Ljava/lang/Class;)V(Ljava/lang/Class<*>;)V ( $ *"org/eclipse/egf/common/misc/Couple ), $-'(Ljava/lang/Object;Ljava/lang/Object;)V / this2Lorg/eclipse/egf/common/adapter/AdapterDescriptor; objectClass_pLjava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>; getAdapter()Ljava/lang/Object; )9 :7getValue )< =7getKey ? @7 newInstance )B CDsetValue(Ljava/lang/Object;)VFjava/lang/StringBuilderH#AdapterDescriptor.getAdapter(..) _ EJ $K(Ljava/lang/String;)V EM NtoString P QRerror*(Ljava/lang/Object;Ljava/lang/Throwable;)VT java/lang/InstantiationExceptionV java/lang/IllegalAccessExceptionadapterLjava/lang/Object; exception_p"Ljava/lang/InstantiationException; loggerMessageLjava/lang/StringBuilder;"Ljava/lang/IllegalAccessException; SourceFileAdapterDescriptor.java!    3 " #$% & `*'*)Y++."#01234 2567 V*.8L+K*.;>L*.+A2MEYGIN -L,OMEYGIN -L,O+ "%S ">U". &' )*%+&,0->/?0I1T4#>V01NWX&YZ0 [\?Y]I [\^_ Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/ant Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/ant/AbstractAntTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1619 Text-content-md5: db2169be9716442f808bf67e6e8c707f Text-content-sha1: 733cd40a773f8c39e4db0c76a96fea6fc597c2ef Content-length: 1678 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1E*org/eclipse/egf/common/ant/AbstractAntTaskorg/apache/tools/ant/Task()VCode  LineNumberTableLocalVariableTablethis,Lorg/eclipse/egf/common/ant/AbstractAntTask; assertTrue(Ljava/lang/String;Z)V Exceptions#org/apache/tools/ant/BuildException  (Ljava/lang/String;)V message_pLjava/lang/String; expression_pZgetProgressMonitor-()Lorg/eclipse/core/runtime/IProgressMonitor;   getProject ()Lorg/apache/tools/ant/Project; !#"org/apache/tools/ant/Project $% getReferences()Ljava/util/Hashtable;'eclipse.progress.monitor )+*java/util/Hashtable ,-get&(Ljava/lang/Object;)Ljava/lang/Object;/)org/eclipse/core/runtime/IProgressMonitor1,org/eclipse/core/runtime/NullProgressMonitor 0 4java/lang/ExceptionprogressMonitor+Lorg/eclipse/core/runtime/IProgressMonitor;execute 9 :checkAttributes < = doExecute ? @(Ljava/lang/Throwable;)V exception_pLjava/lang/Exception; SourceFileAbstractAntTask.java!/*   J Y*  ! # v&** &(.L++L0Y23 +,-.14 & 567v"*8*;L++Y+> 3 <> ? @AC!E " AB:+ M  =3CD Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/constant Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/constant/ICommonConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1744 Text-content-md5: 659fc1d5de6fdebd377c861343e2ef06 Text-content-sha1: b5a2e5110f76982084e62fbee30fec7044866759 Content-length: 1803 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1`0org/eclipse/egf/common/constant/ICommonConstantsjava/lang/ObjectINTERNAL_ERRORI ConstantValue EMPTY_STRINGLjava/lang/String;  TAB_CHARACTERC SLASH_CHARACTER/ DOT_CHARACTER.COMMA_CHARACTER,SEMICOLON_CHARACTER;COLON_CHARACTER:WHITE_SPACE_CHARACTER PLATFORM_RESOURCEplatform:/resource/ EOL_CHARACTER QUOTE_CHARACTER"PARENTHESIS_OPEN_CHARACTER(PARENTHESIS_CLOSE_CHARACTER)UNDERSCORE_CHARACTER_ HTTP_PREFIX+http://ECORE_FILE_EXTENSION.ecoreGENMODEL_FILE_EXTENSION1genmodelECORE_DIAGRAM_FILE_EXTENSION4 ecorediagLINE_SEPARATORGENERATED_FOLDER_PATH8 generatedGENERATED_FOLDER_IPATH Lorg/eclipse/core/runtime/IPath;MODEL_FOLDER_PATH=modelMODEL_FOLDER_IPATHTEMPLATES_FOLDER_PATHA templatesTEMPLATES_FOLDER_IPATH()VCodeGline.separator IKJjava/lang/System LM getProperty&(Ljava/lang/String;)Ljava/lang/String; O 5 Qorg/eclipse/core/runtime/Path PS TU(Ljava/lang/String;)V W 9: Y >: [ B:LineNumberTableLocalVariableTable SourceFileICommonConstants.java     !"#$%&'() *, -/ 02 35 6 79:; <>:? @B:CDE]-FHNPY7RVPY<RXPY@RZ\w ,]^_ Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/constant/IEMFConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 674 Text-content-md5: e24444befecd4afcb07f9953ef42ce5f Text-content-sha1: 4aeb363c76ed7afb87c644ea6d458591a5af5251 Content-length: 733 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-org/eclipse/egf/common/constant/IEMFConstantsjava/lang/Object/GENERATED_PACKAGE_EXTENSION_POINT_ATT_GEN_MODELLjava/lang/String; ConstantValue genModel)GENERATED_PACKAGE_EXTENSION_POINT_ATT_URI uri'GENERATED_PACKAGE_EXTENSION_POINT_CHILDpackage+GENERATED_PACKAGE_EXTENSION_POINT_PLUGIN_IDorg.eclipse.emf.ecore*GENERATED_PACKAGE_EXTENSION_POINT_SHORT_IDgenerated_package)GENERATED_PACKAGE_EXTENSION_POINT_FULL_ID'org.eclipse.emf.ecore.generated_package SourceFileIEMFConstants.java    Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/constant/IPatternConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1222 Text-content-md5: 52fa907c55a5b93fb0ec8feb5a20b4a3 Text-content-sha1: 3ef28e2d0a413a9c7b364160389fd11ec4e8dafa Content-length: 1281 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 141org/eclipse/egf/common/constant/IPatternConstantsjava/lang/ObjectPATTERN_PLUGIN_IDLjava/lang/String; ConstantValue org.eclipse.egf.patternPATTERN_EXTENSION_POINT_ID patternPATTERN_EXTENSION_POINT_FULL_IDorg.eclipse.egf.pattern.pattern"PATTERN_EXTENSION_POINT_CHILD_TYPEpatternExtType&PATTERN_EXTENSION_CONTAINING_PLUGIN_IDpluginId$PATTERN_EXTENSION_CONTAINING_FC_NAMEfcName PATTERN_EXTENSION_FROM_WORKSPACE fromWorkspace#PATTERN_EXTENSION_WORKSPACE_PROJECT wsProject%PATTERN_EXTENSION_POINT_CHILD_LIBRARY!library%PATTERN_EXTENSION_POINT_CHILD_PATTERN/LIBRARY_PRODUCTION_ORCHESTRATION_ATTRIBUTE_NAME%productionOrchestration,LIBRARY_RUNTIME_ORCHESTRATION_ATTRIBUTE_NAME(runtimeOrchestrationPATTERN_MODEL_ATTRIBUTE_NAME+modelLIBRARY_PATTERN_ID_SEPARATORC/JAVA_SOURCE_FILE_EXTENSION1java SourceFileIPatternConstants.java    " #$&')*,-./023 Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/constant/IPatternTemplateConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 772 Text-content-md5: b0d742e7bcc27f0244b85aa7065767c2 Text-content-sha1: 1d9ce402baa30d22e486f3cf0f4c67e5f7a2b99c Content-length: 831 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 19org/eclipse/egf/common/constant/IPatternTemplateConstantsjava/lang/ObjectPATTERN_PLUGIN_IDLjava/lang/String; ConstantValue org.eclipse.egf.pattern#PATTERN_TEMPLATE_EXTENSION_POINT_ID patternTemplate(PATTERN_TEMPLATE_EXTENSION_POINT_FULL_ID'org.eclipse.egf.pattern.patternTemplate+PATTERN_TEMPLATE_EXTENSION_POINT_CHILD_TYPEpatternTemplateExtType7PATTERN_TEMPLATE_EXTENSION_POINT_CHILD_PATTERN_TEMPLATEPATTERN_TEMPLATE_ATT_CLASSclassPATTERN_TEMPLATE_ATT_TYPEtypePATTERN_TEMPLATE_ATT_PATHpath SourceFileIPatternTemplateConstants.java     Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/descriptor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/descriptor/GenericDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2505 Text-content-md5: 36a7df73aa9f1089acd6c4fd290ef8c2 Text-content-sha1: 1eadfc09561c53f1cd273802363e00d73ace3bc5 Content-length: 2564 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1d3org/eclipse/egf/common/descriptor/GenericDescriptorjava/lang/Object-org/eclipse/egf/common/descriptor/IDescriptor _propertiesLjava/util/Map; Signature5Ljava/util/Map; _childrenLjava/util/List;ALjava/util/List;_parent/Lorg/eclipse/egf/common/descriptor/IDescriptor;()VCode  java/util/HashMap  (I)V  java/util/ArrayList   LineNumberTableLocalVariableTablethis5Lorg/eclipse/egf/common/descriptor/GenericDescriptor;getValue&(Ljava/lang/String;)Ljava/lang/Object; (*) java/util/Map +,get&(Ljava/lang/Object;)Ljava/lang/Object;propertyName_pLjava/lang/String;setValue'(Ljava/lang/String;Ljava/lang/Object;)V (2 34put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;value_pLjava/lang/Object; getChildren()Ljava/util/List;C()Ljava/util/List; addChildren(Ljava/util/List;)VE(Ljava/util/List<+Lorg/eclipse/egf/common/descriptor/IDescriptor;>;)V >@?java/util/List ABiterator()Ljava/util/Iterator; DFEjava/util/Iterator GHnext()Ljava/lang/Object; J KLaddChild2(Lorg/eclipse/egf/common/descriptor/IDescriptor;)V DN OPhasNext()Z descriptors_p descriptorLocalVariableTypeTableBLjava/util/List<+Lorg/eclipse/egf/common/descriptor/IDescriptor;>; >V WXadd(Ljava/lang/Object;)Z Z [L setParent descriptor_p getParent1()Lorg/eclipse/egf/common/descriptor/IDescriptor; ` parent_p SourceFileGenericDescriptor.java!     S**Y*Y!*+,-" #$%&? *+'!3" #$ -./0O *+,1W! < ="  #$ -. 5678 9/*!C" #$:; <#+=N-CM*,I-M!LML"O" ##$#Q RS #QTKL[*+UW+ +*Y!V XY["#$\]^/*_!a" #$[L>*+_! ij"#$abc Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/descriptor/IDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 402 Text-content-md5: cd782965a5a5d62363cb8196732bc5e8 Text-content-sha1: 6ef52ac4a69f09b6978bd5f0f49589132ad57e8a Content-length: 461 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-org/eclipse/egf/common/descriptor/IDescriptorjava/lang/ObjectgetValue&(Ljava/lang/String;)Ljava/lang/Object; getParent1()Lorg/eclipse/egf/common/descriptor/IDescriptor; getChildren()Ljava/util/List; SignatureC()Ljava/util/List; SourceFileIDescriptor.java     Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/descriptor/pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/descriptor/pattern/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 399 Text-content-md5: 28716984e0af012b4165ca5549c7fdad Text-content-sha1: 265545a7d7784fe4e831a6034e47af9cef16113b Content-length: 458 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 Jorg/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandlerjava/lang/ObjecthandleLibraryDescriptorD(Lorg/eclipse/egf/common/descriptor/IDescriptor;Ljava/lang/String;)VhandlePatternDescriptorhandleDescriptor2(Lorg/eclipse/egf/common/descriptor/IDescriptor;)V SourceFileIPatternDescriptorHandler.java   Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/descriptor/pattern/helper/PatternDescriptorStrategy.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3892 Text-content-md5: 6c81ed668b6aa044fea9d55a12828ac5 Text-content-sha1: 5e8daa96b2f9d8d27f17219260affb69fbaa2153 Content-length: 3951 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Jorg/eclipse/egf/common/descriptor/pattern/helper/PatternDescriptorStrategyjava/lang/Object()VCode  LineNumberTableLocalVariableTablethisLLorg/eclipse/egf/common/descriptor/pattern/helper/PatternDescriptorStrategy;(iterateThroughPatternExtensionDescriptor~(Lorg/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler;Lorg/eclipse/egf/common/descriptor/IDescriptor;)V   handlePatternExtensionDescriptor(Lorg/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler;Lorg/eclipse/egf/common/descriptor/IDescriptor;Ljava/lang/String;)V handler_pLLorg/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler; descriptor_p/Lorg/eclipse/egf/common/descriptor/IDescriptor;patternExtType -org/eclipse/egf/common/descriptor/IDescriptor getValue&(Ljava/lang/String;)Ljava/lang/Object; ! "# getChildren()Ljava/util/List;%id'java/lang/String)java/lang/StringBuilder ( ,library &. /0equals(Ljava/lang/Object;)Z &2 34trim()Ljava/lang/String; &6 78length()I (: ;<append-(Ljava/lang/String;)Ljava/lang/StringBuilder; (> ;?(C)Ljava/lang/StringBuilder; (A B4toString DFEJorg/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler GHhandleLibraryDescriptorD(Lorg/eclipse/egf/common/descriptor/IDescriptor;Ljava/lang/String;)VJpattern DL MHhandlePatternDescriptor DO PQhandleDescriptor2(Lorg/eclipse/egf/common/descriptor/IDescriptor;)V S TU stopSearch2(Lorg/eclipse/egf/common/descriptor/IDescriptor;)Z WYXjava/util/List Z[iterator()Ljava/util/Iterator; ]_^java/util/Iterator `anext()Ljava/lang/Object; ]c dehasNext()Z idPrefix_pLjava/lang/String;descriptorTypeLjava/lang/Object;childrenLjava/util/List; currentIdidPrefixLjava/lang/StringBuilder; descriptorLocalVariableTypeTableALjava/util/List;parentDescriptor_pretainRootOnlyg(Lorg/eclipse/egf/common/descriptor/GenericDescriptor;Lorg/eclipse/egf/common/descriptor/IDescriptor;)V v st xzy3org/eclipse/egf/common/descriptor/GenericDescriptor {QaddChildrootDescriptor_p5Lorg/eclipse/egf/common/descriptor/GenericDescriptor;childContainer_pgetDescriptorFullIdC(Lorg/eclipse/egf/common/descriptor/IDescriptor;)Ljava/lang/String; ( (Ljava/lang/String;)V   getParent1()Lorg/eclipse/egf/common/descriptor/IDescriptor;result currentParentparentId SourceFilePatternDescriptorStrategy.java!/*   [+,*+, #$ '(   ,:, :,$&:(Y*:+-<- -159W-9/=9W+,@C7I-&:-9/=9W+,@K +,N*,R:1V:  \:*+@ b n6 8:;(=2>@?KAMBQCVD\FkGuHxIzJ~KLMORSVWXW[ \ fg hijklg(mn op jqTU6 d  r stE++2+ M,V:\N*-ub*+w & norsu-v2u?zD| *E|}E~(jk-op (jq XL*+L*ME,$&N-.-15$+5(Y-/=+9@L-L,M,+ J *19>BEIKRV *XVg K6g Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/generator/EmfProjectGenerator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5391 Text-content-md5: 20b96937969f2a2ed5fdb6e2d6335658 Text-content-sha1: 6562db4ad53c7c35397d747128b7dbbf0e1bd090 Content-length: 5450 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 14org/eclipse/egf/common/generator/EmfProjectGeneratorjava/lang/Object__loggerLorg/apache/log4j/Logger; _generator3Lorg/eclipse/emf/codegen/ecore/generator/Generator;_generatorAdapterFactoryALorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory; _projectType1Lorg/eclipse/egf/common/generator/EmfProjectType;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger ! getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; # LineNumberTableLocalVariableTableu(Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;Lorg/eclipse/egf/common/generator/EmfProjectType;)V ) & + - this6Lorg/eclipse/egf/common/generator/EmfProjectGenerator;generatorAdapterFactory_p projectType_p initialize4(Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel;)Z 576/org/eclipse/emf/codegen/ecore/genmodel/GenModel 89 reconcile()Z 5; <=setCanGenerate(Z)V ? @3validateBAorg/eclipse/egf/common/internal/generator/emf/CustomizedGenerator AD &ED(Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;)V G  IKJ1org/eclipse/emf/codegen/ecore/generator/Generator LMsetInput(Ljava/lang/Object;)V IO PQgetJControlModel4()Lorg/eclipse/emf/codegen/merge/java/JControlModel; 5S T9isCodeFormatting VXW0org/eclipse/emf/codegen/merge/java/JControlModel YZsetLeadingTabReplacement(Ljava/lang/String;)V V\ ]=setConvertToStandardBraceStyle _a`org/eclipse/jdt/core/JavaCore bc getOptions()Ljava/util/Hashtable;e.org.eclipse.jdt.core.formatter.tabulation.size gih java/util/Map jkget&(Ljava/lang/Object;)Ljava/lang/Object;mjava/lang/StringoBorg.eclipse.jdt.core.formatter.brace_position_for_type_declarationq.org.eclipse.jdt.core.formatter.tabulation.charstab lu vwequals(Ljava/lang/Object;)Z ly z{valueOf(C)Ljava/lang/String;}java/lang/StringBuffer | &Z java/lang/Integer parseInt(Ljava/lang/String;)I | append,(Ljava/lang/String;)Ljava/lang/StringBuffer; | toString end_of_line genModel_p1Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel;resultZ jControlModel2Lorg/eclipse/emf/codegen/merge/java/JControlModel;optionsLjava/util/Map;tabSizeLjava/lang/String; braceStyle tabCharacterspacesLjava/lang/StringBuffer;iILocalVariableTypeTableLjava/util/Map<**>;generateY(Lorg/eclipse/emf/common/util/Monitor;Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel;)Z /org/eclipse/egf/common/generator/EmfProjectType getValue  23 I  canGenerate'(Ljava/lang/Object;Ljava/lang/Object;)Z I (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Lorg/eclipse/emf/common/util/Monitor;)Lorg/eclipse/emf/common/util/Diagnostic;java/lang/StringBuilder!Java Code generation failed for:  -(Ljava/lang/String;)Ljava/lang/StringBuilder;  handleDiagnostic=(Lorg/eclipse/emf/common/util/Diagnostic;Ljava/lang/String;)Z monitor_p%Lorg/eclipse/emf/common/util/Monitor;projectTypeValue isCorrect diagnostic(Lorg/eclipse/emf/common/util/Diagnostic; &org/eclipse/emf/common/util/Diagnostic  getSeverity()I)AbstractGenerator.handleDiagnostic(..) _ | (C)Ljava/lang/StringBuffer;  getMessage  getChildren()Ljava/util/List; java/util/List iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object; 9hasNext  getException()Ljava/lang/Throwable; java/lang/Throwable  fatal*(Ljava/lang/Object;Ljava/lang/Throwable;)V  M diagnostic_p message_p loggerMessage exceptionLjava/lang/Throwable; SourceFileEmfProjectGenerator.java!   3"$ '"%&'Y*(*+**,,$=> ?@% ./0 1 23 +4W+:*+>=*AY**CF*F+H*FNN+R-U-[^:dfl:nfl:pfl:rt- xU1|Y~:6 ~W  -U-t[$bIJKMNQ)R1S9UBVGWOYTZb[p\~]^`abadfh%f ./9Tybkp]~O# TyS*,N*,*F,-6+*F,-+:*Y,6$rs#t(u5vPx%>S./SSK#05@3F=$ % ./8>+|Yͷ:,W W+W+::*,W+:W"">$B %1MU_glw%H./~Mg- Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/generator/EmfProjectType.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1788 Text-content-md5: 6fef7c100f87075254bb99db8a1eab99 Text-content-sha1: 3bdde2e8db74ad4bf14612af4cc93a823d26624c Content-length: 1847 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1G/org/eclipse/egf/common/generator/EmfProjectTypejava/lang/EnumMODEL_PROJECT_TYPE1Lorg/eclipse/egf/common/generator/EmfProjectType;EDIT_PROJECT_TYPEEDITOR_PROJECT_TYPETESTS_PROJECT_TYPE_valueLjava/lang/String; ENUM$VALUES2[Lorg/eclipse/egf/common/generator/EmfProjectType;()VCode=org.eclipse.emf.codegen.ecore.genmodel.generator.ModelProject  ((Ljava/lang/String;ILjava/lang/String;)V  org.eclipse.emf.codegen.ecore.genmodel.generator.EditorProject #  &=org.eclipse.emf.codegen.ecore.genmodel.generator.TestsProject (  * LineNumberTableLocalVariableTable . /(Ljava/lang/String;I)V 1 thisvalue_pgetValue()Ljava/lang/String;values4()[Lorg/eclipse/egf/common/generator/EmfProjectType; 9;:java/lang/System <= arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOfE(Ljava/lang/String;)Lorg/eclipse/egf/common/generator/EmfProjectType; A >B5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileEmfProjectType.java SignatureCLjava/lang/Enum;@1@@@@   \YYY "Y$%'YSYSY"SY'S)+$-*<,H *+-*-0+67 8, 2 3 45/*0+?, 2 676)YK*Y<YM8,+, >?* *@+,CDEF Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/generator/IEgfGeneratorConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 424 Text-content-md5: 05a36801349de972e91c3adfd2b14330 Text-content-sha1: e5f09cbaa4ae27966055d30f926191c138434567 Content-length: 483 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 17org/eclipse/egf/common/generator/IEgfGeneratorConstantsjava/lang/Object SRC_FOLDERLjava/lang/String; ConstantValue srcPROJECT_ROOT_FILE /META-INF/MANIFEST.MF"GENERATED_UTIL_JAVA_PACKAGE_SUFFIX.util"GENERATED_IMPL_JAVA_PACKAGE_SUFFIX.impl SourceFileIEgfGeneratorConstants.java    Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/BundleHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1266 Text-content-md5: 76bb7a707172a09ee7bd88e3ad8bfd93 Text-content-sha1: c1ddedcaf109c8c3ba70b105d1d4c337c152716a Content-length: 1325 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/*org/eclipse/egf/common/helper/BundleHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis,Lorg/eclipse/egf/common/helper/BundleHelper; instantiateA(Ljava/lang/String;Lorg/osgi/framework/Bundle;)Ljava/lang/Object;   loadClass@(Ljava/lang/String;Lorg/osgi/framework/Bundle;)Ljava/lang/Class; java/lang/Class  newInstance()Ljava/lang/Object;java/lang/ThrowablefullyQualifiedClassName_pLjava/lang/String;bundle_pLorg/osgi/framework/Bundle;resultLjava/lang/Object;class_Ljava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>; SignatureC(Ljava/lang/String;Lorg/osgi/framework/Bundle;)Ljava/lang/Class<*>; )+*org/osgi/framework/Bundle ,%(Ljava/lang/String;)Ljava/lang/Class; SourceFileBundleHelper.java!/*   M+,*+N- -MN, "#%&(+ * ! "#$  "% &'M+,+*(MN, 578<=@ "#$ "%-. Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/ClassLoadingHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1267 Text-content-md5: 9a66b697c91a6db5b8c6f3ac85702467 Text-content-sha1: 21d3831076aa00e670e0ce20022bb5210ff7525f Content-length: 1326 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/0org/eclipse/egf/common/helper/ClassLoadingHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis2Lorg/eclipse/egf/common/helper/ClassLoadingHelper; instantiate=(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Object;   loadClass<(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class; java/lang/Class  newInstance()Ljava/lang/Object;java/lang/ThrowablefullyQualifiedClassName_pLjava/lang/String; classLoader_pLjava/lang/ClassLoader;resultLjava/lang/Object;class_Ljava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>; Signature?(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class<*>; )+*java/lang/ClassLoader ,%(Ljava/lang/String;)Ljava/lang/Class; SourceFileClassLoadingHelper.java!/*   M+,*+N- -MN, "!#$&) * ! "#$  "% &'M+,+*(MN, 356:;> "#$ "%-. Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/EcoreHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6793 Text-content-md5: a87d6dc53c0ccf043bc588bd18b22e70 Text-content-sha1: 9395e304228f550b3648788f2173392361d8bc25 Content-length: 6852 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)org/eclipse/egf/common/helper/EcoreHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis+Lorg/eclipse/egf/common/helper/EcoreHelper;equalsB(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EObject;Z)Z $org/eclipse/emf/ecore/util/EcoreUtil A(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EObject;)Zorg/eclipse/emf/ecore/EPackage  getNsURI()Ljava/lang/String; java/lang/String (Ljava/lang/Object;)Z!#org/eclipse/emf/ecore/ENamedElement # $getName & '( eContainer!()Lorg/eclipse/emf/ecore/EObject; * ,!org/eclipse/emf/ecore/EAnnotation +. / getSource eObject1_pLorg/eclipse/emf/ecore/EObject; eObject2_pcompareWholeStructure_pZresulteObject1%Lorg/eclipse/emf/ecore/ENamedElement;eObject2eObject1ContainereObject2Container eAnnotation1#Lorg/eclipse/emf/ecore/EAnnotation; eAnnotation2getStaticPackageB(Lorg/eclipse/emf/ecore/EPackage;)Lorg/eclipse/emf/ecore/EPackage; ACB'org/eclipse/emf/ecore/EPackage$Registry DEINSTANCE)Lorg/eclipse/emf/ecore/EPackage$Registry; AG HIget&(Ljava/lang/Object;)Ljava/lang/Object;K)org/eclipse/emf/ecore/EPackage$Descriptor JM NO getEPackage"()Lorg/eclipse/emf/ecore/EPackage;serializedPackage_p Lorg/eclipse/emf/ecore/EPackage;staticPackageInstance staticPackageLjava/lang/Object;getStaticClass>(Lorg/eclipse/emf/ecore/EClass;)Lorg/eclipse/emf/ecore/EClass; XMYorg/eclipse/emf/ecore/EClass [ \?getRootPackage ^ >? ` Ua^(Lorg/eclipse/emf/ecore/EPackage;Lorg/eclipse/emf/ecore/EClass;)Lorg/eclipse/emf/ecore/EClass;serializedClass_pLorg/eclipse/emf/ecore/EClass; e fggetEClassifiers%()Lorg/eclipse/emf/common/util/EList; ikj!org/eclipse/emf/common/util/EList lmiterator()Ljava/util/Iterator; oqpjava/util/Iterator rsnext()Ljava/lang/Object;u!org/eclipse/emf/ecore/EClassifier  ox yzhasNext()Z | }ggetESubpackagesstaticPackage_p classifiersLjava/util/Iterator; classifier#Lorg/eclipse/emf/ecore/EClassifier; subpackagesLocalVariableTypeTable9Ljava/util/Iterator;6Ljava/util/Iterator;  OgetESuperPackage package_p rootPackageG(Lorg/eclipse/emf/ecore/ENamedElement;)Lorg/eclipse/emf/ecore/EPackage;  getContainingPackage element_p ownerPackage tMgetImportedPackageName4(Lorg/eclipse/emf/ecore/EPackage;)Ljava/lang/String;   loadGenModelS(Lorg/eclipse/emf/ecore/EPackage;)Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel; /org/eclipse/emf/codegen/ecore/genmodel/GenModel  getAllGenPackagesWithClassifiers()Ljava/util/List; kjava/util/Collection1org/eclipse/emf/codegen/ecore/genmodel/GenPackage OgetEcorePackage getQualifiedPackageNameLjava/lang/String;genModel1Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel; genPackagesLjava/util/Collection; genPackage3Lorg/eclipse/emf/codegen/ecore/genmodel/GenPackage;KLjava/util/Collection;org.eclipse.emf.ecoregenerated_packageuri 2org/eclipse/egf/common/helper/ExtensionPointHelper getConfigurationElementz(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/core/runtime/IConfigurationElement;org/eclipse/core/runtime/Path .org/eclipse/core/runtime/IConfigurationElement getContributor)()Lorg/eclipse/core/runtime/IContributor; #%org/eclipse/core/runtime/IContributor (Ljava/lang/String;)V  getAttribute&(Ljava/lang/String;)Ljava/lang/String; org/eclipse/core/runtime/IPath append4(Ljava/lang/String;)Lorg/eclipse/core/runtime/IPath;3org/eclipse/emf/ecore/resource/impl/ResourceSetImpl toString (org/eclipse/egf/common/helper/FileHelper getFileFullUri5(Ljava/lang/String;)Lorg/eclipse/emf/common/util/URI; *org/eclipse/emf/ecore/resource/ResourceSet  getResourceM(Lorg/eclipse/emf/common/util/URI;Z)Lorg/eclipse/emf/ecore/resource/Resource; 'org/eclipse/emf/ecore/resource/Resource g getContents i H(I)Ljava/lang/Object;rootPackageNsUriconfigurationElement0Lorg/eclipse/core/runtime/IConfigurationElement;genModelRelativePath Lorg/eclipse/core/runtime/IPath; resourceSet,Lorg/eclipse/emf/ecore/resource/ResourceSet;resource)Lorg/eclipse/emf/ecore/resource/Resource; SourceFileEcoreHelper.java InnerClasses DescriptorRegistry! /* &  w*+>*#+*+>{* H+ A* :+ :""M%:%:)>/*+(++!*+:++:--> B478$:=;K=Q>W?kAtB}CEGHIL f 01213454Q867W287t91} :1;<=< ;*+) W 0121 >?7L@*FM,#, ,L,J ,JLL+ "acdef$g+h5k 7PQ5RQ&ST UV;*WZ]*_ t bc UahM*dhN-nt:+v XM-w,,-*{hN-n+_M-w,, . ~%+8<KYf >h~Qhbcf5c*H*H \?lL*M ,L+M,+   Q5QQ \P*L++Z  7 Q y-L*+*t*tL*%tL+ + -7+Q QL*M,+,N-:)n:*)L w+ .  +:BEO 4QQO5J=+ = ?L*+*ZM,N-:+Y:̹:Y::L+ R  %'<NWkp RQ5 vQo c<GW,kJ A Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/ExtensionPointHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6094 Text-content-md5: fbf9d1e6f08c4e59be0af0f1d41e83fb Text-content-sha1: 7c543df53973cd8a1cd1ae833857cb2f45d8b892 Content-length: 6153 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 12org/eclipse/egf/common/helper/ExtensionPointHelperjava/lang/Object_loggerLorg/apache/log4j/Logger; ATT_CLASSLjava/lang/String; ConstantValue classATT_NAMEnameATT_IDidELEMENT_DESCRIPTION description()VCode java/lang/Class  getPackage()Ljava/lang/Package; ! java/lang/Package "#getName()Ljava/lang/String; %'&org/apache/log4j/Logger () getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; + LineNumberTableLocalVariableTable 0 .this4Lorg/eclipse/egf/common/helper/ExtensionPointHelper;getConfigurationElementsW(Ljava/lang/String;Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement; 687!org/eclipse/core/runtime/Platform 9:getExtensionRegistry/()Lorg/eclipse/core/runtime/IExtensionRegistry; <>=+org/eclipse/core/runtime/IExtensionRegistry ?4getConfigurationElementsFor pluginId_pextensionPointId_pextensionRegistry-Lorg/eclipse/core/runtime/IExtensionRegistry;configElements1[Lorg/eclipse/core/runtime/IConfigurationElement;i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement;Hjava/util/ArrayList GJ .K(I)V M 34 O PQ isDeclaredByE(Lorg/eclipse/core/runtime/IConfigurationElement;Ljava/lang/String;)Z SUTjava/util/List VWadd(Ljava/lang/Object;)Z SY Z[size()I].org/eclipse/core/runtime/IConfigurationElement S_ `atoArray(([Ljava/lang/Object;)[Ljava/lang/Object;EextensionDeclaringPluginId_presultingElementsLjava/util/List; allElementsconfigurationElement0Lorg/eclipse/core/runtime/IConfigurationElement;LocalVariableTypeTableBLjava/util/List; \l mngetContributor)()Lorg/eclipse/core/runtime/IContributor; p!q%org/eclipse/core/runtime/IContributor sutjava/lang/String vWequalsconfigurationElement_pgetConfigurationElementh(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/core/runtime/IConfigurationElement; { x|z(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/core/runtime/IConfigurationElement; extensionId_p idValue_p  hasValueW(Lorg/eclipse/core/runtime/IConfigurationElement;Ljava/lang/String;Ljava/lang/String;)Z attName_p attValue_presultiI configElement \  getAttribute&(Ljava/lang/String;)Ljava/lang/String;ZattValuegetIdD(Lorg/eclipse/core/runtime/IConfigurationElement;)Ljava/lang/String;createExecutableExtension\(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;java/lang/StringBuffer5ExtensionPointHelper.createExecutableExtension(..) _ .(Ljava/lang/String;)VextensionPointId: append,(Ljava/lang/String;)Ljava/lang/StringBuffer; , must exist! #toString % error(Ljava/lang/Object;)V  createInstanceV(Lorg/eclipse/core/runtime/IConfigurationElement;Ljava/lang/String;)Ljava/lang/Object; attributeId_pattributeValue_pobjectLjava/lang/Object; loggerMessageLjava/lang/StringBuffer;isMatchingImperativeisExecutableExtensionCreatableattributeValueJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;  \ &(Ljava/lang/String;)Ljava/lang/Object;.ExtensionPointHelper.createTypeInstance(..) _ !Unable to instantiate class type: % *(Ljava/lang/Object;Ljava/lang/Throwable;)V&org/eclipse/core/runtime/CoreExceptionattributeName_p typeInstance exception_p(Lorg/eclipse/core/runtime/CoreException;getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;java/lang/StringBuilder (C)Ljava/lang/StringBuilder; -(Ljava/lang/String;)Ljava/lang/StringBuilder; hostingPluginId_pLjava/lang/StringBuilder; SourceFileExtensionPointHelper.java!        3$*, "-./*/,- 12 34_5M,*+;N-,<= >-*@A BC DE 3F TGYIN*+L:Y:662:,N -RW--X\^b,I JK%L.M7KAP->T@TATc KdeDfE%ghi  Kdj PQR*++*kor,[-wh@ xyG *+,z,f-  @ } ~ x|8*+L::62:,-:,"rs tuw!x%t5{-R8@8}881DE .h (h ">* +,*+:,r>, -4"wh""   QL* *L+,-wh  :*+L:3Y:W+WW*Z6, -6692:6 ,: - r6   :,Z #*2@CKNT[^cmvy~-z @A DE%CTQF[,h^) m  G *+,,-  @ A ~ <M*+M0NY:W*+W*-, ," !.:-4<wh<:,! _Y*M,.+W,԰, - A  Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/FileHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 11389 Text-content-md5: c9930189824b7f7d5b63aaedd9b3ccef Text-content-sha1: e0659da0c9015690b8172b4e79f639c6c384a6aa Content-length: 11448 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(org/eclipse/egf/common/helper/FileHelperjava/lang/Object__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable " this*Lorg/eclipse/egf/common/helper/FileHelper;getFileFullUrl"(Ljava/lang/String;)Ljava/net/URL; ( )*getFileFullUri5(Ljava/lang/String;)Lorg/eclipse/emf/common/util/URI; , %-1(Lorg/eclipse/emf/common/util/URI;)Ljava/net/URL;fileRelativePath_pLjava/lang/String;1 java/net/URL 354org/eclipse/emf/common/util/URI 6toString 08 9(Ljava/lang/String;)V ;=<$org/eclipse/core/runtime/FileLocator >?resolve(Ljava/net/URL;)Ljava/net/URL;Ajava/lang/StringBuilderC!FileHelper.getFileFullPath(..) _ @8FUnable to resolve the url for @H IJappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; @5 M NOwarn*(Ljava/lang/Object;Ljava/lang/Throwable;)VQjava/lang/Exception fileFullUri_p!Lorg/eclipse/emf/common/util/URI;resultLjava/net/URL; exception_pLjava/lang/Exception; loggerMessageLjava/lang/StringBuilder;[org/eclipse/core/runtime/Path Z8 ^`_org/eclipse/core/runtime/IPath absegment(I)Ljava/lang/String; dfe*org/eclipse/pde/core/plugin/PluginRegistry gh findModelB(Ljava/lang/String;)Lorg/eclipse/pde/core/plugin/IPluginModelBase; jlk,org/eclipse/pde/core/plugin/IPluginModelBase mngetUnderlyingResource(()Lorg/eclipse/core/resources/IResource; 3p qrcreatePlatformResourceURI6(Ljava/lang/String;Z)Lorg/eclipse/emf/common/util/URI; 3t urcreatePlatformPluginURIfileUripath Lorg/eclipse/core/runtime/IPath; modelBase.Lorg/eclipse/pde/core/plugin/IPluginModelBase;resource&Lorg/eclipse/core/resources/IResource;convertPackageNameToFolderPath&(Ljava/lang/String;)Ljava/lang/String; java/lang/String replace(CC)Ljava/lang/String; packageName_preadFile(Ljava/io/InputStream;)[B[B java/io/InputStream  available()I read([B)IFileHelper.readFile(..) _ "Failed to read the input stream !  N(Ljava/lang/Object;)V closeFailed to close input stream ! java/io/IOException inputStream_pLjava/io/InputStream;dataLjava/io/IOException;   readRawFile(Ljava/lang/String;)[B ([B)V filePath_p rawContentreadFileAsStream)(Ljava/lang/String;)Ljava/io/InputStream;  %& 0  openStream()Ljava/io/InputStream;"FileHelper.readFileAsStream(..) _ Failed to load fileURL    inputStreamcopyFile'(Ljava/lang/String;Ljava/lang/String;)V   writeFile(Ljava/lang/String;Z[B)ZsourceFileRelativePath_ptargetFileRelativePath_p((Ljava/lang/String;ZLjava/lang/String;)Z getBytes()[BensureFolders_pZ contents_p 0 getFile  9ensurePathAvailability  makeFileWritable(Ljava/lang/String;)Zjava/io/FileOutputStream 8  getChannel!()Ljava/nio/channels/FileChannel; java/nio/ByteBuffer wrap([B)Ljava/nio/ByteBuffer; java/nio/channels/FileChannel write(Ljava/nio/ByteBuffer;)IFileHelper.writeFile(..) _ )Failed to open channel in write mode for  ! isOpen()Z /Failed to close opened channel in write mode !  may no longer be usable.channelLjava/nio/channels/FileChannel; fileFullPath fileWritable renameFile'(Ljava/lang/String;Ljava/lang/String;)Z  getPlatformFile6(Ljava/lang/String;)Lorg/eclipse/core/resources/IFile;     org/eclipse/core/resources/IFile   getFullPath"()Lorg/eclipse/core/runtime/IPath;   moveResourceI(Lorg/eclipse/core/resources/IResource;Lorg/eclipse/core/runtime/IPath;)ZdestinationFileRelativePath_p sourceFile"Lorg/eclipse/core/resources/IFile;destinationPath renameFolder  getPlatformFolder8(Ljava/lang/String;)Lorg/eclipse/core/resources/IFolder;  "org/eclipse/core/resources/IFoldersourceFolderRelativePath_pdestinationFolderRelativePath_p sourceFolder$Lorg/eclipse/core/resources/IFolder;$,org/eclipse/core/runtime/NullProgressMonitor #" ')($org/eclipse/core/resources/IResource *+moveO(Lorg/eclipse/core/runtime/IPath;ZLorg/eclipse/core/runtime/IProgressMonitor;)V-FileHelper.moveResource(..) _ /Could not move ' @2 I3-(Ljava/lang/Object;)Ljava/lang/StringBuilder;5 to  resource_pdestinationPath_pe_pexists  ; 9file Z> ?removeFileExtension ^A BCremoveLastSegments#(I)Lorg/eclipse/core/runtime/IPath; ^E FisEmpty ^H IJtoFile()Ljava/io/File; LNM java/io/File OmkdirsfileFullPath_pparentFolderPath parentFolderLjava/io/File;deleteResourceN(Lorg/eclipse/core/resources/IFolder;Lorg/eclipse/core/resources/IResource;Z)Z W TX)(Lorg/eclipse/core/resources/IResource;)Z 'Z [\ getParent)()Lorg/eclipse/core/resources/IContainer; ^`_%org/eclipse/core/resources/IContainer abmembers)()[Lorg/eclipse/core/resources/IResource; ^Z ^e fgequals(Ljava/lang/Object;)Zi&org/eclipse/core/runtime/CoreExceptionroot_pdeleteParent_p container'Lorg/eclipse/core/resources/IContainer;'[Lorg/eclipse/core/resources/IResource;ce(Lorg/eclipse/core/runtime/CoreException; deleteFile s ttrim v wlength deleteFolderfolderRelativePath_p '; '| }~delete/(ZLorg/eclipse/core/runtime/IProgressMonitor;)VFileHelper.deleteFile(..) _ Unable to delete file:getPlatformResourceH(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IResource; *org/eclipse/core/resources/ResourcesPlugin  getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; %org/eclipse/core/resources/IWorkspace getRoot-()Lorg/eclipse/core/resources/IWorkspaceRoot; )org/eclipse/core/resources/IWorkspaceRoot  findMemberpath_p  D(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IFile;   getFolderF(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IFolder;getFileExtension Z  0org/eclipse/egf/common/activator/CommonActivator  getDefault4()Lorg/eclipse/egf/common/activator/CommonActivator;  getUserEnforcedHelper5()Lorg/eclipse/egf/common/helper/IUserEnforcedHelper; 1org/eclipse/egf/common/helper/IUserEnforcedHelper F(Lorg/eclipse/core/resources/IFile;)Lorg/eclipse/core/runtime/IStatus;  org/eclipse/core/runtime/IStatus isOKhelper3Lorg/eclipse/egf/common/helper/IUserEnforcedHelper;status"Lorg/eclipse/core/runtime/IStatus; SourceFileFileHelper.java! 3  3.  /*!. #$ %& 2*'+B ./ %- :L0Y*27:L'M@YBDN-EG*2GW-K,L+PLOPQR-S8U*:RS8TU#VWXY )* BL*+ZY*\M,]cN- -i: *oL *sL+* cefijl,m1n:p@r4B./@vS1wx&yz,{| }~ ;**./{ /  L*L*+WM@YDN-GW-K**:@YD:GWKLb:*,*%:@YD:GWKL*,*%:@YD:GWKL+ +P59<1agknr  '15<>IQacgnp{f VW XY> Vp V VIXY{XYXY ~ P*L+ Y+ /  4L*M,L&N@YD:G*GWK+ P"'244/2T-U"VWXY  mL*M,,L+ +  /T   C +*W   / /  H *,̸Ŭ  /  /   H>:*:*6Y߶:,W>:>@YD:GW*GGWKL:>@YD:  GW *GGW KL:C;3:>@YD:  GW *GGW KLC;3:>@YD:  GW *GGW KL<?P|o+"0:?ACNVbo|             % - 9FH/HHFTC1/"A.VWN!XY.V.V.V!XY !XY %!XY  w*+*M+ N,- "#$*//x  w*+*M+N,-12 456*/ /!"x  P=*+#Y%&=;N@Y,D:.G*01W4G+1WK-LP& @BCDE#F5GBHNJ4P6|P7xNT78W#+XY 9 L*L+ +: TU./< 9 v(ZY*\=@L+D+GM,KW^`a"c'e (P/Qx"RS TU V++V*D@+YN,-]: #-V-cN: -*d!BEh>ops twxy!{)|4};~EGJyT>Vj"V6|Vk6lm)anGop q J* *ru*V ./ x J* *ru*V y/ TX H* *z*#Y%{L@YDM,G*01W,Kh&   +<F H6| &Vp+XY  G** x  N*ZY*\ ./  N*ZY*\ y/ ~ D*ZY*\ /  _L+*M, / Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/IDGeneratorHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1372 Text-content-md5: c89a53d81c1b491a099d5ca2eb99a1e4 Text-content-sha1: e61b246464d339c61b31a705fbbcbc2dd36404a0 Content-length: 1431 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1I/org/eclipse/egf/common/helper/IDGeneratorHelperjava/lang/Object __idSuffixI()VCode  LineNumberTableLocalVariableTable  this1Lorg/eclipse/egf/common/helper/IDGeneratorHelper; generateUID&(Ljava/lang/Object;)Ljava/lang/String;  getClass()Ljava/lang/Class; java/lang/Class  getSimpleName()Ljava/lang/String;  !"generatePrefixUID&(Ljava/lang/String;)Ljava/lang/String;object_pLjava/lang/Object;prefixLjava/lang/String;(*java/lang/StringBuilder ,.-*org/eclipse/egf/common/helper/StringHelper /"replaceNonWordCharactersWithDot )1 2(Ljava/lang/String;)V )4 56append(C)Ljava/lang/StringBuilder; 8:9java/lang/System ;<currentTimeMillis()J )> 5?(J)Ljava/lang/StringBuilder; )A 5B(I)Ljava/lang/StringBuilder; )D EtoStringprefix_p SourceFileIDGeneratorHelper.java!J )    /*    SL* *L+  "$& #$%& !" 4*L+'L)Y++0.37=.3 Y` @C * /01 3456$70833 4F&2%&GH Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/IUserEnforcedHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 348 Text-content-md5: 15cf9c3374372238ae82859fedfb0969 Text-content-sha1: 297e6c00a9aa5ae451a46cf97c873e548249e2b7 Content-length: 407 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 1org/eclipse/egf/common/helper/IUserEnforcedHelperjava/lang/ObjectmakeFileWritableF(Lorg/eclipse/core/resources/IFile;)Lorg/eclipse/core/runtime/IStatus;X(Lorg/eclipse/core/resources/IFile;Ljava/lang/Object;)Lorg/eclipse/core/runtime/IStatus; SourceFileIUserEnforcedHelper.java Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/JavaHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3266 Text-content-md5: af5a451c53ba057f997ed1f12728bde0 Text-content-sha1: ab883bd44e885f4d1cb11e5f46cbd1f5546cbe50 Content-length: 3325 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1o(org/eclipse/egf/common/helper/JavaHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis*Lorg/eclipse/egf/common/helper/JavaHelper;deleteJavaClassG(Lorg/eclipse/jdt/core/IJavaProject;Lorg/eclipse/core/runtime/IPath;Z)Z  getJavaSourceFolderi(Lorg/eclipse/jdt/core/IJavaProject;Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IFolder; "org/eclipse/core/resources/IFolder  findMemberH(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IResource; org/eclipse/core/resources/IFile (org/eclipse/egf/common/helper/FileHelper !deleteResource)(Lorg/eclipse/core/resources/IResource;)Z #%$org/eclipse/core/runtime/IPath &'removeLastSegments#(I)Lorg/eclipse/core/runtime/IPath;)%org/eclipse/core/resources/IContainer (+ ,-members)()[Lorg/eclipse/core/resources/IResource; (/ 01 getParent)()Lorg/eclipse/core/resources/IContainer; (3 45equals(Ljava/lang/Object;)Z7&org/eclipse/core/runtime/CoreException javaProject_p#Lorg/eclipse/jdt/core/IJavaProject;resourcePath_p Lorg/eclipse/core/runtime/IPath;deleteParent_pZ sourceFolder$Lorg/eclipse/core/resources/IFolder;resource&Lorg/eclipse/core/resources/IResource; container'Lorg/eclipse/core/resources/IContainer;'[Lorg/eclipse/core/resources/IResource;ce(Lorg/eclipse/core/runtime/CoreException;getJavaSourceFileg(Lorg/eclipse/jdt/core/IJavaProject;Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IFile; JLK!org/eclipse/jdt/core/IJavaProject MNgetRawClasspath)()[Lorg/eclipse/jdt/core/IClasspathEntry; PRQ$org/eclipse/jdt/core/IClasspathEntry ST getEntryKind()I VXW*org/eclipse/core/resources/ResourcesPlugin YZ getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; \^]%org/eclipse/core/resources/IWorkspace _`getRoot-()Lorg/eclipse/core/resources/IWorkspaceRoot; Pb cdgetPath"()Lorg/eclipse/core/runtime/IPath; fg)org/eclipse/core/resources/IWorkspaceRooti'org/eclipse/jdt/core/JavaModelExceptionpath_pclasspathEntry&Lorg/eclipse/jdt/core/IClasspathEntry; SourceFileJavaHelper.java!/*   [*+*+N--+: P-+"(:0*: '.::-2Qvy6 ^() - . ,0145,6.96:8=<>N?QAZBeCmDyK{L~?P R89:;<={>?l@AN;BCZ,D{EF GH~*+*IY:6>Z2M,OHU[,ae:.#+: M n{hox{h 6 Z[ _ `*a?bLcOf\giio_{m|p 4~89~j; Okl?0>A\@A v*+*IY:6>R2M,O@U[,ae:&+: M fshgpsh 6 z{  *?LO\agst 4v89vj; Gkl?(>A\ @Amn Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/MathHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1525 Text-content-md5: 450cc06b7e71690d1445af54c0451624 Text-content-sha1: 4a6b2bbfca2d118b59bee62cf2eb8c4af1f793e1 Content-length: 1584 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1J(org/eclipse/egf/common/helper/MathHelperjava/lang/ObjectSECONDJ ConstantValueMINUTE`HOUR6DAY&\()VCode  LineNumberTableLocalVariableTablethis*Lorg/eclipse/egf/common/helper/MathHelper;formatAsDuration(J)Ljava/lang/String;java/lang/StringBuilder  " #$append(J)Ljava/lang/StringBuilder;& day ( #)-(Ljava/lang/String;)Ljava/lang/StringBuilder;+s - ./length()I1 3 hr5 min7 sec9 ms ; <=toString()Ljava/lang/String;durationtemp formattedLjava/lang/StringBuilder;multiply(IF)I sourceValue_pI multiplier_pF SourceFileMathHelper.java!   /*  # AY :mA % !%'W *'W ie?mA 5, 0'W !2'W *'W ie? mA 5, 0'W !4'W *'W  ie?AmA 5, 0'W !6'W *'W ie? , 0'W!8'W:0 !"#$#%)&1(9+?,E-M.U0W1[2a3g4o6w9}:;<>?@ABDGHIJKMNOPQSWX Y[\]_ #>!? @A BC:#jiDEFGHI Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/MiscHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 841 Text-content-md5: 977c9755d6fecb563dce16d73048e9ce Text-content-sha1: b59256bd629525dfecd73f7f7fbff70eeeac575c Content-length: 900 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&(org/eclipse/egf/common/helper/MiscHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis*Lorg/eclipse/egf/common/helper/MiscHelper;asList%([Ljava/lang/Object;)Ljava/util/List; Signature1([TT;)Ljava/util/List;java/util/ArrayList  (I)V  add(Ljava/lang/Object;)Z elements_p[Ljava/lang/Object;resultLjava/util/ArrayList;elementLjava/lang/Object;LocalVariableTypeTableLjava/util/ArrayList;TT; SourceFileMiscHelper.java!/*   ,Y*L*Y:6>2M+,W+  !* , " ! ""#$% Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/PatternHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1888 Text-content-md5: 2db7b0b3ae751bb6d0fc034d127cbe0a Text-content-sha1: dc1875f02a7ebb6e1e2ff00d58571ce9469162b7 Content-length: 1947 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1N+org/eclipse/egf/common/helper/PatternHelperjava/lang/ObjectPATTERN_ID_PREFIXLjava/lang/String; ConstantValue Pattern()VCode  LineNumberTableLocalVariableTablethis-Lorg/eclipse/egf/common/helper/PatternHelper; getFullId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;java/lang/StringBuilder  (Ljava/lang/String;)V  append(C)Ljava/lang/StringBuilder;   -(Ljava/lang/String;)Ljava/lang/StringBuilder; " #$toString()Ljava/lang/String;parentLibraryFullId_p localId_presultgeneratePatternUID *,+/org/eclipse/egf/common/helper/IDGeneratorHelper -.generatePrefixUID&(Ljava/lang/String;)Ljava/lang/String; deresolveId8(Ljava/lang/String;)Lorg/eclipse/egf/common/misc/Couple; Signature^(Ljava/lang/String;)Lorg/eclipse/egf/common/misc/Couple; 465*org/eclipse/egf/common/helper/StringHelper 78substringBefore'(CLjava/lang/String;)Ljava/lang/String; 4: ;8substringAfter="org/eclipse/egf/common/misc/Couple <? @'(Ljava/lang/Object;Ljava/lang/Object;)VfullId_pparentLibraryFullIdlocalIdgetRootLibraryIdForg/eclipse/core/runtime/Path E EI JKsegment(I)Ljava/lang/String; SourceFilePatternHelper.java!  /*    (M+,*Y*/+!M+M,. $%&( )*+, )$.&0 (%(&&' ($ &)8 /012 |*/*3L/*9M& BCFG E JKIM A B C D. E*EY*GHWXZ ALM Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/PatternLibrarySequenceHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2242 Text-content-md5: e8ce3b436b9302f621f1091a2bb2737a Text-content-sha1: ab3b22e0110712fc62534851cd998c5d84be50c2 Content-length: 2301 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1j:org/eclipse/egf/common/helper/PatternLibrarySequenceHelperjava/lang/ObjectSEQUENCE_SEPARATORSLjava/lang/String; ConstantValue  ,()VCode  LineNumberTableLocalVariableTablethis;)Ljava/lang/String; java/util/List isEmpty()Z java/lang/StringBuilder  # $%iterator()Ljava/util/Iterator; ')(java/util/Iterator *+next()Ljava/lang/Object;-java/lang/String / 01append-(Ljava/lang/String;)Ljava/lang/StringBuilder; '3 4hasNext 6 78toString()Ljava/lang/String;ids_pLjava/util/List;resultLjava/lang/StringBuilder; idIteratorLjava/util/Iterator;idLocalVariableTypeTable$Ljava/util/List;(Ljava/util/Iterator;extractSequenceIds$(Ljava/lang/String;)Ljava/util/List;8(Ljava/lang/String;)Ljava/util/List; GIHjava/util/Collections JK emptyList()Ljava/util/List; MON*org/eclipse/egf/common/helper/StringHelper PQ getTokens9(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; SUT(org/eclipse/egf/common/helper/MiscHelper VWasList%([Ljava/lang/Object;)Ljava/util/List;fullSequence_premoveIdFromSequence8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; \ CD ^ _`remove(Ljava/lang/Object;)Z b c`contains e id_pids SourceFile!PatternLibrarySequenceHelper.java!  /*    P* *Y!L*"M#,&,N+-.W,2 +.W,2+5* # $&'"(,)2*;+B'K.*P9:8;<,=>,?@P9A,=B CDE D*F*LR78: X YZ '*[M, *,+]W,+a,dEGHLK"O 'X'f"g:@ "gAhi Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1415 Text-content-md5: 3ec8c20eb9455bd939ae0e1c0fa6cece Text-content-sha1: c9ab6577183f4928c75e4d700801cb045c1d4e27 Content-length: 1474 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 16Borg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatusjava/lang/EnumALREADY_EXISTSDLorg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus;CREATEDCREATION_FAILED ENUM$VALUESE[Lorg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus;()VCode  (Ljava/lang/String;I)V        LineNumberTableLocalVariableTable thisvaluesG()[Lorg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus; $&%java/lang/System '( arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOfX(Ljava/lang/String;)Lorg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus; , )-5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileProjectHelper.java SignatureVLjava/lang/Enum; InnerClasses4+org/eclipse/egf/common/helper/ProjectHelperProjectExistenceStatus@1@@@   eAYYYYSYSYS B'A 1*+A   !" 6YK*Y<YM#, )* * *+./012 35@ Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/ProjectHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 12465 Text-content-md5: c6cd265fd62b0c32e942b19f41ccc175 Text-content-sha1: e99f4162bb6ce7f70c6a36cf181ea95ca359831d Content-length: 12524 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1+org/eclipse/egf/common/helper/ProjectHelperjava/lang/Object__loggerLorg/apache/log4j/Logger;)CLASS_PATH_ENTRY_REQUIRED_PLUGINS_PATH_IDLjava/lang/String; ConstantValue requiredPlugins()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger   getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; " LineNumberTableLocalVariableTable ' % this-Lorg/eclipse/egf/common/helper/ProjectHelper; getProject9(Ljava/lang/String;)Lorg/eclipse/core/resources/IProject; -/.*org/eclipse/pde/core/plugin/PluginRegistry 01 findModelB(Ljava/lang/String;)Lorg/eclipse/pde/core/plugin/IPluginModelBase; 354*org/eclipse/core/resources/ResourcesPlugin 67 getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; 9;:%org/eclipse/core/resources/IWorkspace <=getRoot-()Lorg/eclipse/core/resources/IWorkspaceRoot; ?A@)org/eclipse/core/resources/IWorkspaceRoot *+ C *DU(Lorg/eclipse/pde/core/plugin/IPluginModelBase;)Lorg/eclipse/core/resources/IProject; projectName_p modelBase.Lorg/eclipse/pde/core/plugin/IPluginModelBase; IKJ,org/eclipse/pde/core/plugin/IPluginModelBase LMgetUnderlyingResource(()Lorg/eclipse/core/resources/IResource; OQP$org/eclipse/core/resources/IResource *R'()Lorg/eclipse/core/resources/IProject;pluginModelBase_punderlyingResource&Lorg/eclipse/core/resources/IResource;canBeConvertedToFC(Ljava/lang/String;)Z AZjava/lang/StringBuilder\'ProjectHelper.canBeConvertedToFC(..) _ Y^ %_(Ljava/lang/String;)Va+Unable to locate a project with element id Yc deappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; Yg htoString j klerror(Ljava/lang/Object;)V -n 0oU(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/pde/core/plugin/IPluginModelBase; Iq rs getPluginBase+()Lorg/eclipse/pde/core/plugin/IPluginBase; uwv'org/eclipse/pde/core/plugin/IPluginBase xgetId z{#org/eclipse/core/resources/IProject }~java/lang/String equals(Ljava/lang/Object;)ZdTo convert an exisiting plug-in into a FC, its related project name must be equal to the plug-in id.Element  is not a valid plug-in project..Only plug-in projects can be converted to FCs. elementId_presultZproject%Lorg/eclipse/core/resources/IProject; loggerMessageLjava/lang/StringBuilder;modelmodelIdgetJavaProject7(Ljava/lang/String;)Lorg/eclipse/jdt/core/IJavaProject;  J(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/jdt/core/IJavaProject;!org/eclipse/jdt/core/IJavaElement #org/eclipse/core/runtime/IAdaptable  getAdapter%(Ljava/lang/Class;)Ljava/lang/Object; org/eclipse/jdt/core/JavaCore create %()Lorg/eclipse/jdt/core/IJavaProject; project_p#Lorg/eclipse/jdt/core/IJavaProject; javaElement#Lorg/eclipse/jdt/core/IJavaElement;getClassLoaderForS(Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader; Exceptionsjava/lang/Exception  getProjectDependencies4(Lorg/eclipse/jdt/core/IJavaProject;)[Ljava/net/URL;java/net/URLClassLoader %)([Ljava/net/URL;Ljava/lang/ClassLoader;)V javaProject_pparentClassLoader_pLjava/lang/ClassLoader;Ljava/net/URLClassLoader;classPathEntries[Ljava/net/URL; !org/eclipse/jdt/core/IJavaProject getResolvedClasspath*(Z)[Lorg/eclipse/jdt/core/IClasspathEntry;java/util/ArrayList %(I)V $org/eclipse/jdt/core/IClasspathEntry getPath"()Lorg/eclipse/core/runtime/IPath;  getEntryKind()I org/eclipse/core/runtime/IPath segment(I)Ljava/lang/String;  Q z  getLocation getOutputLocation removeFirstSegments#(I)Lorg/eclipse/core/runtime/IPath; dB(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/runtime/IPath; toFile()Ljava/io/File;  java/io/File toURI()Ljava/net/URI;  java/net/URI toURL()Ljava/net/URL; java/util/List add  size java/net/URL  toArray(([Ljava/lang/Object;)[Ljava/lang/Object;classpathEntries'[Lorg/eclipse/jdt/core/IClasspathEntry; classpathUrlsLjava/util/List;classpathEntry&Lorg/eclipse/jdt/core/IClasspathEntry;urlPath Lorg/eclipse/core/runtime/IPath; localProjectLocalVariableTypeTable Ljava/util/List;refreshProjectS(Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/runtime/IProgressMonitor;)V  T(Lorg/eclipse/core/resources/IProject;ILorg/eclipse/core/runtime/IProgressMonitor;)V monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; z  refreshLocal/(ILorg/eclipse/core/runtime/IProgressMonitor;)V!#ProjectHelper.refreshProject(..) _ # $%warn*(Ljava/lang/Object;Ljava/lang/Throwable;)V'&org/eclipse/core/runtime/CoreExceptionprojectToRefresh_pdepth_pI exception_p(Lorg/eclipse/core/runtime/CoreException;createSourceFoldere(Ljava/lang/String;Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/runtime/IProgressMonitor;)Z 0 12getRawClasspath)()[Lorg/eclipse/jdt/core/IClasspathEntry; z4 5 getFullPath 7 d84(Ljava/lang/String;)Lorg/eclipse/core/runtime/IPath;:+org/eclipse/core/runtime/SubProgressMonitor 9< %=/(Lorg/eclipse/core/runtime/IProgressMonitor;I)V ? @A createFolder(Ljava/lang/String;Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/resources/IFolder; C DEnewSourceEntryH(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/jdt/core/IClasspathEntry; GIHjava/lang/System JK arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)V M NOsetRawClasspathU([Lorg/eclipse/jdt/core/IClasspathEntry;Lorg/eclipse/core/runtime/IProgressMonitor;)VQ'ProjectHelper.createSourceFolder(..) _ sourceFolderName_p successful javaProject sourceEntriesgeneratedSourceFolderPathgeneratedSourceEntry newEntriesLjava/lang/Exception; z[ \] getFolder8(Ljava/lang/String;)Lorg/eclipse/core/resources/IFolder; _a`"org/eclipse/core/resources/IFolder bcexists()Zeorg/eclipse/core/runtime/Path d^ h i segmentCount k lremoveLastSegments g _o p0(ZZLorg/eclipse/core/runtime/IProgressMonitor;)Vr!ProjectHelper.createFolder(..) _  folderName_pfolder$Lorg/eclipse/core/resources/IFolder; parentPathensureProjectExistsZ(Ljava/lang/String;ZI)Lorg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus; z|{Borg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus }~CREATION_FAILEDDLorg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus; } valueOf&(Ljava/lang/Object;)Ljava/lang/String;/META-INF/MANIFEST.MF (org/eclipse/egf/common/helper/FileHelper getPlatformFile6(Ljava/lang/String;)Lorg/eclipse/core/resources/IFile; a org/eclipse/core/resources/IFile z ~ALREADY_EXISTS } (C)Ljava/lang/String;/src,org/eclipse/core/runtime/NullProgressMonitor ' java/util/Collections   EMPTY_LIST 'org/eclipse/emf/codegen/ecore/Generator createEMFProject(Lorg/eclipse/core/runtime/IPath;Lorg/eclipse/core/runtime/IPath;Ljava/util/List;Lorg/eclipse/core/runtime/IProgressMonitor;ILjava/util/List;)Lorg/eclipse/core/resources/IProject; za z ~CREATED  cleanProjectStructure((Lorg/eclipse/core/resources/IProject;)VcleanProject_p projectType_pfile"Lorg/eclipse/core/resources/IFile;projectLocationPathresultingProjectorg.eclipse.jdt.core.javanature z getDescription2()Lorg/eclipse/core/resources/IProjectDescription; .org/eclipse/core/resources/IProjectDescription  setNatureIds([Ljava/lang/String;)V z setDescription^(Lorg/eclipse/core/resources/IProjectDescription;Lorg/eclipse/core/runtime/IProgressMonitor;)V*ProjectHelper.cleanProjectStructure(..) _   getFileExtension'org/eclipse/jdt/core/JavaModelException natureIds[Ljava/lang/String; description0Lorg/eclipse/core/resources/IProjectDescription; exception_p1 rawClasspath)Lorg/eclipse/jdt/core/JavaModelException;newRawClasspathpath8Ljava/util/List;ensurePluginProjectExistsX(Ljava/lang/String;)Lorg/eclipse/egf/common/helper/ProjectHelper$ProjectExistenceStatus;  *EMF_PLUGIN_PROJECT_STYLE  wx  *EMF_EMPTY_PROJECT_STYLE SourceFileProjectHelper.java InnerClassesProjectExistenceStatus!   3!# 50$% /*&#0$ () *+k#**,L+28*>+B#NOR VWY$#E FG *Db**HL+ +N#cdf gik$SG TU VW]<*XM,%YY[]N-`b*bW!-fiy,mN-A-pt:,y|<SYY[]:bW!fi2YY[]:b*bbWbW!fi#Nuvw xy z-|2}6~COS^ft$R2qGC1^$ 2*X#$ E &L*+*M,*M,L+#"$$ &$ $M*+,*N-,Y-+M,#" "$*$$" ? *LY+M+Y:66s2N-:-E::,W,, #. %-HUux$>    %g-_U#   ?*+# $ %*,NYY ]:!f-" &# $$4%(%)*% +,  -.} >* +,+:/:+3*6:*+9Y,;>WB:`:2SSdF9Y,;L> :>YYP]:!f"}#N  -<CMU[i{ !"#$&$p RSjTaU -SVC=WM3X +Y  @Ah+*ZN-^XdY*f:gj:m+,>W-,n :NYYq]:!f"-=FI&#2 1356&709==I>K?M@YAfD$Hhshh`tuKvK+,Y  wxGyN*-YY*]bf:dYYY/]*bff:6YȻY:NyN-#RPRS U#W-X1[M]W^X_``gahbk\pdeghkm$HE*~#rMHp% i #*L+}YSM*N-,*-YNYY·]:!f-"N+/N:YY·]:!f"--Y-:-Y:66G2:(:   |W W+̹ĻYL:YY·]:!f"14&RY\#vwy z }#45AMR\^jw "$#T5,A R ^+j  :  +   3 *ָٰ#$  E w3 *۸ٰ#$  E z@ Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/StatusHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3642 Text-content-md5: 4dff312ccaf553584c899281a824464c Text-content-sha1: 7269ee01564f4c57e02e78d3ffd00f7475b97fcb Content-length: 3701 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*org/eclipse/egf/common/helper/StatusHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis,Lorg/eclipse/egf/common/helper/StatusHelper; newStatus(Ljava/lang/String;[Lorg/eclipse/core/runtime/IStatus;Ljava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus; java/lang/String trim()Ljava/lang/String;  length()I"java/lang/IllegalArgumentException  $org/eclipse/core/runtime/MultiStatus "!0org/eclipse/egf/common/activator/CommonActivator #$ getDefault4()Lorg/eclipse/egf/common/activator/CommonActivator; & ' getPluginID ) *`(Ljava/lang/String;I[Lorg/eclipse/core/runtime/IStatus;Ljava/lang/String;Ljava/lang/Throwable;)VpluginIDLjava/lang/String;stati#[Lorg/eclipse/core/runtime/IStatus;message exceptionLjava/lang/Throwable;^(Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus; 465java/lang/Throwable 7 getMessage 49 :toString<org/eclipse/core/runtime/Status ;> ?>(ILjava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)VseverityI statusMessagem(Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus; Signature(Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus;Gjava/util/ArrayList F JLKjava/util/List MNiterator()Ljava/util/Iterator; PRQjava/util/Iterator STnext()Ljava/lang/Object;V org/eclipse/core/runtime/IStatus X YZflatten4(Lorg/eclipse/core/runtime/IStatus;)Ljava/util/List; J\ ]^add(Ljava/lang/Object;)Z P` abhasNext()Z Jd esize Jg hitoArray(([Ljava/lang/Object;)[Ljava/lang/Object; k childrenLjava/util/List;flatStatusCollectioniterLjava/util/Iterator; currentStatus"Lorg/eclipse/core/runtime/IStatus; childrenIterLocalVariableTypeTable4Ljava/util/List;8Ljava/util/Iterator;X(Lorg/eclipse/core/runtime/IStatus;)Ljava/util/List; Uy zb isMultiStatus U| }~ getChildren%()[Lorg/eclipse/core/runtime/IStatus;aStatusresulti currentChildchildStatiiEnum SourceFileStatusHelper.java!/*   :, , YY*** %+,-( & %&()2*3+4,5-6( *:+,:-.:/,:01 2X,:, ,%- Y-3 -8: -3:;Y*** %-= :6789:$;-=3@7A8BPCQDSET@ 4X+,X@AX/,X01UB, CDEJtFYH:+I::OU:WI:OU[W__cU:fW*,-j 2 N OPQ R,S/TASKPUWaXkY \ t+,tlmt/,t01 knmcop +qr,spa-.t*tlu knucov,sv YZDw$xFYHL*x`*{M>K,2:x0WI:+OU[W_ +[W, +*[W+ :`abcd"e,f8g;hLgYkbcnovq >xrpmVl.QA"@r8!ptpu8!v Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/helper/StringHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3805 Text-content-md5: 771c5f8a1b617314b073c6fd9eed4a9e Text-content-sha1: b70c124644adee81fbb4853b9d75a4c09a8b634f Content-length: 3864 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*org/eclipse/egf/common/helper/StringHelperjava/lang/ObjectREGEXP_NON_WORD_CHARACTERSLjava/lang/String; ConstantValue  [^a-zA-Z0-9]()VCode  LineNumberTableLocalVariableTablethis,Lorg/eclipse/egf/common/helper/StringHelper; formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;java/text/MessageFormat  (Ljava/lang/String;)V  format&(Ljava/lang/Object;)Ljava/lang/String; message_p arguments_p[Ljava/lang/Object; formatterLjava/text/MessageFormat; toLowerFirst&(Ljava/lang/String;)Ljava/lang/String;&java/lang/StringBuffer % )+*java/lang/String ,- substring(II)Ljava/lang/String; )/ 01 toLowerCase()Ljava/lang/String; )3 45charAt(I)C %7 89 setCharAt(IC)V %; <1toStringsource_presultLjava/lang/StringBuffer;firstCharacter toUpperFirst )C D1 toUpperCase getTokens9(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;H[Ljava/lang/String; )J K1trim )M NOlength()IQjava/util/StringTokenizer PS T'(Ljava/lang/String;Ljava/lang/String;)V PV WO countTokens PY Z1 nextToken separators_p tokenizerLjava/util/StringTokenizer; tokensCountIisubstringBefore'(CLjava/lang/String;)Ljava/lang/String; )d ef lastIndexOf(I)I separator_pCseparatorPositionsubstringAfter )l ,m(I)Ljava/lang/String; createHttpUripjava/lang/StringBuilderrhttp:// o ou vwappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; o; relativeUri_pK(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; )| }~indexOf(Ljava/lang/String;)I ) }(Ljava/lang/String;I)IbeginningDelimiter_pendingDelimiter_p content_pincludeDelimiters_pZindexBeginningDelimiterindexEndingDelimiterreplaceNonWordCharactersWithDot ) valueOf(C)Ljava/lang/String;  replaceNonWordCharacters8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;originalString_p&replaceNonWordCharactersWithUnderscore )  replaceAllreplacementString_p SourceFileStringHelper.java!   /*    QY*M,+ & '   !" #$ l"%Y*'L*(.M+,26+:0 123 "= >?@ A$ l"%Y*'L*(BM+,26+:< =>? "= >?@ EF oGM* *IL,+ +IL)Y*SM,PY*+RN-U6$)M6,-XS )Y*SM,>JMNQ#R,S.V8X>YCZI[O\W[d_ma>o=o[j>H87\]>1^_L`_ ab *M+ +IL,+c> +(M+M,"lnorst&w(y**gh*=(>i_ jb +M+ +IL,+c>+`kM+M,"')*+gh+=)>i_ n$ ;oYqs*tx y ,z E:,*{66,+6(,+L`(:,*L`(:&  !3BHEEEEB> ;_*_ $ < *.   $ < *_    U*++  Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/internal/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/internal/generator/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/internal/generator/emf/CustomizedGenerator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1472 Text-content-md5: da9640db8952b93ae3f14d0ca44130e0 Text-content-sha1: 6fe425381626063a3c079c744d1e8321dbdf8859 Content-length: 1531 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 13Aorg/eclipse/egf/common/internal/generator/emf/CustomizedGenerator1org/eclipse/emf/codegen/ecore/generator/Generator_generatorAdapterFactoryALorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;D(Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;)VCode   ()V   ?org/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory  setGenerator6(Lorg/eclipse/emf/codegen/ecore/generator/Generator;)VLineNumberTableLocalVariableTablethisCLorg/eclipse/egf/common/internal/generator/emf/CustomizedGenerator;generatorAdapterFactory_pgetAdapterFactories*(Ljava/lang/Object;)Ljava/util/Collection; Signaturem(Ljava/lang/Object;)Ljava/util/Collection;java/util/ArrayList ! "(I)V $&%java/util/Collection '(add(Ljava/lang/Object;)Z * object_pLjava/lang/Object;resultLjava/util/Collection;LocalVariableTypeTableYLjava/util/Collection; SourceFileCustomizedGenerator.java! _* *+ * * *"# $%' (M* Y M,* #W *+)M,.0 12 5&7 ((+,&-./ &-012 Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/internal/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/internal/helper/DefaultUserHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 919 Text-content-md5: 13f74a983cc88e3f49ffbbf9443a1f1b Text-content-sha1: b98e516a3627c4f492e7ee72ec6a5c7197efcfb4 Content-length: 978 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18org/eclipse/egf/common/internal/helper/DefaultUserHelperjava/lang/Object1org/eclipse/egf/common/helper/IUserEnforcedHelper()VCode  LineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/common/internal/helper/DefaultUserHelper;makeFileWritableF(Lorg/eclipse/core/resources/IFile;)Lorg/eclipse/core/runtime/IStatus; org/eclipse/core/runtime/Status  OK_STATUS"Lorg/eclipse/core/runtime/IStatus;file_p"Lorg/eclipse/core/resources/IFile;X(Lorg/eclipse/core/resources/IFile;Ljava/lang/Object;)Lorg/eclipse/core/runtime/IStatus; display_pLjava/lang/Object; SourceFileDefaultUserHelper.java! /*    8   B %  Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/listener Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/listener/AbstractProjectListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2303 Text-content-md5: d8f29bd75b27dcf1d9da2de3d8247270 Text-content-sha1: f7ee5811850475c05e8623111824eb9685a68903 Content-length: 2362 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1W7org/eclipse/egf/common/listener/AbstractProjectListenerjava/lang/Object2org/eclipse/core/resources/IResourceChangeListener()VCode  LineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/common/listener/AbstractProjectListener;resourceChanged4(Lorg/eclipse/core/resources/IResourceChangeEvent;)V /org/eclipse/core/resources/IResourceChangeEvent getDelta-()Lorg/eclipse/core/resources/IResourceDelta; )org/eclipse/core/resources/IResourceDelta  getResource(()Lorg/eclipse/core/resources/IResource;  !getKind()I#)org/eclipse/core/resources/IWorkspaceRoot % &'getAffectedChildren.()[Lorg/eclipse/core/resources/IResourceDelta; ) *+ getProjectM(Lorg/eclipse/core/resources/IResource;)Lorg/eclipse/core/resources/IProject; - ./handleProjectAddedS(Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/resources/IResourceDelta;)V 1 2!getFlags 465#org/eclipse/core/resources/IProject 78isOpen()Z : ;/handleProjectClosed = >/handleProjectChanged @ A/handleProjectRemovedevent_p1Lorg/eclipse/core/resources/IResourceChangeEvent; resourceDelta+Lorg/eclipse/core/resources/IResourceDelta;resource&Lorg/eclipse/core/resources/IResource;childrenResourceDeltas,[Lorg/eclipse/core/resources/IResourceDelta;currentChildResourceDeltakindI childResourceproject%Lorg/eclipse/core/resources/IProject;flagsisProjectOpenedZ resource_presult SourceFileAbstractProjectListener.java! /*    +M,,N,-",$:Y:662:6 : * (:  v qiq)* ,K06  36 @  * ,!* 9* < * ?` f "$$%,'A)J+S-[/`023679:;=@BD'J p BCDEFG,HIAJEJKL SMG [xNO 7PL .QR ./>/A/;/*+ ^M++4+4M, no pr SGTOUV Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/listener/DefaultResourceListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2605 Text-content-md5: 5e3fd2f3a8d21862f5e6444a6edf61ff Text-content-sha1: 5c01de9ee855ac61ed4abafe039335026d4738a4 Content-length: 2664 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1[7org/eclipse/egf/common/listener/DefaultResourceListenerjava/lang/Object2org/eclipse/core/resources/IResourceChangeListener_resourceToWatch&Lorg/eclipse/core/resources/IResource;_alreadyRegisteredZ()VCode  LineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/common/listener/DefaultResourceListener;setResourceToWatch)(Lorg/eclipse/core/resources/IResource;)V    *org/eclipse/core/resources/ResourcesPlugin  getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; !#"%org/eclipse/core/resources/IWorkspace $%addResourceChangeListener7(Lorg/eclipse/core/resources/IResourceChangeListener;)V resource_pdispose !) *%removeResourceChangeListenerresourceChanged4(Lorg/eclipse/core/resources/IResourceChangeEvent;)V . /0refersToResourceZ(Lorg/eclipse/core/resources/IResource;Lorg/eclipse/core/resources/IResourceChangeEvent;)Z 2 34handleResourceChangedZ(Lorg/eclipse/core/resources/IResourceChangeEvent;Lorg/eclipse/core/resources/IResource;)Vevent_p1Lorg/eclipse/core/resources/IResourceChangeEvent; 8:9/org/eclipse/core/resources/IResourceChangeEvent ;<getDelta-()Lorg/eclipse/core/resources/IResourceDelta; > /?T(Lorg/eclipse/core/resources/IResource;Lorg/eclipse/core/resources/IResourceDelta;)ZlookedForResource_p BDC)org/eclipse/core/resources/IResourceDelta EF getResource(()Lorg/eclipse/core/resources/IResource; HJI$org/eclipse/core/resources/IResource KLequals(Ljava/lang/Object;)Z BN OPgetAffectedChildren.()[Lorg/eclipse/core/resources/IResourceDelta;resourceDelta_p+Lorg/eclipse/core/resources/IResourceDelta;resourceresultchildren,[Lorg/eclipse/core/resources/IResourceDelta;iI SourceFileDefaultResourceListener.java!B   /*  _*+** *'( )*,&'  U***(*23 457 +, R**+- *+*1> ?A5634/0 \+,*+,7=RS U @56/? B,AN+-G6-,M:6*+2=6"_`acd#e/d?hHBB@BQR;S2T "UV WXYZ Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/misc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/misc/Couple.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2148 Text-content-md5: 80cb77ec203f2a2323b7c3586e047350 Text-content-sha1: e27916c81dc1080195d33b4d3c3425ead7681f18 Content-length: 2207 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1O"org/eclipse/egf/common/misc/Couplejava/lang/Objectjava/lang/Cloneable_keyLjava/lang/Object; SignatureTK;_valueTV;'(Ljava/lang/Object;Ljava/lang/Object;)V (TK;TV;)VCode  ()V    LineNumberTableLocalVariableTablethis$Lorg/eclipse/egf/common/misc/Couple;key_pvalue_pLocalVariableTypeTable,Lorg/eclipse/egf/common/misc/Couple;getKey()Ljava/lang/Object;()TK;getValue()TV;setKey(Ljava/lang/Object;)V(TK;)VsetValue(TV;)Vclone&()Lorg/eclipse/egf/common/misc/Couple;.()Lorg/eclipse/egf/common/misc/Couple; . *!0$java/lang/CloneNotSupportedException exception_p&Ljava/lang/CloneNotSupportedException;toString()Ljava/lang/String; 6 348:java/lang/StringBuffer 9< =(Ljava/lang/String;)V 9? @Aappend(C)Ljava/lang/StringBuffer; 9C @D,(Ljava/lang/String;)Ljava/lang/StringBuffer; 96 keyStringLjava/lang/String; valueString Exceptions K *+ SourceFile Couple.javaQLjava/lang/Object;Ljava/lang/Cloneable;!       **+*, ! "#     ! "A**  #! $A*2  %& 'Z*+ :; (& )Z*+ BC *+ ,a *-L/LM N  12  34B* *57L* *57M9Y+;(>,B)>E"WX(Y0Z5[9\>]AY B.FG(HG BA*!I/%*JLM N Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/misc/ISelectionHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 210 Text-content-md5: 442775548f25a8b0d1271aa257f71961 Text-content-sha1: 508c6f15c69b2c5313372a60ac6aae4da1bdccf1 Content-length: 269 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 -org/eclipse/egf/common/misc/ISelectionHandlerjava/lang/ObjecthandleSelection&(Ljava/lang/Object;)Ljava/lang/String; SourceFileISelectionHandler.java Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/misc/PlatformLocationType.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1322 Text-content-md5: 8f920143981cc5fbf55ff155753be94d Text-content-sha1: 090e590eb85bccc49e75dfe659e01c6af3d66862 Content-length: 1381 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 160org/eclipse/egf/common/misc/PlatformLocationTypejava/lang/EnumTARGET_PLATFORM_ONLY2Lorg/eclipse/egf/common/misc/PlatformLocationType;WORKSPACE_ONLYTARGET_PLATFORM_THEN_WORKSPACEWORKSPACE_THEN_TARGET_PLATFORM ENUM$VALUES3[Lorg/eclipse/egf/common/misc/PlatformLocationType;()VCode  (Ljava/lang/String;I)V          LineNumberTableLocalVariableTable thisvalues5()[Lorg/eclipse/egf/common/misc/PlatformLocationType; (*)java/lang/System +, arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOfF(Ljava/lang/String;)Lorg/eclipse/egf/common/misc/PlatformLocationType; 0 -15(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFilePlatformLocationType.java SignatureDLjava/lang/Enum;@1@@@@   TYYYYYSYSYSYS!  '%4"1*+#!" $ %&6YK*Y<YM',!" -.* */!"2345 Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/progress Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/progress/IProgressRunnable.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 261 Text-content-md5: 52262b18e7462197a7d40c5865c2f519 Text-content-sha1: 12a8996e69fcd422f8497fe93afc0d82cf64e265 Content-length: 320 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 1org/eclipse/egf/common/progress/IProgressRunnablejava/lang/Objectrun.(Lorg/eclipse/core/runtime/IProgressMonitor;)ZgetReportingTitle()Ljava/lang/String; SourceFileIProgressRunnable.java  Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/progress/ProductionProgressMonitor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1152 Text-content-md5: be5a360674cf66f8a03941332cbca4f1 Text-content-sha1: 3f8e1a61125e54af9b147d070049b4c5e22f2268 Content-length: 1211 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 179org/eclipse/egf/common/progress/ProductionProgressMonitorjava/lang/Object _totalWorkI_monitor%Lorg/eclipse/core/runtime/SubMonitor; getMonitor'()Lorg/eclipse/core/runtime/SubMonitor;Code  LineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/common/progress/ProductionProgressMonitor;;(Lorg/eclipse/core/runtime/SubMonitor;Ljava/lang/String;I)V  ()V   #org/eclipse/core/runtime/SubMonitor newChild((I)Lorg/eclipse/core/runtime/SubMonitor;  " #$ beginTask(Ljava/lang/String;I)V & '( setTaskName(Ljava/lang/String;)VparentMonitor_p taskName_pLjava/lang/String; totalWork_pend / 01worked(I)V 3 4setWorkRemaining SourceFileProductionProgressMonitor.java!  /* %  +***+* * *!* ,%./ 01"2*3*++)+*++,- G* *.* 2W9 :; 56 Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/progress/ProgressReporter$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1371 Text-content-md5: 8438fe4bde95d9ee5f339bf6e3371972 Text-content-sha1: fb38db128eeaf5f48e5d0ae2feaf1d84d89cd665 Content-length: 1430 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 142org/eclipse/egf/common/progress/ProgressReporter$1'org/eclipse/core/resources/WorkspaceJobval$runnable_p3Lorg/eclipse/egf/common/progress/IProgressRunnable;H(Ljava/lang/String;Lorg/eclipse/egf/common/progress/IProgressRunnable;)VCode    (Ljava/lang/String;)VLineNumberTableLocalVariableTablethis4Lorg/eclipse/egf/common/progress/ProgressReporter$1; $anonymous0Ljava/lang/String;runInWorkspaceO(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IStatus; Exceptions&org/eclipse/core/runtime/CoreException 0org/eclipse/egf/common/progress/ProgressReporter syncExeca(Lorg/eclipse/egf/common/progress/IProgressRunnable;Lorg/eclipse/core/runtime/IProgressMonitor;)Z !#"org/eclipse/core/runtime/Status $% OK_STATUS"Lorg/eclipse/core/runtime/IStatus; !' (% CANCEL_STATUS monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;resultZ SourceFileProgressReporter.javaEnclosingMethod 12 asyncExec6(Lorg/eclipse/egf/common/progress/IProgressRunnable;)V InnerClasses  C *, *+  -   Y* += & 0 1 )* +,-./03  Node-path: plugins/org.eclipse.egf.common/bin/org/eclipse/egf/common/progress/ProgressReporter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1471 Text-content-md5: 4bf61e4faa55d23be096bce354e5ffa1 Text-content-sha1: 8561dd4c2df89346e1bfa101fb01ba4a832917b6 Content-length: 1530 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 170org/eclipse/egf/common/progress/ProgressReporterjava/lang/ObjectTASK_DEFAULT_TICKS_COUNTI ConstantValue()VCode  LineNumberTableLocalVariableTablethis2Lorg/eclipse/egf/common/progress/ProgressReporter; asyncExec6(Lorg/eclipse/egf/common/progress/IProgressRunnable;)V2org/eclipse/egf/common/progress/ProgressReporter$1 1org/eclipse/egf/common/progress/IProgressRunnable getReportingTitle()Ljava/lang/String;  H(Ljava/lang/String;Lorg/eclipse/egf/common/progress/IProgressRunnable;)V "!!org/eclipse/core/runtime/jobs/Job # schedule runnable_p3Lorg/eclipse/egf/common/progress/IProgressRunnable;job#Lorg/eclipse/core/runtime/jobs/Job;syncExeca(Lorg/eclipse/egf/common/progress/IProgressRunnable;Lorg/eclipse/core/runtime/IProgressMonitor;)Z+,org/eclipse/core/runtime/NullProgressMonitor * . /0run.(Lorg/eclipse/core/runtime/IProgressMonitor;)ZprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;progressMonitor SourceFileProgressReporter.java InnerClasses!  /*    ]*Y**L+)*-45$%&' () n*+M, *Y,M*,-ABDF GJ $%1232456  Node-path: plugins/org.eclipse.egf.common/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 640 Text-content-md5: dea5a444dcd1890a64c20f3c8ff7ffee Text-content-sha1: df6180874da316490a8efaf6b300651b8154e8b8 Content-length: 685 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.properties,\ about.html,\ plugin.xml src.includes = about.html,\ schema/ Node-path: plugins/org.eclipse.egf.common/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 540 Text-content-md5: 3cce14a24f082a51c34eb70f62c219b0 Text-content-sha1: 6948efe8d9aff9d52690431c316b144f150f618e Content-length: 585 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Common (Incubation) providerName=Eclipse Modeling Project EGFUserHelperExtensionPoint=EGF User Enforced Helper Node-path: plugins/org.eclipse.egf.common/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 651 Text-content-md5: fa6f99e5e14224ec5575cc2fcfe51c09 Text-content-sha1: 77ec3df085b0e1202dc152aeb081092eb3f889bd Content-length: 696 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.common/schema Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/schema/user_helper.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2909 Text-content-md5: 4046f4ead7b4059541630cf238517df0 Text-content-sha1: 6ea9cca95a77fb4af60cf1adc0e81a318594d132 Content-length: 2954 K 13 svn:mime-type V 10 text/plain PROPS-END Breaks the dependency towards UI for helper purposes (such as resource handling with configuration management, ...). The implementation of the expected services. Must implement IUserEnforced interface (either directly or not). 1.2.0_M3 [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.common/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/activator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/activator/AbstractActivator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4228 Text-content-md5: e778bd5d3f8a202a2f8d6fde05d4e14c Text-content-sha1: db43d4d0765bee8e3ceaa78822becd544348429d Content-length: 4273 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.activator; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Plugin; import org.eclipse.core.runtime.Status; import org.eclipse.osgi.util.NLS; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.helper.StatusHelper; /** * @author fournier */ public abstract class AbstractActivator extends Plugin { public void log(Throwable t) { log(newErrorStatus(t.getMessage(), t)); } /** * Returns a new error status for this plug-in with the given message * @param message the message to be included in the status * @param exception the exception to be included in the status or null if none * @return a new error status */ public IStatus newErrorStatus(String message, Throwable exception) { return new Status(IStatus.ERROR, getPluginID(), ICommonConstants.INTERNAL_ERROR, message, exception); } /** * Logs the given message to the platform log. * * If you have an exception in hand, call log(String, Throwable) instead. * * If you have a status object in hand call log(String, IStatus) instead. * * @param message A high level UI message describing when the problem happened. */ public void log(String message) { getLog().log(StatusHelper.newStatus(getPluginID(), IStatus.ERROR, message, null)); } /** * Logs the given message and throwable to the platform log. * * If you have a status object in hand call log(String, IStatus) instead. * * * @param message A high level UI message describing when the problem happened. * @param t The throwable from where the problem actually occurred. */ public void log(String message, Throwable t) { log(message, StatusHelper.newStatus(getPluginID(), IStatus.ERROR, message, t)); } /** * Logs the given throwable to the platform log, indicating the class and method from where it is being logged (this is not necessarily where it occurred). * * @param clazz The calling class. * @param methodName The calling method name. * @param t The throwable from where the problem actually occurred. */ public void log(Class clazz, String methodName, Throwable t) { log(NLS.bind("Exception in {0}.{1}: {2}", new Object []{ clazz.getName(), methodName, t }), t); //$NON-NLS-1$ } /** * Logs the given message and status to the platform log. * * @param status The status describing the problem. Must not be null. */ public void log(IStatus status) { log(null, status); } /** * Log the given exception along with the provided message and severity indicator */ public void log(int severity, String message, Throwable e) { log(new Status(severity, getPluginID(), 0, message, e)); } /** * Logs the given message and status to the platform log. * * @param message A high level UI message describing when the problem happened. May be null. * @param status The status describing the problem. Must not be null. */ public void log(String message, IStatus status) { // 1FTUHE0: ITPCORE:ALL - API - Status & logging - loss of semantic info if (message != null) { getLog().log(StatusHelper.newStatus(getPluginID(), IStatus.ERROR, message, null)); } getLog().log(status); } /** * Get the plug-in ID according to MANIFEST.MF definition. * * @return a String containing the plug-in ID. */ public String getPluginID() { return getBundle().getSymbolicName(); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/activator/CommonActivator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3080 Text-content-md5: 0f915d509adc5814b4d6db5a5e57999a Text-content-sha1: 639ad13bdcd5c413d97627daa9904b3e1936779c Content-length: 3125 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.activator; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.common.helper.IUserEnforcedHelper; import org.eclipse.egf.common.internal.helper.DefaultUserHelper; import org.osgi.framework.BundleContext; /** * Common plug-in activator. * @author Guillaume Brocard */ public class CommonActivator extends AbstractActivator { /** * Extension point "user_helper" short id. */ protected static final String EXTENSION_POINT_SHORT_ID_USER_HELPER = "user_helper"; //$NON-NLS-1$ /** * Shared instance. */ private static CommonActivator __plugin; /** * User enforced helper. */ private IUserEnforcedHelper _userHelper; /** * Get shared instance. * @return */ public static CommonActivator getDefault() { return __plugin; } /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context_p) throws Exception { super.start(context_p); __plugin = this; } /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext context_p) throws Exception { __plugin = null; super.stop(context_p); } /** * Get user enforced helper unique implementation. * @return null if none could be found. */ public IUserEnforcedHelper getUserEnforcedHelper() { // Lazy loading. Search for the implementation. if (_userHelper == null) { // Get extensions abiding to user helper extension point. IConfigurationElement[] configurationElements = ExtensionPointHelper.getConfigurationElements( getPluginID(), EXTENSION_POINT_SHORT_ID_USER_HELPER ); if (configurationElements != null && configurationElements.length > 0) { // There should be one implementation only ! // So take the first one, as expected. Object instantiatedClass = ExtensionPointHelper.createInstance( configurationElements[0], ExtensionPointHelper.ATT_CLASS ); // Make sure this is the correct resulting type. if (instantiatedClass instanceof IUserEnforcedHelper) { _userHelper = (IUserEnforcedHelper) instantiatedClass; } } // Could not find any user helper, use default one. if (_userHelper == null) { _userHelper = new DefaultUserHelper(); } } return _userHelper; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/adapter Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/adapter/AbstractAdapterFactory.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2921 Text-content-md5: fbec9737c9e495b096ab9bf08c66d861 Text-content-sha1: f948f2637f2f4a093c6de2668b0a22de1719b305 Content-length: 2966 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.adapter; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.Platform; /** * Base class to implement {@link IAdapterFactory} class. * @author fournier */ public abstract class AbstractAdapterFactory implements IAdapterFactory { /** * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class) */ @SuppressWarnings("unchecked") public Object getAdapter(Object adaptableObject_p, Class adapterType_p) { Object adapter = null; // Looking for the related adapter for given model object. Iterator, AdapterDescriptor>> iterator = getAdapters().entrySet().iterator(); while (iterator.hasNext() && null == adapter) { Entry, AdapterDescriptor> entry = iterator.next(); Class modelObject = entry.getKey(); // Checking if the retrieved adaptable is a compatible type for given adaptable object. if (modelObject.isInstance(adaptableObject_p)) { AdapterDescriptor adapterDescriptor = entry.getValue(); adapter = adapterDescriptor.getAdapter(); } } return adapter; } /** * Return the map of registered adapters * @return */ protected abstract Map, AdapterDescriptor> getAdapters(); /** * Returns an object which is an instance of the given class associated with the given object. Returns null if no such object can be found. *

* Note that this method will never cause plug-ins to be loaded. If the only suitable factory is not yet loaded, this method will return null. * @param adaptable_p * the adaptable object being queried (usually an instance of IAdaptable) * @param adapterType_p * the type of adapter to look up * @return an object castable to the given adapter type, or null if the given adaptable object does not have an available adapter of the given * type */ public static Object getPlatformAdapter(Object adaptable_p, Class adapterType_p) { return Platform.getAdapterManager().getAdapter(adaptable_p, adapterType_p); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/adapter/AdapterDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2006 Text-content-md5: a20eabb0adbc84de7caf5264cc7ac1fc Text-content-sha1: f6fe75976017485ed31ce0395386dadaabbff28d Content-length: 2051 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.adapter; import org.apache.log4j.Logger; import org.eclipse.egf.common.misc.Couple; /** * Used to minimize memory consumption. (Flyweight pattern) * @author fournier */ public class AdapterDescriptor { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(AdapterDescriptor.class.getPackage().getName()); // Key is the type adaptable type, value is the adapter private Couple, Object> _couple; public AdapterDescriptor(Class objectClass_p) { _couple = new Couple, Object>(objectClass_p, null); } /** * Get the adapter for this descriptor. * @return a not null adapter */ public Object getAdapter() { Object adapter = _couple.getValue(); if (null == adapter) { try { adapter = _couple.getKey().newInstance(); _couple.setValue(adapter); } catch (InstantiationException exception_p) { StringBuilder loggerMessage = new StringBuilder("AdapterDescriptor.getAdapter(..) _ "); //$NON-NLS-1$ __logger.error(loggerMessage.toString(), exception_p); } catch (IllegalAccessException exception_p) { StringBuilder loggerMessage = new StringBuilder("AdapterDescriptor.getAdapter(..) _ "); //$NON-NLS-1$ __logger.error(loggerMessage.toString(), exception_p); } } return adapter; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/ant Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/ant/AbstractAntTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2760 Text-content-md5: 097ec1bd73899116fa093c51b63d1f14 Text-content-sha1: 1ed9e1c2fded586ea6b72929a07fd02abab79238 Content-length: 2805 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ant; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import org.eclipse.ant.core.AntCorePlugin; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; /** * Base class for the tasks that are defined in this plug-in. Provides common behavior and facilities.
* Code was copied from EMFTask class provided by org.eclipse.emf.ant plug-in. * @author Guillaume Brocard */ public abstract class AbstractAntTask extends Task { /** * Throws a BuildException if expression_p is false. * @param message_p * @param expression_p * @throws BuildException */ public static void assertTrue(String message_p, boolean expression_p) throws BuildException { if (!expression_p) { throw new BuildException(message_p); } } /** * Get the ANT progress monitor. * @return a not null {@link IProgressMonitor} */ protected IProgressMonitor getProgressMonitor() { try { if (getProject() != null) { IProgressMonitor progressMonitor = (IProgressMonitor) getProject().getReferences().get(AntCorePlugin.ECLIPSE_PROGRESS_MONITOR); if (progressMonitor != null) { return progressMonitor; } } } catch (Exception exception_p) { // Ignore } return new NullProgressMonitor(); } /** * @see org.apache.tools.ant.Task#execute() */ @Override public final void execute() throws BuildException { checkAttributes(); try { doExecute(); } catch (Exception exception_p) { if (exception_p instanceof BuildException) { throw (BuildException) exception_p; } throw new BuildException(exception_p); } } /** * All the attribute checks should be performed in this method. * @throws BuildException */ protected void checkAttributes() throws BuildException { // Subclasses may override this method } /** * Performs the task specific code. * @throws Exception */ abstract protected void doExecute() throws Exception; } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/constant Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/constant/ICommonConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3685 Text-content-md5: d271aaf24fc464498ed18ef3cd6b2743 Text-content-sha1: 5b5b07142d45031ce28e2bc37701899236de26fb Content-length: 3730 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.constant; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; /** * @author fournier */ public interface ICommonConstants { /** * Internal Error constant. */ public static final int INTERNAL_ERROR = 0; /** * Empty string constant. */ public static final String EMPTY_STRING = ""; //$NON-NLS-1$ /** * TAB character. */ public static final char TAB_CHARACTER = '\t'; /** * Slash character. */ public static final char SLASH_CHARACTER = '/'; /** * Dot character. */ public static final char DOT_CHARACTER = '.'; /** * Comma character. */ public static final char COMMA_CHARACTER = ','; /** * Semicolon character. */ public static final char SEMICOLON_CHARACTER = ';'; /** * Colon character. */ public static final char COLON_CHARACTER = ':'; /** * White space character. */ public static final char WHITE_SPACE_CHARACTER = ' '; /** * Define the platform resource path */ public static final String PLATFORM_RESOURCE = "platform:/resource/"; //$NON-NLS-1$ /** * End of line character. */ public static final char EOL_CHARACTER = '\n'; /** * Quote character. */ public static final char QUOTE_CHARACTER = '"'; /** * Call method prefix, that is go for the parameters (the real prefix being the method name). */ public static final char PARENTHESIS_OPEN_CHARACTER = '('; /** * Call method suffix, that is, close parameters list, but do not end call. */ public static final char PARENTHESIS_CLOSE_CHARACTER = ')'; /** * Underscore character. */ public static final char UNDERSCORE_CHARACTER = '_'; /** * Http URI prefix. */ public static final String HTTP_PREFIX = "http://"; //$NON-NLS-1$ /** * Ecore file extension. */ public static final String ECORE_FILE_EXTENSION = "ecore"; //$NON-NLS-1$ /** * GenModel file extension. */ public static final String GENMODEL_FILE_EXTENSION = "genmodel"; //$NON-NLS-1$ /** * Ecore diagram file extension. */ public static final String ECORE_DIAGRAM_FILE_EXTENSION = "ecorediag"; //$NON-NLS-1$ /** * Line separator. */ public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$ /** * Generated folder path. */ public static final String GENERATED_FOLDER_PATH = "generated"; //$NON-NLS-1$ /** * Generated folder IPath. */ public static final IPath GENERATED_FOLDER_IPATH = new Path("generated"); //$NON-NLS-1$ /** * Model folder path. */ public static final String MODEL_FOLDER_PATH = "model"; //$NON-NLS-1$ /** * Model folder IPath. */ public static final IPath MODEL_FOLDER_IPATH = new Path("model"); //$NON-NLS-1$ /** * Templates folder path. */ public static final String TEMPLATES_FOLDER_PATH = "templates"; //$NON-NLS-1$ /** * Templates folder IPath. */ public static final IPath TEMPLATES_FOLDER_IPATH = new Path("templates"); //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/constant/IEMFConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1766 Text-content-md5: 99a02cf4f74fd59d6646229eea7f6663 Text-content-sha1: ce63bfd92d48d36b9cc78570fb86e08fa641bc16 Content-length: 1811 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.constant; /** * Define constants related to EMF constants used in plugin.xml. * @author Guillaume Brocard */ public interface IEMFConstants { /** * Emf generated package extension-point package child genmodel attribute. */ static final String GENERATED_PACKAGE_EXTENSION_POINT_ATT_GEN_MODEL = "genModel"; //$NON-NLS-1$ /** * Emf generated package extension-point package child uri attribute. */ static final String GENERATED_PACKAGE_EXTENSION_POINT_ATT_URI = "uri"; //$NON-NLS-1$ /** * Emf generated package extension-point package child. */ static final String GENERATED_PACKAGE_EXTENSION_POINT_CHILD = "package"; //$NON-NLS-1$ /** * Emf generated package extension point plug-in id. */ static final String GENERATED_PACKAGE_EXTENSION_POINT_PLUGIN_ID = "org.eclipse.emf.ecore"; //$NON-NLS-1$ /** * Emf generated package extension point short id. */ static final String GENERATED_PACKAGE_EXTENSION_POINT_SHORT_ID = "generated_package"; //$NON-NLS-1$ /** * Emf generated package extension-point id. */ static final String GENERATED_PACKAGE_EXTENSION_POINT_FULL_ID = GENERATED_PACKAGE_EXTENSION_POINT_PLUGIN_ID + ICommonConstants.DOT_CHARACTER + GENERATED_PACKAGE_EXTENSION_POINT_SHORT_ID; } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/constant/IPatternConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3359 Text-content-md5: d162f5a1adbfde34f6b6346c8aa146e6 Text-content-sha1: 84709d4160033ce536fcb3600103402bd7333c18 Content-length: 3404 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.constant; /** * @author Guillaume Brocard */ public interface IPatternConstants { /** * Pattern plug-in id. */ public static final String PATTERN_PLUGIN_ID = "org.eclipse.egf.pattern"; //$NON-NLS-1$ /** * Pattern extension point id, excluding plug-in id. */ public static final String PATTERN_EXTENSION_POINT_ID = "pattern"; //$NON-NLS-1$ /** * Pattern extension point full id, including plug-in id. */ public static final String PATTERN_EXTENSION_POINT_FULL_ID = PATTERN_PLUGIN_ID + ICommonConstants.DOT_CHARACTER + PATTERN_EXTENSION_POINT_ID; /** * Pattern extension point child type. */ public static final String PATTERN_EXTENSION_POINT_CHILD_TYPE = "patternExtType"; //$NON-NLS-1$ /** * Pattern extension containing plug-in id. */ public static final String PATTERN_EXTENSION_CONTAINING_PLUGIN_ID = "pluginId"; //$NON-NLS-1$ /** * Pattern extension containing factory component name. */ public static final String PATTERN_EXTENSION_CONTAINING_FC_NAME = "fcName"; //$NON-NLS-1$ /** * Pattern extension read from the workspace or from the target platform.
* Key for a boolean value.
* True means that the extension has been loaded from the workspace, false from the target platform. */ public static final String PATTERN_EXTENSION_FROM_WORKSPACE = "fromWorkspace"; //$NON-NLS-1$ /** * Workspace project containing the pattern being described.
* Key for an IProject value. */ public static final String PATTERN_EXTENSION_WORKSPACE_PROJECT = "wsProject"; //$NON-NLS-1$ /** * Pattern extension point child 'library'. */ public static final String PATTERN_EXTENSION_POINT_CHILD_LIBRARY = "library"; //$NON-NLS-1$ /** * Pattern extension point child 'pattern'. */ public static final String PATTERN_EXTENSION_POINT_CHILD_PATTERN = "pattern"; //$NON-NLS-1$ /** * Library production orchestration attribute name as defined by the pattern extension point. */ public static final String LIBRARY_PRODUCTION_ORCHESTRATION_ATTRIBUTE_NAME = "productionOrchestration"; //$NON-NLS-1$ /** * Library runtime orchestration attribute name as defined by the pattern extension point. */ public static final String LIBRARY_RUNTIME_ORCHESTRATION_ATTRIBUTE_NAME = "runtimeOrchestration"; //$NON-NLS-1$ /** * Pattern model attribute name as defined by the pattern extension point. */ public static final String PATTERN_MODEL_ATTRIBUTE_NAME = "model"; //$NON-NLS-1$ /** * Library/Pattern separator in a library/pattern id. */ public static final char LIBRARY_PATTERN_ID_SEPARATOR = '/'; /** * Java source file extension. */ public static final String JAVA_SOURCE_FILE_EXTENSION = "java"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/constant/IPatternTemplateConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2087 Text-content-md5: 6d7c612da8bc17ebde266afc2c9f63f8 Text-content-sha1: 36bce5a1e27e4e95fa9871d3cf22dbea041a693a Content-length: 2132 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.constant; /** * @author Guillaume Brocard */ public interface IPatternTemplateConstants { /** * Pattern plug-in id. */ static final String PATTERN_PLUGIN_ID = "org.eclipse.egf.pattern"; //$NON-NLS-1$ /** * Pattern Template extension point id. */ static final String PATTERN_TEMPLATE_EXTENSION_POINT_ID = "patternTemplate"; //$NON-NLS-1$ /** * Generated Pattern extension point full id. */ static final String PATTERN_TEMPLATE_EXTENSION_POINT_FULL_ID = PATTERN_PLUGIN_ID + ICommonConstants.DOT_CHARACTER + PATTERN_TEMPLATE_EXTENSION_POINT_ID; /** * Pattern extension point child type. */ public static final String PATTERN_TEMPLATE_EXTENSION_POINT_CHILD_TYPE = "patternTemplateExtType"; //$NON-NLS-1$ /** * Generated Pattern extension point child generatedPattern. */ static final String PATTERN_TEMPLATE_EXTENSION_POINT_CHILD_PATTERN_TEMPLATE = PATTERN_TEMPLATE_EXTENSION_POINT_ID; /** * Define a constant for the class attribute. */ static final String PATTERN_TEMPLATE_ATT_CLASS = "class"; //$NON-NLS-1$ /** * Define a constant for the type attribute. */ static final String PATTERN_TEMPLATE_ATT_TYPE = "type"; //$NON-NLS-1$ /** * Define a constant for the path attribute. */ static final String PATTERN_TEMPLATE_ATT_PATH = "path"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/descriptor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/descriptor/GenericDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2709 Text-content-md5: 8f5c354192eea3bc6e3207ae7686f650 Text-content-sha1: 5da7f206d1adfe866df663254e1b5df012fd08d5 Content-length: 2754 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.descriptor; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Generic implementation of the {@link IDescriptor} object. * @author Guillaume Brocard */ public class GenericDescriptor implements IDescriptor { /** * Properties container. */ private Map _properties; /** * Children descriptors. */ private List _children; /** * Parent descriptor. */ private IDescriptor _parent; /** * Constructor. */ public GenericDescriptor() { _properties = new HashMap(0); _children = new ArrayList(0); } /** * @see org.eclipse.egf.common.descriptor.IDescriptor#getValue(java.lang.String) */ public Object getValue(String propertyName_p) { return _properties.get(propertyName_p); } /** * Set the specified value for the given property name in this descriptor. * @param propertyName_p * @param value_p */ public void setValue(String propertyName_p, Object value_p) { _properties.put(propertyName_p, value_p); } /** * @see org.eclipse.egf.common.descriptor.IDescriptor#getChildren() */ public List getChildren() { return _children; } /** * Add all given children. * @param descriptors_p */ public void addChildren(List descriptors_p) { // Declare through addChild, so as to set parent link properly. for (IDescriptor descriptor : descriptors_p) { addChild(descriptor); } } /** * Add a child descriptor. * @param descriptor_p */ public void addChild(IDescriptor descriptor_p) { _children.add(descriptor_p); // Set parent reference. if (descriptor_p instanceof GenericDescriptor) { ((GenericDescriptor) descriptor_p).setParent(this); } } /** * @see org.eclipse.egf.common.descriptor.IDescriptor#getParent() */ public IDescriptor getParent() { return _parent; } /** * Set parent descriptor. * @param parent_p the parent to set */ public void setParent(IDescriptor parent_p) { _parent = parent_p; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/descriptor/IDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1277 Text-content-md5: 614cdf70e7eeb2e33d0a5bb5838f8592 Text-content-sha1: 58560bc6bce2a36ad2dadfdff8cb7d6ac1e739ee Content-length: 1322 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.descriptor; import java.util.List; /** * Base interface to implement a model object descriptor.
* Each model object property can be get through {@link #getValue(String)} method. * @author Guillaume Brocard */ public interface IDescriptor { /** * Return the value set for the specified property name. * @param propertyName_p the property name must be unique. * @return the object value or null if not found. */ public Object getValue(String propertyName_p); /** * Get parent descriptor, if it was set by the reading algorithm. * @return null if this information is not available, or if it has none. */ public IDescriptor getParent(); /** * Get children descriptors, if any. * @return */ public List getChildren(); } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/descriptor/pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/descriptor/pattern/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1333 Text-content-md5: 5a1b1d312e5cdc042ee4a1bee80226bd Text-content-sha1: 61a5d0cdb0484a787c5f2987f81b041a92433c5c Content-length: 1378 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.descriptor.pattern.helper; import org.eclipse.egf.common.descriptor.IDescriptor; /** * Pattern descriptor handler while parsing using the pattern descriptor strategy. * @author Guillaume Brocard */ public interface IPatternDescriptorHandler { /** * Handle a library descriptor. * @param descriptor_p * @param parentLibraryId_p The full id of the library. */ public void handleLibraryDescriptor(IDescriptor descriptor_p, String parentLibraryId_p); /** * Handle a pattern descriptor. * @param descriptor_p * @param patternFullId_p The pattern full id. */ public void handlePatternDescriptor(IDescriptor descriptor_p, String patternFullId_p); /** * Handle a descriptor that is neither a library nor a pattern one. * @param descriptor_p */ public void handleDescriptor(IDescriptor descriptor_p); } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/descriptor/pattern/helper/PatternDescriptorStrategy.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5804 Text-content-md5: 9f8f95947e48fb2ef86ae26c3d9a381e Text-content-sha1: 3c3ca13c591831baae047c45b7aa1f8924009ab9 Content-length: 5849 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.descriptor.pattern.helper; import java.util.List; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.constant.IPatternConstants; import org.eclipse.egf.common.descriptor.GenericDescriptor; import org.eclipse.egf.common.descriptor.IDescriptor; import org.eclipse.egf.common.helper.ExtensionPointHelper; /** * Pattern descriptor various strategies implementation. * @author Guillaume Brocard */ public class PatternDescriptorStrategy { /** * Iterate through descriptors starting from given parent one. * @param handler_p * @param descriptor_p */ public void iterateThroughPatternExtensionDescriptor(IPatternDescriptorHandler handler_p, IDescriptor descriptor_p) { // Preconditions. if (handler_p == null || descriptor_p == null) { return; } // Handle pattern extension descriptor. handlePatternExtensionDescriptor(handler_p, descriptor_p, null); } /** * Handler descriptor for a pattern extension (extension point patternExtension). * @param handler_p * @param descriptor_p * @param idPrefix_p */ protected void handlePatternExtensionDescriptor( IPatternDescriptorHandler handler_p, IDescriptor descriptor_p, String idPrefix_p ) { // Get descriptor type... Object descriptorType = descriptor_p.getValue(IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_TYPE); // ... children... List children = descriptor_p.getChildren(); // ... and id. String currentId = (String) descriptor_p.getValue(ExtensionPointHelper.ATT_ID); StringBuilder idPrefix = new StringBuilder(); // Library case. if (IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_LIBRARY.equals(descriptorType)) { if (idPrefix_p == null || idPrefix_p.trim().length() == 0) { idPrefix.append(currentId); } else { idPrefix .append(idPrefix_p) .append(IPatternConstants.LIBRARY_PATTERN_ID_SEPARATOR) .append(currentId); } handler_p.handleLibraryDescriptor(descriptor_p, idPrefix.toString()); } else if (IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_PATTERN.equals(descriptorType)) { // Pattern case. children = null; idPrefix .append(idPrefix_p) .append(IPatternConstants.LIBRARY_PATTERN_ID_SEPARATOR) .append(currentId); handler_p.handlePatternDescriptor(descriptor_p, idPrefix.toString()); } else { // Unknown case. handler_p.handleDescriptor(descriptor_p); } // Should search be stopped for current branch ? if (children != null && stopSearch(descriptor_p)) { children = null; } // Go for the children. if (children != null) { for (IDescriptor descriptor : children) { handlePatternExtensionDescriptor(handler_p, descriptor, idPrefix.toString()); } } } /** * Should search be stopped for potential children of given descriptor ? * @param parentDescriptor_p * @return true if search should be interrupted, false if it should continue. * Default implementation does return false, that is, search is never interrupted for given branch. */ protected boolean stopSearch(IDescriptor parentDescriptor_p) { return false; } /** * Handle root descriptor content by retaining only root libraries. * @param rootDescriptor_p * @param childContainer_p */ public static void retainRootOnly(GenericDescriptor rootDescriptor_p, IDescriptor childContainer_p) { // Precondition. if (childContainer_p == null) { return; } // This descriptor is not a root library one, since it does not have any type. if (childContainer_p.getValue(IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_TYPE) == null) { List children = childContainer_p.getChildren(); // Iterate through container children. for (IDescriptor descriptor : children) { retainRootOnly(rootDescriptor_p, descriptor); } } else { // First adding value descriptor reached, add it to root descriptor. rootDescriptor_p.addChild(childContainer_p); } } /** * Get full id for given library/pattern descriptor. * @param descriptor_p * @return */ public static String getDescriptorFullId(IDescriptor descriptor_p) { String result = null; // Precondition. if (descriptor_p == null) { return result; } // Initialize result to empty string. result = ICommonConstants.EMPTY_STRING; // Let takes into account the whole description chain. IDescriptor currentParent = descriptor_p; while (currentParent != null) { String parentId = (String) currentParent.getValue(ExtensionPointHelper.ATT_ID); if (parentId != null && parentId.trim().length() > 0) { if (result.length() > 0) { result = new StringBuilder(parentId) .append(IPatternConstants.LIBRARY_PATTERN_ID_SEPARATOR) .append(result) .toString(); } else { // Do not add library/pattern separator for trailing id. result = parentId; } } currentParent = currentParent.getParent(); } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/generator/EmfProjectGenerator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6179 Text-content-md5: cc98cd06af26eb0423230bd56577222a Text-content-sha1: 31edfe6035b72a78918b9b3a96441da38a6896f7 Content-length: 6224 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.generator; import static org.eclipse.egf.common.constant.ICommonConstants.EMPTY_STRING; import static org.eclipse.egf.common.constant.ICommonConstants.TAB_CHARACTER; import java.util.Map; import org.apache.log4j.Logger; import org.eclipse.egf.common.internal.generator.emf.CustomizedGenerator; import org.eclipse.emf.codegen.ecore.generator.Generator; import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory; import org.eclipse.emf.codegen.ecore.genmodel.GenModel; import org.eclipse.emf.codegen.merge.java.JControlModel; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.Monitor; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants; /** * Helps to deal with EMF project generation. * @author Guillaume Brocard */ public class EmfProjectGenerator { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(EmfProjectGenerator.class.getPackage().getName()); /** * Code generator. */ private Generator _generator; /** * Generator adapter factory. */ private GeneratorAdapterFactory _generatorAdapterFactory; /** * Project type. */ private EmfProjectType _projectType; /** * Constructor. * @param generatorAdapterFactory_p * @param projectType_p */ public EmfProjectGenerator(GeneratorAdapterFactory generatorAdapterFactory_p, EmfProjectType projectType_p) { _generatorAdapterFactory = generatorAdapterFactory_p; _projectType = projectType_p; } /** * Initialize the genModel * @param genModel_p * @return false if an error occurs; false otherwise. */ protected boolean initialize(GenModel genModel_p) { // Initialize given genmodel. genModel_p.reconcile(); genModel_p.setCanGenerate(true); boolean result = validate(genModel_p); // Check Preconditions if (!result) { return result; } // Initialize the code _generator. _generator = new CustomizedGenerator(_generatorAdapterFactory); _generator.setInput(genModel_p); JControlModel jControlModel = _generator.getJControlModel(); // Handle code formatting if (genModel_p.isCodeFormatting()) { jControlModel.setLeadingTabReplacement(null); jControlModel.setConvertToStandardBraceStyle(false); } else { Map options = JavaCore.getOptions(); String tabSize = (String) options.get(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); String braceStyle = (String) options.get(DefaultCodeFormatterConstants.FORMATTER_BRACE_POSITION_FOR_TYPE_DECLARATION); String tabCharacter = (String) options.get(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR); if (JavaCore.TAB.equals(tabCharacter)) { jControlModel.setLeadingTabReplacement(String.valueOf(TAB_CHARACTER)); } else { StringBuffer spaces = new StringBuffer(EMPTY_STRING); for (int i = Integer.parseInt(tabSize); i > 0; --i) { spaces.append(EMPTY_STRING); } jControlModel.setLeadingTabReplacement(spaces.toString()); } jControlModel.setConvertToStandardBraceStyle(DefaultCodeFormatterConstants.END_OF_LINE.equals(braceStyle)); } return result; } /** * Generate required project type for given genModel. * @param monitor_p * @param genModel_p */ public boolean generate(Monitor monitor_p, GenModel genModel_p) { // Is the generation possible ? String projectTypeValue = _projectType.getValue(); boolean isCorrect = initialize(genModel_p) && _generator.canGenerate(genModel_p, projectTypeValue); if (isCorrect) { Diagnostic diagnostic = _generator.generate(genModel_p, projectTypeValue, null, monitor_p); isCorrect = handleDiagnostic(diagnostic, "Java Code generation failed for: " + genModel_p.toString()); //$NON-NLS-1$ } return isCorrect; } /** * Validate given genModel. * @param genModel_p */ protected boolean validate(GenModel genModel_p) { boolean result = true; // TODO Stephane: revoir en juillet le post titr� "EcoreImporterWizard can use invalid genModel ?" sur le forum EMF. // genModel_p.setValidateModel(true); // Diagnostic diagnostic = genModel_p.diagnose(); // StringBuffer loggerMessage = new StringBuffer("GenModel is invalid to generate java code:"); //$NON-NLS-1$ // loggerMessage.append(genModel_p.toString()); // result = handleDiagnostic(diagnostic, loggerMessage.toString()); return result; } /** * Handle a diagnostic. * @param diagnostic_p * @param message_p the displayed message if an error occurs. * @return false if an error occurs; true otherwise. */ protected boolean handleDiagnostic(Diagnostic diagnostic_p, String message_p) { boolean result = true; if (Diagnostic.OK != diagnostic_p.getSeverity()) { StringBuffer loggerMessage = new StringBuffer("AbstractGenerator.handleDiagnostic(..) _ "); //$NON-NLS-1$ loggerMessage.append(message_p); loggerMessage.append(' '); loggerMessage.append(diagnostic_p.getMessage()); for (Diagnostic diagnostic : diagnostic_p.getChildren()) { handleDiagnostic(diagnostic, message_p); } Throwable exception = diagnostic_p.getException(); if (null != exception) { loggerMessage.append(exception.getMessage()); __logger.fatal(loggerMessage.toString(), exception); } else { __logger.fatal(loggerMessage.toString()); } result = false; } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/generator/EmfProjectType.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1967 Text-content-md5: 34e60c7837d9019d8fcc32f09abd4e78 Text-content-sha1: e499175c6b0af2ae8e1657ac7a88be79c8e7fbeb Content-length: 2012 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.generator; import org.eclipse.emf.codegen.ecore.genmodel.generator.GenBaseGeneratorAdapter; /** * @author Guillaume Brocard */ public enum EmfProjectType { /** * The project type constant representing a model project.
* This is the string "org.eclipse.emf.codegen.ecore.genmodel.generator.ModelProject". */ MODEL_PROJECT_TYPE(GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE), /** * The project type constant representing an edit project.
* This is the string "org.eclipse.emf.codegen.ecore.genmodel.generator.EditProject". */ EDIT_PROJECT_TYPE(GenBaseGeneratorAdapter.EDIT_PROJECT_TYPE), /** * The project type constant representing an editor project.
* This is the string "org.eclipse.emf.codegen.ecore.genmodel.generator.EditorProject". */ EDITOR_PROJECT_TYPE(GenBaseGeneratorAdapter.EDITOR_PROJECT_TYPE), /** * The project type constant representing a tests project.
* This is the string "org.eclipse.emf.codegen.ecore.genmodel.generator.TestsProject". */ TESTS_PROJECT_TYPE(GenBaseGeneratorAdapter.TESTS_PROJECT_TYPE); /** * Value defined by the enumeration. */ private String _value; /** * Constructor. * @param description_p * @param id_p */ private EmfProjectType(String value_p) { _value = value_p; } /** * Return the value for the current enumeration instance. * @return */ public String getValue() { return _value; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/generator/IEgfGeneratorConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1170 Text-content-md5: 28470eca82d7bf1ed6651575ed412db9 Text-content-sha1: 929e3d365aa737fe1fe50365366545d4a556a5eb Content-length: 1215 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.generator; /** * @author fournier */ public interface IEgfGeneratorConstants { /** * Define source folder where model API are produced. */ public static final String SRC_FOLDER = "src"; //$NON-NLS-1$ /** * A path to a file that should exist in every hosting project. */ public static final String PROJECT_ROOT_FILE = "/META-INF/MANIFEST.MF"; //$NON-NLS-1$ /** * Generated util Java packages prefix. */ public static final String GENERATED_UTIL_JAVA_PACKAGE_SUFFIX = ".util"; //$NON-NLS-1$ /** * Generated implementation Java packages prefix. */ public static final String GENERATED_IMPL_JAVA_PACKAGE_SUFFIX = ".impl"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/BundleHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2306 Text-content-md5: 5165a216a8d5fe9c314c506c5e5f840b Text-content-sha1: 89174ae28dc4ff47c626fef5e8c56db63e3b1765 Content-length: 2351 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import org.osgi.framework.Bundle; /** * This helper provides high-level services to deal with class loading. * @author Xavier Maysonnave */ public class BundleHelper { /** * Instantiate given fully qualified class name using given bundle. * @param fullyQualifiedClassName_p the class name with its package name (dot separated syntax). * @param bundle_p which can load given class name. * @return an instance of given class name or null if instantiation failed. */ public static Object instantiate(String fullyQualifiedClassName_p, Bundle bundle_p) { Object result = null; // Precondition. if (bundle_p == null) { return result; } try { // Try loading a class according to the class name. Class class_ = loadClass(fullyQualifiedClassName_p, bundle_p); // Try instantiating an object of loaded class. if (null != class_) { result = class_.newInstance(); } } catch (Throwable exception_p) { // Failed silently. } return result; } /** * Load given fully qualified class name using given bundle. * @param fullyQualifiedClassName_p the class name with its package name (dot separated syntax). * @param bundle_p bundle which can load given class name. * @return loaded Class according to given class name or null if loading failed. */ public static Class loadClass(String fullyQualifiedClassName_p, Bundle bundle_p) { Class class_ = null; // Precondition. if (bundle_p == null) { return class_; } try { // Try loading a class according to the class name. class_ = bundle_p.loadClass(fullyQualifiedClassName_p); } catch (Throwable exception_p) { // Failed silently. } return class_; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/ClassLoadingHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2345 Text-content-md5: d92e358115be186da3b7276dce99db15 Text-content-sha1: 4270ced489ef49ac280ac3e06b24438dd695579f Content-length: 2390 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; /** * This helper provides high-level services to deal with class loading. * @author fournier */ public class ClassLoadingHelper { /** * Instantiate given fully qualified class name using given class loader. * @param fullyQualifiedClassName_p the class name with its package name (dot separated syntax). * @param classLoader_p class loader which can load given class name. * @return an instance of given class name or null if instantiation failed. */ public static Object instantiate(String fullyQualifiedClassName_p, ClassLoader classLoader_p) { Object result = null; // Precondition. if (classLoader_p == null) { return result; } try { // Try loading a class according to the class name. Class class_ = loadClass(fullyQualifiedClassName_p, classLoader_p); // Try instantiating an object of loaded class. if (null != class_) { result = class_.newInstance(); } } catch (Throwable exception_p) { // Failed silently. } return result; } /** * Load given fully qualified class name using given class loader. * @param fullyQualifiedClassName_p the class name with its package name (dot separated syntax). * @param classLoader_p class loader which can load given class name. * @return loaded Class according to given class name or null if loading failed. */ public static Class loadClass(String fullyQualifiedClassName_p, ClassLoader classLoader_p) { Class class_ = null; // Precondition. if (classLoader_p == null) { return class_; } try { // Try loading a class according to the class name. class_ = classLoader_p.loadClass(fullyQualifiedClassName_p); } catch (Throwable exception_p) { // Failed silently. } return class_; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/EcoreHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 10710 Text-content-md5: 5f4654b4cb81c499b2b04d7d7080904d Text-content-sha1: 2be767a3b8464c6773f62d0f51726df0715cdcde Content-length: 10755 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.helper; import java.util.Collection; import java.util.Iterator; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.egf.common.constant.IEMFConstants; import org.eclipse.emf.codegen.ecore.genmodel.GenModel; import org.eclipse.emf.codegen.ecore.genmodel.GenPackage; import org.eclipse.emf.ecore.EAnnotation; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.ENamedElement; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.util.EcoreUtil; /** * Ecore helper that enhances the {@link EcoreUtil} class. * @author Guillaume Brocard */ public class EcoreHelper { /** * Returns true if eObject1_p and eObject2_p are through {@link EcoreUtil#equals(Object)}.
* If not, an ultimate check is performed for {@link EClassifier} and {@link EAnnotation}.
* For {@link EClassifier}, classifier names and parent package name-space URIs are tested.
* For {@link EPackage}, name-space URIs are tested.
* For {@link EAnnotation}, annotation sources are tested. * @param eObject1_p * @param eObject2_p * @param compareWholeStructure_p Should both objects be compared as tree roots ? true if so.
* This comparison takes significantly more time than the other one. * @return true means equals. */ public static boolean equals(EObject eObject1_p, EObject eObject2_p, boolean compareWholeStructure_p) { boolean result = compareWholeStructure_p && EcoreUtil.equals(eObject1_p, eObject2_p); // If meta-models for given eObjects are not generated, the EcoreUtil.equals() method fails. // Give an ultimate chance to get the right result. if (!result) { if ((eObject1_p instanceof EPackage) && (eObject2_p instanceof EPackage)) { // Try to check packages based on name-space URIs. result = ((EPackage) eObject1_p).getNsURI().equals(((EPackage) eObject2_p).getNsURI()); } else if ((eObject1_p instanceof ENamedElement) && (eObject2_p instanceof ENamedElement)) { // Try to check the named element names and the container values. ENamedElement eObject1 = (ENamedElement) eObject1_p; ENamedElement eObject2 = (ENamedElement) eObject2_p; if (eObject1.getName().equals(eObject2.getName())) { // If names are equals, check also containers. EObject eObject1Container = eObject1.eContainer(); EObject eObject2Container = eObject2.eContainer(); result = equals(eObject1Container, eObject2Container, compareWholeStructure_p); } } else if ((eObject1_p instanceof EAnnotation) && (eObject2_p instanceof EAnnotation)) { // Try to check annotation sources. EAnnotation eAnnotation1 = (EAnnotation) eObject1_p; EAnnotation eAnnotation2 = (EAnnotation) eObject2_p; result = eAnnotation1.getSource().equals(eAnnotation2.getSource()); } } return result; } /** * Compare both objects for equality.
* Equivalent to calling {@link #equals(EObject, EObject, boolean)} with boolean value set to true. * @param eObject1_p * @param eObject2_p * @return */ public static boolean equals(EObject eObject1_p, EObject eObject2_p) { return equals(eObject1_p, eObject2_p, true); } /** * Get static ecore package from serialized one.
* That implies that the corresponding ecore model has been generated once. * @param serializedPackage_p * @return null if no generated package could be found. */ public static EPackage getStaticPackage(EPackage serializedPackage_p) { EPackage staticPackageInstance = null; // Get the equivalent from the Global EPackage registry. Object staticPackage = EPackage.Registry.INSTANCE.get(serializedPackage_p.getNsURI()); if (null != staticPackage) { if (staticPackage instanceof EPackage) { staticPackageInstance = (EPackage) staticPackage; } else if (staticPackage instanceof EPackage.Descriptor) { staticPackageInstance = ((EPackage.Descriptor) staticPackage).getEPackage(); } } return staticPackageInstance; } /** * Get static class from serialized one. * @param serializedClass_p * @return null if static class could not be found. */ public static EClass getStaticClass(EClass serializedClass_p) { return getStaticClass(getStaticPackage(getRootPackage(serializedClass_p.getEPackage())), serializedClass_p); } /** * Get static class from given containing static package and given serialized form. * @param staticPackage_p * @param serializedClass_p * @return null if no corresponding static class could be found. */ private static EClass getStaticClass(EPackage staticPackage_p, EClass serializedClass_p) { EClass result = null; // Search for classifiers. for (Iterator classifiers = staticPackage_p.getEClassifiers().iterator(); classifiers.hasNext() && (null == result);) { EClassifier classifier = classifiers.next(); if (equals(classifier, serializedClass_p)) { result = (EClass) classifier; } } // Search in sub-packages. if (null == result) { for (Iterator subpackages = staticPackage_p.getESubpackages().iterator(); subpackages.hasNext() && (null == result);) { result = getStaticClass(subpackages.next(), serializedClass_p); } } return result; } /** * Get root package for given one.
* Root package being the eldest parent package. * @param package_p * @return */ public static EPackage getRootPackage(EPackage package_p) { EPackage result = null; EPackage rootPackage = package_p; while (null != rootPackage) { result = rootPackage; rootPackage = result.getESuperPackage(); } return result; } /** * Get root package for specified element.
* Root package being the eldest parent package. * @param element_p * @return */ public static EPackage getRootPackage(ENamedElement element_p) { EPackage ownerPackage = getContainingPackage(element_p); // Precondition. if (null == ownerPackage) { return null; } return EcoreHelper.getRootPackage(ownerPackage); } /** * Get containing package for specified element. * @param element_p * @return */ public static EPackage getContainingPackage(ENamedElement element_p) { EPackage ownerPackage = null; // Precondition. if (null == element_p) { return ownerPackage; } // Get owner package of specified element. if (element_p instanceof EClassifier) { ownerPackage = ((EClassifier) element_p).getEPackage(); } else { ownerPackage = ((EClassifier) element_p.eContainer()).getEPackage(); } return ownerPackage; } /** * Get generated package Java name for given package. * @param genModelRelativePath_p * @param package_p * @return */ public static String getImportedPackageName(EPackage package_p) { String result = null; // Load generation model. GenModel genModel = loadGenModel(package_p); // Precondition. if (null == genModel) { return result; } // Filter to genPackages. Collection genPackages = genModel.getAllGenPackagesWithClassifiers(); for (GenPackage genPackage : genPackages) { // Found corresponding genPackage, get its Java interface name. if (equals(package_p, genPackage.getEcorePackage(), false)) { result = genPackage.getQualifiedPackageName(); break; } } return result; } /** * Get the generation model for specified element. * @param element_p * @return null if no generation model found for specified element.
* That means the plug-in that hosts the specified element is not installed or 'generated_package' extension is missing. */ public static GenModel loadGenModel(EPackage package_p) { GenModel result = null; // Precondition. if (null == package_p) { return result; } EPackage rootPackage = getRootPackage(package_p); String rootPackageNsUri = rootPackage.getNsURI(); IConfigurationElement configurationElement = ExtensionPointHelper.getConfigurationElement(IEMFConstants.GENERATED_PACKAGE_EXTENSION_POINT_PLUGIN_ID, IEMFConstants.GENERATED_PACKAGE_EXTENSION_POINT_SHORT_ID, IEMFConstants.GENERATED_PACKAGE_EXTENSION_POINT_ATT_URI, rootPackageNsUri); // Could not find the extension in target platform. if (null == configurationElement) { return result; } // Load root package generation model. IPath genModelRelativePath = new Path(configurationElement.getContributor().getName()); genModelRelativePath = genModelRelativePath.append(configurationElement.getAttribute(IEMFConstants.GENERATED_PACKAGE_EXTENSION_POINT_ATT_GEN_MODEL)); ResourceSet resourceSet = new ResourceSetImpl(); Resource resource = resourceSet.getResource(FileHelper.getFileFullUri(genModelRelativePath.toString()), true); if (null != resource) { result = (GenModel) resource.getContents().get(0); } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/ExtensionPointHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11982 Text-content-md5: 2a4e7d0d08af7e52384db725b7305103 Text-content-sha1: 2619e09b091db05f331f9ef1488e69d1257ad230 Content-length: 12027 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ /** * */ package org.eclipse.egf.common.helper; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.common.constant.ICommonConstants; /** * @author fournier */ public class ExtensionPointHelper { /** * Log4j reference logger. */ private static final Logger _logger = Logger.getLogger(ExtensionPointHelper.class.getPackage().getName()); /** * Define a constant for the attribute named class in ExtensionPoint tab of plug-in xml files. */ public static final String ATT_CLASS = "class"; //$NON-NLS-1$ /** * Define a constant for the attribute named name in ExtensionPoint tab of plug-in xml files. */ public static final String ATT_NAME = "name"; //$NON-NLS-1$ /** * Define a constant for the attribute named id in ExtensionPoint tab of plug-in xml files. */ public static final String ATT_ID = "id"; //$NON-NLS-1$ /** * Define a constant for the element named description in ExtensionPoint tab of plug-in xml files. */ public static final String ELEMENT_DESCRIPTION = "description"; //$NON-NLS-1$ /** * Get the configuration elements for a specified plugin id & extension point id. * @param pluginId_p the identifier of the plugin. * @param extensionPointId_p the simple identifier of the extension point. * @return an array of {@link IConfigurationElement} or an empty array if the extension point does not exist,has no extensions configured, or none of the * extensions contain configuration elements. */ public static IConfigurationElement[] getConfigurationElements(String pluginId_p, String extensionPointId_p) { IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry(); IConfigurationElement[] configElements = extensionRegistry.getConfigurationElementsFor(pluginId_p, extensionPointId_p); return configElements; } /** * Get the extensions for identified plug-in extension point coming from an identified plug-in. * @param pluginId_p The identifier of the plug-in declaring the extension point. * @param extensionPointId_p The extension point id. * @param extensionDeclaringPluginId_p The identifier of the plug-in potentially declaring extensions for this extension point. * @return an array of {@link IConfigurationElement}. Empty if no extension could be found with given criteria. */ public static IConfigurationElement[] getConfigurationElements(String pluginId_p, String extensionPointId_p, String extensionDeclaringPluginId_p) { List resultingElements = new ArrayList(0); IConfigurationElement[] allElements = getConfigurationElements(pluginId_p, extensionPointId_p); for (IConfigurationElement configurationElement : allElements) { if (isDeclaredBy(configurationElement, extensionDeclaringPluginId_p)) { resultingElements.add(configurationElement); } } return resultingElements.toArray(new IConfigurationElement[resultingElements.size()]); } /** * Is given configuration element declared by identified plug-in ?
* That is, is it read from the plugin.xml coming with identified plug-in ? * @param configurationElement_p * @param pluginId_p * @return */ public static boolean isDeclaredBy(IConfigurationElement configurationElement_p, String pluginId_p) { return (null != configurationElement_p) && (null != pluginId_p) && pluginId_p.equals(configurationElement_p.getContributor().getName()); } /** * Get the configuration element for specified parameters. * @param pluginId_p the identifier of the plugin. * @param extensionId_p the short identifier of the extension point. * @param idValue_p the value of the 'id' attribute declared into the extension point. * @return a {@link IConfigurationElement} instance or null if the specified extension is not found. */ public static IConfigurationElement getConfigurationElement(String pluginId_p, String extensionId_p, String idValue_p) { return getConfigurationElement(pluginId_p, extensionId_p, ATT_ID, idValue_p); } /** * Get the configuration element for specified parameters. * @param pluginId_p the identifier of the plugin. * @param extensionId_p the short identifier of the extension point. * @param attName_p the attribute name. * @param attValue_p the attribute value. * @return a {@link IConfigurationElement} instance or null if the specified extension is not found. */ public static IConfigurationElement getConfigurationElement(String pluginId_p, String extensionId_p, String attName_p, String attValue_p) { IConfigurationElement[] configElements = getConfigurationElements(pluginId_p, extensionId_p); IConfigurationElement result = null; for (int i = 0; i < configElements.length && (null == result); i++) { IConfigurationElement configElement = configElements[i]; // Check if attribute value is the expected one. if (hasValue(configElement, attName_p, attValue_p)) { result = configElement; } } return result; } /** * Is given configuration element containing an attribute named attName_p with value set to given one ? * @param configurationElement_p * @param attName_p * @param attValue_p * @return */ public static boolean hasValue(IConfigurationElement configurationElement_p, String attName_p, String attValue_p) { boolean result = false; // Preconditions. if ((null == configurationElement_p) || (null == attName_p) || (null == attValue_p)) { return result; } // Get attribute value for the configuration element. String attValue = configurationElement_p.getAttribute(attName_p); // Compare it with given one. result = attValue_p.equals(attValue); return result; } /** * Return the value of the "id" attribute for given configuration element. * @param configurationElement_p * @return null if given element is null, or has no attribute named "id". */ public static String getId(IConfigurationElement configurationElement_p) { String result = null; if (null != configurationElement_p) { result = configurationElement_p.getAttribute(ATT_ID); } return result; } /** * Create an executable extension for a specified plugin's id & extension point id, matching an attribute's value.
* The extension point must define an attribute 'class'. * @param pluginId_p the identifier of the plugin. * @param extensionPointId_p the simple identifier of the extension point. * @param attributeId_p the identifier of the attribute used into the comparison. If null, matching is not performed. * @param attributeValue_p the value of the attribute used for comparison matching. If null, matching is not performed. * @return an instance of the interface regarding the attribute 'class' * @see ATT_CLASS */ public static Object createExecutableExtension(String pluginId_p, String extensionPointId_p, String attributeId_p, String attributeValue_p) { Object object = null; IConfigurationElement[] configElements = getConfigurationElements(pluginId_p, extensionPointId_p); if (configElements.length == 0) { StringBuffer loggerMessage = new StringBuffer("ExtensionPointHelper.createExecutableExtension(..) _ "); //$NON-NLS-1$ loggerMessage.append("extensionPointId:"); //$NON-NLS-1$ loggerMessage.append(extensionPointId_p); loggerMessage.append(", must exist!"); //$NON-NLS-1$ _logger.error(loggerMessage.toString()); } else { boolean isMatchingImperative = false; // Test if matching is imperative if (null != attributeId_p && null != attributeValue_p) { isMatchingImperative = true; } // Loop over configuration until object is created. for (int i = 0; i < configElements.length && (null == object); i++) { IConfigurationElement configElement = configElements[i]; boolean isExecutableExtensionCreatable = true; if (isMatchingImperative) { // Perform matching on the attribute defined by an identifier String attributeValue = configElement.getAttribute(attributeId_p); // If different, do not instantiate the object. if (!attributeValue_p.equals(attributeValue)) { isExecutableExtensionCreatable = false; } } if (isExecutableExtensionCreatable) { object = createInstance(configElement, ATT_CLASS); } } } return object; } /** * Create an executable extension for given parameters.
* The extension point must define an attribute 'class'. * @param pluginId_p the plug-in that exposes the extension point. * @param extensionPointId_p the extension point containing an attribute 'class' to instantiate. * @param idValue_p the extension id value (attribute 'id') that matches the extension point estensionPointId_p.
* If null, comparison is not performed. * @return an Object instance if instantiation is successful; null otherwise. */ public static Object createExecutableExtension(String pluginId_p, String extensionPointId_p, String idValue_p) { return createExecutableExtension(pluginId_p, extensionPointId_p, ATT_ID, idValue_p); } /** * Create an object instance for specified parameters. * @param configurationElement_p a configuration element loaded from an extension point. * @param attributeName_p the attribute that hosts the java type. * @return an Object instance if instantiation is successful; null otherwise. */ public static Object createInstance(IConfigurationElement configurationElement_p, String attributeName_p) { Object typeInstance = null; try { typeInstance = configurationElement_p.createExecutableExtension(attributeName_p); } catch (CoreException exception_p) { StringBuffer loggerMessage = new StringBuffer("ExtensionPointHelper.createTypeInstance(..) _ "); //$NON-NLS-1$ loggerMessage.append("Unable to instantiate class type:"); //$NON-NLS-1$ loggerMessage.append(configurationElement_p.getAttribute(attributeName_p)); _logger.error(loggerMessage.toString(), exception_p); } return typeInstance; } /** * Return the fully qualified extension-point id from given parameters. * @param hostingPluginId_p the id of the plug-in that defines the extension-point. * @param extensionPointId_p the short id of the extension-point. * @return the fully qualified extension-point id : 'plug-in id.'extension-point id'. */ public static String getExtensionPointId(String hostingPluginId_p, String extensionPointId_p) { StringBuilder result = new StringBuilder(hostingPluginId_p); result.append(ICommonConstants.DOT_CHARACTER).append(extensionPointId_p); return result.toString(); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/FileHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 21354 Text-content-md5: 3832a2f92a0b14b795f054a47f7f2beb Text-content-sha1: be2fc7dd5e00ec85707db6ae74e673729a2023fa Content-length: 21399 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import org.apache.log4j.Logger; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.emf.common.util.URI; import org.eclipse.egf.common.activator.CommonActivator; import org.eclipse.egf.common.constant.ICommonConstants; /** * @author brocard */ public class FileHelper { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(FileHelper.class.getPackage().getName()); /** * Get file full url from relative one. * @param fileRelativePath_p File path relative to workspace.
* It must start with pluginId. It is also recommended that both plug-in id and plug-in project names are the same.
* As a convenience, the full path will refer to the plug-in id.
* Example : com.thalesgroup.mde.mdsofa/model/example.ecore is a path relative to the workspace that refers to the * com.thalesgroup.mde.mdsofa plug-in, having a model/example.ecore file in its project.
* In Eclipse resource system, such a path is considered as an absolute one against the workspace root.
* It's still referred to as a relative path, since the returned URL is absolute in the file system. * @return */ public static URL getFileFullUrl(String fileRelativePath_p) { // Get the URI for given relative path. return getFileFullUrl(getFileFullUri(fileRelativePath_p)); } /** * Get file full url from its full uri.
* See {@link #getFileFullUri(String)} method. * @param fileFullUri_p * @return */ public static URL getFileFullUrl(URI fileFullUri_p) { URL result = null; // Resolve url from returned uri. try { result = FileLocator.resolve(new URL(fileFullUri_p.toString())); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("FileHelper.getFileFullPath(..) _ "); //$NON-NLS-1$ loggerMessage.append("Unable to resolve the url for ").append(fileFullUri_p.toString()); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } return result; } /** * Get a file uri from relative one which is not resolved against the eclipse platform.
* The returned uri starts with either 'platform:/plug-in/' or 'platform:/resource/'. * @param fileRelativePath_p File path relative to workspace.
* It must start with pluginId. It is also recommended that both plug-in id and plug-in project names are the same.
* As a convenience, the full path will refer to the plug-in id.
* Example : com.thalesgroup.mde.mdsofa/model/example.ecore is a path relative to the workspace that refers to the * com.thalesgroup.mde.mdsofa plug-in, having a model/example.ecore file in its project. * @return an {@link URI} not resolved against the eclipse platform.
*/ public static URI getFileFullUri(String fileRelativePath_p) { URI fileUri = null; // Precondition. if (fileRelativePath_p == null) { return fileUri; } // Find plug-in model base from relative first segment. IPath path = new Path(fileRelativePath_p); IPluginModelBase modelBase = PluginRegistry.findModel(path.segment(0)); // Get underlying resource. IResource resource = modelBase != null ? modelBase.getUnderlyingResource() : null; if (resource != null) { // Resource found, the file is in the workspace. fileUri = URI.createPlatformResourceURI(fileRelativePath_p, true); } else { // Resource not found, the file is deployed elsewhere. fileUri = URI.createPlatformPluginURI(fileRelativePath_p, true); } return fileUri; } /** * Convert package name to a correct java folder path. * @param packageName_p * @return */ public static String convertPackageNameToFolderPath(String packageName_p) { return packageName_p != null ? packageName_p.replace(ICommonConstants.DOT_CHARACTER, ICommonConstants.SLASH_CHARACTER) : null; } /** * Read given input stream as an array of bytes. * @param inputStream_p * @return a not null array. */ public static byte[] readFile(InputStream inputStream_p) { byte[] data = null; try { data = new byte[inputStream_p.available()]; inputStream_p.read(data); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("FileHelper.readFile(..) _ "); //$NON-NLS-1$ loggerMessage.append("Failed to read the input stream ! "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString()); } finally { if (inputStream_p != null) { try { inputStream_p.close(); } catch (IOException exception_p) { StringBuilder loggerMessage = new StringBuilder("FileHelper.readFile(..) _ "); //$NON-NLS-1$ loggerMessage.append("Failed to close input stream ! "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } } // Ensure to return a not null array. return (null == data) ? new byte[0] : data; } /** * Read file as a string. * @param filePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return If an error occurred {@link ICommonConstants#EMPTY_STRING} is returned. */ public static String readFile(String filePath_p) { byte[] rawContent = readRawFile(filePath_p); return rawContent.length == 0 ? ICommonConstants.EMPTY_STRING : new String(rawContent); } /** * Get file as a stream. * @param filePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return If an error occurred null is returned. */ public static InputStream readFileAsStream(String filePath_p) { InputStream result = null; // Get input stream and copy its content to resulting string. URL fileURL = getFileFullUrl(filePath_p); try { result = fileURL.openStream(); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("FileHelper.readFileAsStream(..) _ "); //$NON-NLS-1$ loggerMessage.append("Failed to load ").append(filePath_p); //$NON-NLS-1$ __logger.warn(loggerMessage.toString()); } return result; } /** * Read file as an array of bytes. * @param filePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return a not null array. */ public static byte[] readRawFile(String filePath_p) { byte[] result = null; // Get stream from file. InputStream inputStream = readFileAsStream(filePath_p); // Ensure the input stream got from the file path is not null. if (inputStream != null) { result = readFile(inputStream); } return (null == result) ? new byte[0] : result; } /** * Copy given source file content in given target file. * @param sourceFileRelativePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @param targetFileRelativePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. */ public static void copyFile(String sourceFileRelativePath_p, String targetFileRelativePath_p) { writeFile(targetFileRelativePath_p, true, readRawFile(sourceFileRelativePath_p)); } /** * Write given string contents at specified path. * @param filePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @param ensureFolders_p Make sure all parent folders exist by creating all necessary ones. * @param contents_p Contents that should be written to pointed file. * @return */ public static boolean writeFile(String filePath_p, boolean ensureFolders_p, String contents_p) { return writeFile(filePath_p, ensureFolders_p, contents_p.getBytes()); } /** * Write given contents of bytes at specified path. * @param filePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @param ensureFolders_p Make sure all parent folders exist by creating all necessary ones. * @param contents_p Contents that should be written to pointed file. * @return */ public static boolean writeFile(String filePath_p, boolean ensureFolders_p, byte[] contents_p) { boolean result = false; FileChannel channel = null; try { // Get file full path from its relative one. String fileFullPath = getFileFullUrl(filePath_p).getFile(); // Should path be enforced ? if (ensureFolders_p) { ensurePathAvailability(fileFullPath); } // Make sure file is writable. boolean fileWritable = makeFileWritable(filePath_p); // Write content. if (fileWritable) { // Try and open the resulting file. channel = new FileOutputStream(fileFullPath).getChannel(); // Write contents. channel.write(ByteBuffer.wrap(contents_p)); result = true; } } catch (Exception exception_p) { result = false; StringBuilder loggerMessage = new StringBuilder("FileHelper.writeFile(..) _ "); //$NON-NLS-1$ loggerMessage.append("Failed to open channel in write mode for "); //$NON-NLS-1$ loggerMessage.append(filePath_p).append(" !"); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } finally { if (channel != null && channel.isOpen()) { try { // Close the channel. channel.close(); } catch (IOException exception_p) { result = false; StringBuilder loggerMessage = new StringBuilder("FileHelper.writeFile(..) _ "); //$NON-NLS-1$ loggerMessage.append("Failed to close opened channel in write mode ! "); //$NON-NLS-1$ loggerMessage.append(filePath_p).append(" may no longer be usable."); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } } return result; } /** * Rename file from source file relative path to destination relative path. * @param sourceFileRelativePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @param destinationFileRelativePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return */ public static boolean renameFile(String sourceFileRelativePath_p, String destinationFileRelativePath_p) { // Preconditions. if (sourceFileRelativePath_p == null || destinationFileRelativePath_p == null) { return false; } IFile sourceFile = getPlatformFile(sourceFileRelativePath_p); IPath destinationPath = getPlatformFile(destinationFileRelativePath_p).getFullPath(); return moveResource(sourceFile, destinationPath); } /** * Rename folder from source folder relative path to destination relative path. * @param sourceFolderRelativePath_p Folder path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @param destinationFolderRelativePath_p Folder path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return */ public static boolean renameFolder(String sourceFolderRelativePath_p, String destinationFolderRelativePath_p) { // Preconditions. if (sourceFolderRelativePath_p == null || destinationFolderRelativePath_p == null) { return false; } IFolder sourceFolder = getPlatformFolder(sourceFolderRelativePath_p); IPath destinationPath = getPlatformFolder(destinationFolderRelativePath_p).getFullPath(); return moveResource(sourceFolder, destinationPath); } /** * Move resource to given destination path. * @param resource_p * @param destinationPath_p * @return true if move occurred with no exception, false otherwise. */ public static boolean moveResource(IResource resource_p, IPath destinationPath_p) { boolean result = false; try { resource_p.move(destinationPath_p, true, new NullProgressMonitor()); result = true; } catch (Exception e_p) { StringBuilder loggerMessage = new StringBuilder("FileHelper.moveResource(..) _ "); //$NON-NLS-1$ loggerMessage.append("Could not move ").append(resource_p.getFullPath()); //$NON-NLS-1$ loggerMessage.append(" to ").append(destinationPath_p); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), e_p); } return result; } /** * Is given file relative path pointing to an existing file ? * @param fileRelativePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return */ public static boolean exists(String fileRelativePath_p) { IFile file = getPlatformFile(fileRelativePath_p); return file != null ? file.exists() : false; } /** * Make sure that given path is safe to use, ie ensure that all parent folders exist. * @param fileFullPath_p */ public static void ensurePathAvailability(String fileFullPath_p) { // Get rid of file extension and file name, for this has no meaning in the parent folders chain. IPath parentFolderPath = new Path(fileFullPath_p).removeFileExtension().removeLastSegments(1); // If it still makes sense to create a folder, go for it. if (parentFolderPath.isEmpty() == false) { File parentFolder = parentFolderPath.toFile(); // Create the chain of parent folders. parentFolder.mkdirs(); } } /** * Delete a workspace Resource. * Optionally delete its parent folder if they are empty. * Root folder is never deleted. * @param javaProject_p * @param resourcePath_p */ public static boolean deleteResource(IFolder root_p, IResource resource_p, boolean deleteParent_p) { if (resource_p == null) { return false; } // Delete found resource member if (FileHelper.deleteResource(resource_p) == false) { return false; } // Delete children container if they are empty if (root_p != null && deleteParent_p) { IContainer container = resource_p.getParent(); while (container.equals(root_p) == false) { try { IResource[] members = container.members(); if (members == null || members.length == 0) { if (FileHelper.deleteResource(container)) { container = container.getParent(); } else { break; } } else { break; } } catch(CoreException ce) { break; } } } return true; } /** * Delete given relative resource in the workspace. * @param fileRelativePath_p */ public static boolean deleteFile(String fileRelativePath_p) { if (fileRelativePath_p == null || fileRelativePath_p.trim().length() == 0) { return false; } return deleteResource(getPlatformFile(fileRelativePath_p)); } /** * Delete given relative folder in the workspace. * @param workspaceRelativePath_p * @return true if successfully deleted, false otherwise. */ public static boolean deleteFolder(String folderRelativePath_p) { if (folderRelativePath_p == null || folderRelativePath_p.trim().length() == 0) { return false; } return deleteResource(getPlatformFolder(folderRelativePath_p)); } /** * Delete given relative resource in the workspace. * @param resource_p */ public static boolean deleteResource(IResource resource_p) { if (resource_p == null || resource_p.exists() == false) { return false; } try { resource_p.delete(true, new NullProgressMonitor()); return true; } catch (CoreException exception_p) { StringBuilder loggerMessage = new StringBuilder("FileHelper.deleteFile(..) _ "); //$NON-NLS-1$ loggerMessage.append("Unable to delete file:").append(resource_p.getFullPath()); //$NON-NLS-1$ __logger.warn(loggerMessage.toString()); } return false; } /** * Get platform IResource as an {@link IResource} from its relative IPath. * @param path_p IPath relative to workspace.
* @return */ public static IResource getPlatformResource(IPath path_p) { // Precondition. if (path_p == null) { return null; } return ResourcesPlugin.getWorkspace().getRoot().findMember(path_p); } /** * Get platform file as an {@link IResource} from its relative path. * @param fileRelativePath_p File path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return */ public static IFile getPlatformFile(String fileRelativePath_p) { // Precondition. if (fileRelativePath_p == null) { return null; } return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileRelativePath_p)); } /** * Get platform folder as an {@link IResource} from its relative path. * @param folderRelativePath_p Folder path relative to the plug-in, plug-in id included.
* See {@link #getFileFullUrl(String)} documentation. * @return */ public static IFolder getPlatformFolder(String folderRelativePath_p) { // Precondition. if (folderRelativePath_p == null) { return null; } return ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(folderRelativePath_p)); } /** * Returns the file extension portion for given file path,
* or null if there is none.
*

* The file extension portion is defined as the string
* following the last period (".") character in the last segment.
* If there is no period in the last segment, the path has no
* file extension portion. If the last segment ends in a period,
* the file extension portion is the empty string.
*

* @param filePath_p * @return the file extension or null */ public static String getFileExtension(String filePath_p) { // Precondition. if (filePath_p == null) { return null; } return new Path(filePath_p).getFileExtension(); } /** * Make file writable.
* That is, make sure file is modifiable after this call.
* The user may be asked to take a decision if the file is held by the configuration management system.
* Nevertheless, if no UI is reachable, then the system is urged into making the file writable. * @param filePath_p File path relative to the plug-in, plug-in id included. * See {@link #getFileFullUrl(String)} documentation. * @return false if file could not be made writable or user denied rights to (in case of a configuration management). * true if it does not exist (then it is writable) or permission was granted (either by the system or by the user). */ public static boolean makeFileWritable(String filePath_p) { // Get user helper. IUserEnforcedHelper helper = CommonActivator.getDefault().getUserEnforcedHelper(); // Delegate to it. IStatus status = helper.makeFileWritable(getPlatformFile(filePath_p)); return status.isOK(); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/IDGeneratorHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1728 Text-content-md5: 1664f4d7dcab74f1ee6f0014b64b8510 Text-content-sha1: 6fe627885ebc3e8e48699fbc2f2fa9871d02833b Content-length: 1773 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import org.eclipse.egf.common.constant.ICommonConstants; /** * Helper to generate object unique id. * @author fournier */ public class IDGeneratorHelper { /** * Id suffix. */ private volatile static int __idSuffix = 0; /** * Generate unique id for given object. * @param object_p * @return the not null generated unique id. */ public static String generateUID(Object object_p) { String prefix = null; // If given object is not null, use it to create a prefix. if (object_p != null) { // Create prefix. prefix = object_p.getClass().getSimpleName(); } return generatePrefixUID(prefix); } /** * Generate unique id using given prefix. * @param prefix_p * @return the not null generated unique id. */ public static String generatePrefixUID(String prefix_p) { String prefix = prefix_p; if (prefix == null) { prefix = ICommonConstants.EMPTY_STRING; } return new StringBuilder(StringHelper.replaceNonWordCharactersWithDot(prefix)) .append(ICommonConstants.DOT_CHARACTER) .append(System.currentTimeMillis()) .append(ICommonConstants.DOT_CHARACTER) .append(__idSuffix++) .toString(); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/IUserEnforcedHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1844 Text-content-md5: f4c38c721e61a4dbdc5ee92ee1f69b81 Text-content-sha1: ac6f77f69861a63d3259e8f4f8a78da6356a04af Content-length: 1889 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IStatus; /** * User enforced helper.
* Handles user interactions when automatic ones are no longer sufficient.
* Allows the user to be warned about specific changes (sometimes through a user confirmation request). * @author Guillaume Brocard */ public interface IUserEnforcedHelper { /** * Make given file writable.
* Such an implementation deals with the UI issues spawn by the act of asking the user (if needed).
* That includes executing the enforcement in the UI thread. * @param file_p The file that should be made writable. * @return {@link Status#OK_STATUS} if file was made writable or doesn't exist. {@link Status#CANCEL_STATUS} otherwise. */ public IStatus makeFileWritable(IFile file_p); /** * Make given file writable.
* The caller is responsible for making sure it is executed in the UI thread.
* Otherwise an invalid thread access exception might be thrown by the platform. * @param file_p The file that should be made writable. * @param display_p Used to ask the user permission, if needed. * @return {@link Status#OK_STATUS} if file was made writable or doesn't exist. {@link Status#CANCEL_STATUS} otherwise. */ public IStatus makeFileWritable(IFile file_p, Object display_p); } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/JavaHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5076 Text-content-md5: 8d27834792f2090f5d1805feac6efd23 Text-content-sha1: f15af94a0eeca92ba08baf86cc32f9cedb7b1387 Content-length: 5121 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.common.helper; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaModelException; public class JavaHelper { /** * Locate in source folders and Delete a java class file. * Optionally delete its parent folder if they are empty. * Source folder is never deleted. * @param javaProject_p * @param resourcePath_p */ public static boolean deleteJavaClass(IJavaProject javaProject_p, IPath resourcePath_p, boolean deleteParent_p) { if (javaProject_p == null || resourcePath_p == null) { return false; } // Retrieve the java source folder who contain the resource path IFolder sourceFolder = JavaHelper.getJavaSourceFolder( javaProject_p, resourcePath_p ); if (sourceFolder == null) { return false; } // Locate the resource path member IResource resource = sourceFolder.findMember(resourcePath_p); if (resource == null || resource instanceof IFile == false) { return false; } // Delete found resource member if (FileHelper.deleteResource(resource) == false) { return false; } // Delete children container if they are empty if (deleteParent_p) { IContainer container = (IContainer) sourceFolder.findMember(resourcePath_p.removeLastSegments(1)); while (container.equals(sourceFolder) == false) { try { IResource[] members = container.members(); if (members == null || members.length == 0) { if (FileHelper.deleteResource(container)) { container = container.getParent(); } else { break; } } else { break; } } catch(CoreException ce) { break; } } } return true; } /** * Get a java source IFile within a IJavaProject.
* @param javaProject_p * @param name_p * @return null if it could not be found. */ public static IFile getJavaSourceFile(IJavaProject javaProject_p, IPath path_p) { if (javaProject_p == null || path_p == null) { return null; } // Lookup in source folders try { for (IClasspathEntry classpathEntry : javaProject_p.getRawClasspath()) { if (classpathEntry.getEntryKind() == IClasspathEntry.CPE_SOURCE) { IResource sourceFolder = ResourcesPlugin.getWorkspace().getRoot().findMember(classpathEntry.getPath()); if (sourceFolder == null || sourceFolder instanceof IFolder == false) { continue; } // Check if a resource exist in this folder IResource resource = ((IFolder) sourceFolder).findMember(path_p); if (resource != null && resource instanceof IFile) { // We got it, we return the current java source folder return (IFile) resource; } } } } catch (JavaModelException jme) { // Just ignore } return null; } /** * Get a java source folder who contain an IPath.
* @param javaProject_p * @param name_p * @return null if it could not be found. */ public static IFolder getJavaSourceFolder(IJavaProject javaProject_p, IPath path_p) { if (javaProject_p == null || path_p == null) { return null; } // Lookup in source folders try { for (IClasspathEntry classpathEntry : javaProject_p.getRawClasspath()) { if (classpathEntry.getEntryKind() == IClasspathEntry.CPE_SOURCE) { IResource sourceFolder = ResourcesPlugin.getWorkspace().getRoot().findMember(classpathEntry.getPath()); if (sourceFolder == null || sourceFolder instanceof IFolder == false) { continue; } // Check if a resource exist in this folder IResource resource = ((IFolder) sourceFolder).findMember(path_p); if (resource != null) { // We got it, we return the current java source folder return (IFolder) sourceFolder; } } } } catch (JavaModelException jme) { // Just ignore } return null; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/MathHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2953 Text-content-md5: 2b9cb65140b5ca04fe045ff51b717b8c Text-content-sha1: c6efcc7c2fc11588d7d8b66d23dcf1381be5b112 Content-length: 2998 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; /** * Extra mathematical functions. * * @author brocard */ public class MathHelper { public final static long SECOND = 1000; public final static long MINUTE = SECOND * 60; public final static long HOUR = MINUTE * 60; public final static long DAY = HOUR * 24; public static String formatAsDuration(long duration) { long temp = 0; StringBuilder formatted = new StringBuilder(); // Days temp = duration / DAY; if (temp > 0) { formatted .append(temp) .append(" day"); //$NON-NLS-1$ if (temp > 1) { formatted.append("s"); //$NON-NLS-1$ } duration = duration - (temp * DAY); } // Hours temp = duration / HOUR; if (temp > 0) { if (formatted.length() > 0) { formatted.append(" "); //$NON-NLS-1$ } formatted .append(temp) .append(" hr"); //$NON-NLS-1$ if (temp > 1) { formatted.append("s"); //$NON-NLS-1$ } duration = duration - (temp * HOUR); } // Minutes temp = duration / MINUTE; if (temp > 0) { if (formatted.length() > 0) { formatted.append(" "); //$NON-NLS-1$ } formatted .append(temp) .append(" min"); //$NON-NLS-1$ if (temp > 1) { formatted.append("s"); //$NON-NLS-1$ } duration = duration - (temp * MINUTE); } // Seconds if (duration >= SECOND) { temp = duration / SECOND; if (temp > 0) { if (formatted.length() > 0) { formatted.append(" "); //$NON-NLS-1$ } formatted .append(temp) .append(" sec"); //$NON-NLS-1$ if (temp > 1) { formatted.append("s"); //$NON-NLS-1$ } duration = duration - (temp * SECOND); } } // Millisecond if (duration > 0) { if (formatted.length() > 0) { formatted.append(" "); //$NON-NLS-1$ } formatted .append(duration) .append(" ms"); //$NON-NLS-1$ } return formatted.toString(); } /** * Multiply given integer and float value, and return result as an int. * @param sourceValue_p * @param multiplier_p * @return */ public static int multiply(int sourceValue_p, float multiplier_p) { return (int) (sourceValue_p * multiplier_p); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/MiscHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 999 Text-content-md5: dde0efae26f3b16444e48ad71575cd94 Text-content-sha1: 83e4d178507817c63657b87bbe694d453cf8c52e Content-length: 1044 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import java.util.ArrayList; import java.util.List; /** * Miscellaneous helper. * @author Guillaume Brocard */ public class MiscHelper { /** * Returns a list backed by the specified array. * @param elements_p the array by which the list will be backed. * @return a not null list. */ public static List asList(T[] elements_p) { ArrayList result = new ArrayList(elements_p.length); for (T element : elements_p) { result.add(element); } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/PatternHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3656 Text-content-md5: 3cf472c62aa2cafb5b2703e47b72b3b3 Text-content-sha1: 2d751721f67158715e58b15e64b8ab0985f024a6 Content-length: 3701 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import org.eclipse.core.runtime.Path; import org.eclipse.egf.common.constant.IPatternConstants; import org.eclipse.egf.common.misc.Couple; /** * Helper for pattern handling. * @author Guillaume Brocard */ public class PatternHelper { /** * Pattern id prefix. */ private static final String PATTERN_ID_PREFIX = "Pattern"; //$NON-NLS-1$ /** * Get library/pattern full id from parent library full id and pattern/library id local to this library.
* @param parentLibraryFullId_p The parent library full id.
For instance root/library1/libraryEmf/subLibrary1, or null if none. * @param patternLocalId_p The pattern or library id local to the parent full id.
For instance patternClass, or library2/library3. * @return null if local id is null, local id if parent library full id is null.
For instance root/library1/libraryEmf/subLibrary1/patternClass, or root/library1/libraryEmf/subLibrary1/library2/library3. */ public static String getFullId(String parentLibraryFullId_p, String localId_p) { String result = null; if (localId_p == null) { return result; } if (parentLibraryFullId_p != null) { result = new StringBuilder(parentLibraryFullId_p) .append(IPatternConstants.LIBRARY_PATTERN_ID_SEPARATOR) .append(localId_p) .toString(); } else { result = localId_p; } return result; } /** * Create a new pattern unique id. * @return */ public static String generatePatternUID() { return IDGeneratorHelper.generatePrefixUID(PATTERN_ID_PREFIX); } /** * Get parent library id and local pattern/library id from given full id. * @param fullId_p a pattern or library full id.
For instance root/library1/libraryEmf/subLibrary1 or root/library1/libraryEmf/subLibrary1/patternClass. * @return null if given id is null.
* For instance Couple(root/library1/libraryEmf, subLibrary1) or Couple(root/library1/libraryEmf/subLibrary1, patternClass). */ public static Couple deresolveId(String fullId_p) { if (fullId_p == null) { return null; } String parentLibraryFullId = StringHelper.substringBefore( IPatternConstants.LIBRARY_PATTERN_ID_SEPARATOR, fullId_p ); String localId = StringHelper.substringAfter( IPatternConstants.LIBRARY_PATTERN_ID_SEPARATOR, fullId_p ); return new Couple(parentLibraryFullId, localId); } /** * Get root library id from given full id. * @param fullId_p a pattern or library full id.
For instance root/library1/libraryEmf/subLibrary1 or root/library1/libraryEmf/subLibrary1/patternClass. * @return null if given id is null.
* For instance root in case of given entry root/library1/libraryEmf/subLibrary1 or root/library1/libraryEmf/subLibrary1/patternClass. */ public static String getRootLibraryId(String fullId_p) { if (fullId_p == null) { return null; } return new Path(fullId_p).segment(0); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/PatternLibrarySequenceHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2886 Text-content-md5: 42b75a3490a12a13a03c02f52e2f64f8 Text-content-sha1: 98561f26a712f782c370eb30193fd752d38e12a5 Content-length: 2931 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.helper; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.eclipse.egf.common.constant.ICommonConstants; /** * @author Guillaume Brocard */ public class PatternLibrarySequenceHelper { /** * Pattern library sequence separators. */ public static final String SEQUENCE_SEPARATORS = ICommonConstants.EMPTY_STRING + ICommonConstants.WHITE_SPACE_CHARACTER + ICommonConstants.COMMA_CHARACTER; /** * Get full sequence from composing ids. * @param ids_p * @return empty string if provided list is null or empty. */ public static String getFullSequence(List ids_p) { if ((null == ids_p) || ids_p.isEmpty()) { return ICommonConstants.EMPTY_STRING; } StringBuilder result = new StringBuilder(); for (Iterator idIterator = ids_p.iterator(); idIterator.hasNext();) { String id = idIterator.next(); result.append(id); if (idIterator.hasNext()) { result.append(SEQUENCE_SEPARATORS); } } return result.toString(); } /** * Extract sequence ids from sequence serialized form (also called a full sequence). * @param fullSequence_p * @return Empty list if given sequence is null or a singleton list with given full sequence if it is not a valid one. */ public static List extractSequenceIds(String fullSequence_p) { if (null == fullSequence_p) { return Collections.emptyList(); } return MiscHelper.asList(StringHelper.getTokens(fullSequence_p, SEQUENCE_SEPARATORS)); } /** * Remove all given id occurrences in given sequence. * @param fullSequence_p * @param id_p * @return Given sequence if it does not contain any id, or id could not be found, or it is not a valid sequence. */ public static String removeIdFromSequence(String fullSequence_p, String id_p) { // Extract ids. List ids = extractSequenceIds(fullSequence_p); // Precondition. if (ids.isEmpty()) { return fullSequence_p; } // Remove all occurrences of id in the sequence. while (ids.contains(id_p)) { ids.remove(id_p); } // Return reconstructed sequence. return getFullSequence(ids); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/ProjectHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 18671 Text-content-md5: 56453b8a1c6dfbf790046aee2c9333c8 Text-content-sha1: e91d8499d16ea698b74ee2975c11449edc32e527 Content-length: 18716 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.generator.IEgfGeneratorConstants; import org.eclipse.emf.codegen.ecore.Generator; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; /** * Workspace projects helper. * @author brocard */ public class ProjectHelper { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(ProjectHelper.class.getPackage().getName()); /** * Required plug-ins class path entry path identifier. */ protected static final String CLASS_PATH_ENTRY_REQUIRED_PLUGINS_PATH_ID = "requiredPlugins"; //$NON-NLS-1$ /** * Project existence status after check.
* The project already exists (including default structure), or it has just been created, or creation process failed.
* Internal purpose only. */ public enum ProjectExistenceStatus { ALREADY_EXISTS, CREATED, CREATION_FAILED } /** * Get project from its name.
* It is assumed that this project name refers to a plug-in.
* If not, the method ResourcesPlugin.getWorkspace().getRoot().getProject(projectName_p) is invoked as result. * @param projectName_p A project name that points to a plug-in in the workspace. * @return */ public static IProject getProject(String projectName_p) { // Precondition. if (projectName_p == null) { return null; } // Get model base from project name. IPluginModelBase modelBase = PluginRegistry.findModel(projectName_p); // Precondition. // Warning : fix for the Eclipse platform bug that consists in having PDE in a weird state // regarding in-development plug-ins from launching platform as deployed ones in current one. if (modelBase == null) { return ResourcesPlugin.getWorkspace().getRoot().getProject(projectName_p); } return getProject(modelBase); } /** * Get the IProject for specified plug-in model. * @param pluginModelBase_p * @return null if the plug-in is not in the workspace. */ public static IProject getProject(IPluginModelBase pluginModelBase_p) { // Precondition. if (pluginModelBase_p == null) { return null; } IResource underlyingResource = pluginModelBase_p.getUnderlyingResource(); if (underlyingResource != null) { // Retrieve project from the model. return underlyingResource.getProject(); } return null; } /** * Can identified project element be converted to a factory component ? * @param elementId_p The chosen project element id. Can either be the project name or the plug-in id. * @return false if no project can be found, or it is not a plug-in, or its id does not match its name. true if it can be converted * to a FC. */ public static boolean canBeConvertedToFC(String elementId_p) { boolean result = false; IProject project = getProject(elementId_p); if (project == null) { StringBuilder loggerMessage = new StringBuilder("ProjectHelper.canBeConvertedToFC(..) _ "); //$NON-NLS-1$ loggerMessage.append("Unable to locate a project with element id ").append(elementId_p); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } else { IPluginModelBase model = PluginRegistry.findModel(project); if (model != null) { String modelId = model.getPluginBase().getId(); result = project.getName().equals(modelId); if (result == false) { StringBuilder loggerMessage = new StringBuilder("ProjectHelper.canBeConvertedToFC(..) _ "); //$NON-NLS-1$ loggerMessage.append("To convert an exisiting plug-in into a FC, its related project name must be equal to the plug-in id."); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } } else { StringBuilder loggerMessage = new StringBuilder("ProjectHelper.canBeConvertedToFC(..) _ "); //$NON-NLS-1$ loggerMessage.append("Element ").append(elementId_p).append(" is not a valid plug-in project."); //$NON-NLS-1$ //$NON-NLS-2$ loggerMessage.append("Only plug-in projects can be converted to FCs."); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } } return result; } /** * Get java project in the workspace from its project name. * @param projectName_p It is assumed given project name points to a plug-in project. If not, use {@link #getJavaProject(IProject)} instead. * @return null if it could not be found. Either the given name is null, or there is no java project in the workspace with this name (maybe then the project * is deployed instead). */ public static IJavaProject getJavaProject(String projectName_p) { return getJavaProject(getProject(projectName_p)); } /** * Get java project from workspace project. * @param project_p * @return null if it could not be found. The given project is not a Java one, or JDT has not been initialized correctly. */ public static IJavaProject getJavaProject(IProject project_p) { IJavaProject result = null; // Precondition. if (project_p == null) { return result; } // Get java project from project. IJavaElement javaElement = (IJavaElement) ((IAdaptable) project_p).getAdapter(IJavaElement.class); // Only JDT UI initializes adapter mechanism. // If this method is called from a non UI application (e.g antRunner) uses the JavaCore API instead. if (javaElement == null) { javaElement = JavaCore.create(project_p); } result = javaElement.getJavaProject(); return result; } /** * Create a new class loader for a java project, son of specified parent class loader. * @param javaProject_p * @param parentClassLoader_p * @return null if one of the parameter is null or no extra dependency was found in the java project * @throws Exception */ public static ClassLoader getClassLoaderFor(IJavaProject javaProject_p, ClassLoader parentClassLoader_p) throws Exception { URLClassLoader result = null; // Preconditions. if (javaProject_p == null || parentClassLoader_p == null) { return result; } // Create the class loader. URL[] classPathEntries = getProjectDependencies(javaProject_p); // No dependency available, it is likely nothing is to be done. // Should an error have happened, it would have been thrown as an exception. if (classPathEntries.length == 0) { return result; } // Use pattern plugin classloader as parent one. result = new URLClassLoader(classPathEntries, parentClassLoader_p); return result; } /** * Get given java project dependencies in terms of compilation.
* The resulting array can be used to feed a specific class loader. * @param javaProject_p * @return An array of URL.
* Not null, but possibly empty. * @throws Exception */ protected static URL[] getProjectDependencies(IJavaProject javaProject_p) throws Exception { // Retrieve its dependencies. IClasspathEntry[] classpathEntries = javaProject_p.getResolvedClasspath(true); List classpathUrls = new ArrayList(classpathEntries.length); // Create urls out of them. for (IClasspathEntry classpathEntry : classpathEntries) { IPath urlPath = classpathEntry.getPath(); switch (classpathEntry.getEntryKind()) { // For source project or projects, look for the output folder... case IClasspathEntry.CPE_SOURCE: case IClasspathEntry.CPE_PROJECT: IJavaProject localProject = ProjectHelper.getJavaProject(urlPath.segment(0)); urlPath = localProject.getProject().getLocation().append(localProject.getOutputLocation().removeFirstSegments(1)); break; // For libraries and installed plug-ins, simply retain the class-path entry path. default: break; } classpathUrls.add(urlPath.toFile().toURI().toURL()); } return classpathUrls.toArray(new URL[classpathUrls.size()]); } /** * Refresh given project in the workspace. * @param project_p * @param monitor_p */ public static void refreshProject(IProject project_p, IProgressMonitor monitor_p) { refreshProject(project_p, IResource.DEPTH_INFINITE, monitor_p); } /** * Refresh a project in the workspace. * @param projectToRefresh_p * @param depth_p * @param monitor_p * @see {@link IResource#refreshLocal(int, IProgressMonitor)} */ public static void refreshProject(IProject projectToRefresh_p, int depth_p, IProgressMonitor monitor_p) { try { projectToRefresh_p.refreshLocal(depth_p, monitor_p); } catch (CoreException exception_p) { StringBuilder loggerMessage = new StringBuilder("ProjectHelper.refreshProject(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } /** * Create a source folder in given project. * @param sourceFolderName_p the name of the source folder. * @param project_p the hosting project. * @param monitor_p progress monitor. * @return true means the creation is successful. */ public static boolean createSourceFolder(String sourceFolderName_p, IProject project_p, IProgressMonitor monitor_p) { boolean successful = false; // Preconditions if (sourceFolderName_p == null || project_p == null || monitor_p == null) { return successful; } try { // Get the related java project. IJavaProject javaProject = JavaCore.create(project_p); // Get all source entries. IClasspathEntry[] sourceEntries = javaProject.getRawClasspath(); // Add a generated source folder. IPath generatedSourceFolderPath = project_p.getFullPath().append(sourceFolderName_p); createFolder(sourceFolderName_p, project_p, new SubProgressMonitor(monitor_p, 1)); // Create a new source entry for the 'generated' source folder. IClasspathEntry generatedSourceEntry = JavaCore.newSourceEntry(generatedSourceFolderPath); IClasspathEntry[] newEntries = new IClasspathEntry[sourceEntries.length + 1]; // Copy the 'src' source entry. newEntries[0] = sourceEntries[0]; // Add the 'generated' entry. newEntries[1] = generatedSourceEntry; // Copy the remaining entries. System.arraycopy(sourceEntries, 1, newEntries, 2, sourceEntries.length - 1); // Set the new entries on the java project. javaProject.setRawClasspath(newEntries, new SubProgressMonitor(monitor_p, 1)); successful = true; } catch (Exception exception_p) { successful = false; StringBuilder loggerMessage = new StringBuilder("ProjectHelper.createSourceFolder(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } return successful; } /** * Create a folder with given name in given project. * @param folderName_p * @param project_p * @param monitor_p * @return null if creation failed. */ public static IFolder createFolder(String folderName_p, IProject project_p, IProgressMonitor monitor_p) { IFolder folder = project_p.getFolder(folderName_p); // Create the physical resource. if (folder.exists() == false) { // Get parent path. IPath parentPath = new Path(folderName_p); if (parentPath.segmentCount() > 1) { parentPath = parentPath.removeLastSegments(1); // Make sure parent exists first. createFolder(parentPath.toString(), project_p, monitor_p); } // Then try and create given folder. try { folder.create(true, true, monitor_p); } catch (CoreException exception_p) { folder = null; StringBuilder loggerMessage = new StringBuilder("ProjectHelper.createFolder(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } return folder; } /** * Make sure named project exists.
* If not try and create a new one with given name. * @param projectName_p The expected project name. * @param cleanProject_p true to clean project structure after creation, false otherwise. * @param projectType_p {@link Generator#EMF_EMPTY_PROJECT_STYLE} see other values. * @return {@link ProjectExistenceStatus} value. */ private static ProjectExistenceStatus ensureProjectExists(String projectName_p, boolean cleanProject_p, int projectType_p) { ProjectExistenceStatus result = ProjectExistenceStatus.CREATION_FAILED; // Precondition. if (projectName_p == null) { return result; } IFile file = FileHelper.getPlatformFile(projectName_p + IEgfGeneratorConstants.PROJECT_ROOT_FILE); // Project already exists, stop here. if (file.exists()) { return ProjectExistenceStatus.ALREADY_EXISTS; } // Else, try and create an EMF project. IPath projectLocationPath = new Path(ICommonConstants.SLASH_CHARACTER + projectName_p); IProject resultingProject = Generator.createEMFProject( projectLocationPath.append(ICommonConstants.SLASH_CHARACTER + IEgfGeneratorConstants.SRC_FOLDER), null, new ArrayList(0), new NullProgressMonitor(), projectType_p, Collections.EMPTY_LIST ); if (resultingProject != null && resultingProject.exists()) { result = ProjectExistenceStatus.CREATED; // If project should be cleaned, do it. if (cleanProject_p) { cleanProjectStructure(resultingProject); } } else { result = ProjectExistenceStatus.CREATION_FAILED; } return result; } /** * Clean newly created project structure.
* Remove plug-in dependencies class path container from given project (if applicable).
* Also set nature back to Java one. * @param project_p */ private static void cleanProjectStructure(IProject project_p) { IJavaProject javaProject = getJavaProject(project_p); // Precondition. if (javaProject == null) { return; } // Restore Java nature only. String natureIds[] = new String[] { JavaCore.NATURE_ID }; try { IProjectDescription description = project_p.getDescription(); description.setNatureIds(natureIds); project_p.setDescription(description, new NullProgressMonitor()); } catch (CoreException exception_p1) { StringBuilder loggerMessage = new StringBuilder("ProjectHelper.cleanProjectStructure(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p1); } // Get raw class path. IClasspathEntry[] rawClasspath = null; try { rawClasspath = javaProject.getRawClasspath(); } catch (JavaModelException exception_p) { StringBuilder loggerMessage = new StringBuilder("ProjectHelper.cleanProjectStructure(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } // Iterate over class path elements. if (rawClasspath != null && rawClasspath.length != 0) { List newRawClasspath = new ArrayList(rawClasspath.length); for (IClasspathEntry classpathEntry : rawClasspath) { if (classpathEntry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) { // Do not retain required plug-ins container. IPath path = classpathEntry.getPath(); if (CLASS_PATH_ENTRY_REQUIRED_PLUGINS_PATH_ID.equals(path.getFileExtension()) == false) { newRawClasspath.add(classpathEntry); } } else { newRawClasspath.add(classpathEntry); } } // Set new raw class path. try { javaProject.setRawClasspath(newRawClasspath.toArray(new IClasspathEntry[newRawClasspath.size()]), new NullProgressMonitor()); } catch (JavaModelException exception_p) { StringBuilder loggerMessage = new StringBuilder("ProjectHelper.cleanProjectStructure(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } } /** * Make sure named plug-in project exists.
* If not try and create a new one with given name. * @param projectName_p The expected project name. * @return */ public static ProjectExistenceStatus ensurePluginProjectExists(String projectName_p) { return ensureProjectExists(projectName_p, false, Generator.EMF_PLUGIN_PROJECT_STYLE); } /** * Make sure named project exists.
* If not try and create a new one with given name. * @param projectName_p The expected project name. * @return */ public static ProjectExistenceStatus ensureProjectExists(String projectName_p) { return ensureProjectExists(projectName_p, true, Generator.EMF_EMPTY_PROJECT_STYLE); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/StatusHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3592 Text-content-md5: cb234a49d81a5dc77fd4cf6bcaf902e8 Text-content-sha1: 593c71c81d13bf4fe31e9fbdc46b0a86018d7b16 Content-length: 3637 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.common.helper; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Status; import org.eclipse.egf.common.activator.CommonActivator; public class StatusHelper { /** * * Utility method for creating status. */ protected static IStatus newStatus(String pluginID, IStatus[] stati, String message, Throwable exception) { if (message == null || message.trim().length() == 0) { throw new IllegalArgumentException(); } return new MultiStatus( pluginID != null && pluginID.trim().length() > 0 ? pluginID : CommonActivator.getDefault().getPluginID(), IStatus.ERROR, stati, message, exception ); } /** * * Utility method for creating status. */ public static IStatus newStatus(String pluginID, int severity, String message, Throwable exception) { String statusMessage = message; if (message == null || message.trim().length() == 0) { if (exception == null) { throw new IllegalArgumentException(); } else if (exception.getMessage() == null) { statusMessage = exception.toString(); } else { statusMessage = exception.getMessage(); } } return new Status( severity, pluginID != null && pluginID.trim().length() > 0 ? pluginID : CommonActivator.getDefault().getPluginID(), severity, statusMessage, exception ); } /** * * Utility method for creating status. */ public static IStatus newStatus(String pluginID, List children, String message, Throwable exception) { List flatStatusCollection = new ArrayList(); Iterator iter = children.iterator(); while (iter.hasNext()) { IStatus currentStatus = iter.next(); Iterator childrenIter = flatten(currentStatus).iterator(); while (childrenIter.hasNext()) { flatStatusCollection.add(childrenIter.next()); } } IStatus[] stati = new IStatus [flatStatusCollection.size()]; flatStatusCollection.toArray(stati); return newStatus(pluginID, stati, message, exception); } /** * Answer a flat collection of the passed status and its recursive children */ protected static List flatten(IStatus aStatus) { List result = new ArrayList(); if (aStatus.isMultiStatus()) { IStatus[] children = aStatus.getChildren(); for (int i = 0; i < children.length; i++) { IStatus currentChild = children[i]; if (currentChild.isMultiStatus()) { Iterator childStatiiEnum = flatten(currentChild).iterator(); while (childStatiiEnum.hasNext()) { result.add(childStatiiEnum.next()); } } else { result.add(currentChild); } } } else { result.add(aStatus); } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/helper/StringHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 8756 Text-content-md5: cf4241a674ffe8c68e37fffe7e703f5a Text-content-sha1: c4c8ead6746b2f2c57d1c15bcfce5e7a0ed3c3e4 Content-length: 8801 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.helper; import java.text.MessageFormat; import java.util.StringTokenizer; import org.eclipse.egf.common.constant.ICommonConstants; /** * String helper. * @author brocard */ public class StringHelper { /** * Non word characters regular expression. */ private static final String REGEXP_NON_WORD_CHARACTERS = "[^a-zA-Z0-9]"; //$NON-NLS-1$ /** * Format given message with given arguments.
* See {@link MessageFormat} for the acceptable form of the given message and the arguments. * @param message_p * @param arguments_p * @return */ public static String formatMessage(String message_p, Object[] arguments_p) { MessageFormat formatter = new MessageFormat(message_p); return formatter.format(arguments_p); } /** * Convert first character of given string to lower case. * @param source_p * @return new String with first character converted. */ public static String toLowerFirst(String source_p) { StringBuffer result = new StringBuffer(source_p); String firstCharacter = source_p.substring(0, 1).toLowerCase(); result.setCharAt(0, firstCharacter.charAt(0)); return result.toString(); } /** * Convert first character of given string to upper case. * @param source_p * @return new String with first character converted. */ public static String toUpperFirst(String source_p) { StringBuffer result = new StringBuffer(source_p); String firstCharacter = source_p.substring(0, 1).toUpperCase(); result.setCharAt(0, firstCharacter.charAt(0)); return result.toString(); } /** * Get tokens from given source string using given separators. * @param source_p * @param separators_p a string of separators to use while searching for tokens. * @return null if source string is null, source string if no token could be found.
* Otherwise return tokenized source string, separators excluded. */ public static String[] getTokens(String source_p, String separators_p) { String[] result = null; // Preconditions. // Do nothing if given source string is null. if (source_p == null || source_p.trim().length() == 0) { return result; } // Return source string if no separator was provided. if (separators_p == null || separators_p.trim().length() == 0) { result = new String[] { source_p }; return result; } // Create a new tokenizer. StringTokenizer tokenizer = new StringTokenizer(source_p, separators_p); // Add its result to the returned array. int tokensCount = tokenizer.countTokens(); if (tokensCount > 0) { result = new String[tokensCount]; for (int i = 0; i < tokensCount; i++) { result[i] = tokenizer.nextToken(); } } else { // Could not find any token, return source string. result = new String[] { source_p }; } return result; } /** * Get the substring from given source string before given separator. * @param separator_p * @param source_p * @return null if source string is null, source string itself if no substring could be found.
* Otherwise return the substring from source string from the beginning to the separator position (separator excluded). */ public static String substringBefore(char separator_p, String source_p) { String result = null; // Precondition. if (source_p == null || source_p.trim().length() == 0) { return result; } // Search for the last index of given separator. int separatorPosition = source_p.lastIndexOf(separator_p); if (separatorPosition >= 0) { result = source_p.substring(0, separatorPosition); } else { // No separator found, return the source itself. result = source_p; } return result; } /** * Get the substring from given source string after given separator. * @param separator_p * @param source_p * @return null if source string is null, source string itself if no substring could be found.
* Otherwise return the substring from the separator position (separator excluded) to the end of source string. */ public static String substringAfter(char separator_p, String source_p) { String result = null; // Precondition. if (source_p == null || source_p.trim().length() == 0) { return result; } // Search for the last index of given separator. int separatorPosition = source_p.lastIndexOf(separator_p); if (separatorPosition >= 0) { result = source_p.substring(separatorPosition + 1); // separator excluded. } else { // No separator found, return the source itself. result = source_p; } return result; } /** * Create http prefixed uri from given one. * @param relativeUri_p * @return */ public static String createHttpUri(String relativeUri_p) { return new StringBuilder(ICommonConstants.HTTP_PREFIX).append(relativeUri_p).toString(); } /** * Returns a new string that is a substring of this string for specified parameters.
* The substring begins at the index of beginningDelimiter_p and extends to the character at index of endingDelimiter_p.
* Delimiters can be included in the returned substring depending on includeDelimiters_p value. * @param beginningDelimiter_p the delimiter used as beginning delimiter. * @param endingDelimiter_p the delimiter used as ending delimiter. * @param content_p the source that the substring is extracted from. * @param includeDelimiters_p true means the delimiters are included in the returned string. * @return null if no substring found for given delimiters. */ public static String substring(String beginningDelimiter_p, String endingDelimiter_p, String content_p, boolean includeDelimiters_p) { String result = null; // Get the index of beginning delimiter. int indexBeginningDelimiter = content_p.indexOf(beginningDelimiter_p); // If the beginning delimiter is found, locates the index of ending delimiter. if (indexBeginningDelimiter >= 0) { int indexEndingDelimiter = content_p.indexOf(endingDelimiter_p, indexBeginningDelimiter); // If the ending delimiter is found, extract the substring. if (indexEndingDelimiter >= 0) { if (includeDelimiters_p) { // Extract the substring including the delimiters, result = content_p.substring(indexBeginningDelimiter, indexEndingDelimiter + endingDelimiter_p.length()); } else { // Extract the substring contained between delimiters result = content_p.substring(indexBeginningDelimiter + beginningDelimiter_p.length(), indexEndingDelimiter); } } } return result; } /** * Replace non word characters with dot characters * @param originalString_p * @return Each non-conforming character in given string is replaced by a dot character. */ public static String replaceNonWordCharactersWithDot(String originalString_p) { return replaceNonWordCharacters( originalString_p, String.valueOf(ICommonConstants.DOT_CHARACTER) ); } /** * Replace non word characters with underscore characters * @param originalString_p * @return Each non-conforming character in given string is replaced by an underscore character. */ public static String replaceNonWordCharactersWithUnderscore(String originalString_p) { return replaceNonWordCharacters( originalString_p, String.valueOf(ICommonConstants.UNDERSCORE_CHARACTER) ); } /** * Replace non word characters with a replacement String * @param originalString_p * @param replacementString_p each non word character is replaced by given string. * @return */ public static String replaceNonWordCharacters(String originalString_p, String replacementString_p) { return originalString_p.replaceAll( REGEXP_NON_WORD_CHARACTERS, replacementString_p != null ? replacementString_p : ICommonConstants.EMPTY_STRING ); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/internal/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/internal/generator/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/internal/generator/emf/CustomizedGenerator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2274 Text-content-md5: ffe08f24891887091dc31362e5b161ef Text-content-sha1: 15da92b2bf264880b1ac52036c2a0d6c22bc02c7 Content-length: 2319 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.internal.generator.emf; import java.util.ArrayList; import java.util.Collection; import org.eclipse.emf.codegen.ecore.generator.Generator; import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory; /** * Customized EMF generator. This generator only uses the provided generator adapter factory if any.
* If not provided, extension-point mechanism is used to retrieve all generator adapter factories. * @author Guillaume Brocard */ public class CustomizedGenerator extends Generator { /** * Java generator adapter factory. */ private GeneratorAdapterFactory _generatorAdapterFactory; /** * Constructor. * @param generatorAdapterFactory_p customized generator that overrides EMF default one. */ public CustomizedGenerator(GeneratorAdapterFactory generatorAdapterFactory_p) { _generatorAdapterFactory = generatorAdapterFactory_p; if (null != _generatorAdapterFactory) { _generatorAdapterFactory.setGenerator(this); } } /** * @see org.eclipse.emf.codegen.ecore.generator.Generator#getAdapterFactories(java.lang.Object) */ @Override protected Collection getAdapterFactories(Object object_p) { Collection result = null; // If a customized generator is provided, use this one instead. if (null != _generatorAdapterFactory) { result = new ArrayList(1); result.add(_generatorAdapterFactory); } else { // None is provided, let's use the ones returned by EMF. result = super.getAdapterFactories(object_p); } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/internal/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/internal/helper/DefaultUserHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1372 Text-content-md5: d03ee399035559a366f9631fdf6da60e Text-content-sha1: 73691753e4505d88c732e80f818e3d4fc1c11ae5 Content-length: 1417 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.internal.helper; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.egf.common.helper.IUserEnforcedHelper; /** * A default {@link IUserEnforcedHelper} implementation.
* Leaves files untouched, considering it's always possible to write them. * @author Guillaume Brocard */ public class DefaultUserHelper implements IUserEnforcedHelper { /** * @see org.eclipse.egf.common.helper.IUserEnforcedHelper#makeFileWritable(org.eclipse.core.resources.IFile) */ public IStatus makeFileWritable(IFile file_p) { return Status.OK_STATUS; } /** * @see org.eclipse.egf.common.helper.IUserEnforcedHelper#makeFileWritable(org.eclipse.core.resources.IFile, java.lang.Object) */ public IStatus makeFileWritable(IFile file_p, Object display_p) { return Status.OK_STATUS; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/listener Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/listener/AbstractProjectListener.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4531 Text-content-md5: bdf06b10495264564896d401f960c6f6 Text-content-sha1: 9e2414df0d2721fdc802a12ca225ca96de3ea62b Content-length: 4576 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.listener; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IWorkspaceRoot; /** * Base class to implement a listener which is notified when projects are added, changed or removed from the workspace. * @author Guillaume Brocard */ public abstract class AbstractProjectListener implements IResourceChangeListener { /** * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent) */ public void resourceChanged(IResourceChangeEvent event_p) { IResourceDelta resourceDelta = event_p.getDelta(); // Precondition. if (null == resourceDelta) { return; } IResource resource = resourceDelta.getResource(); // Select only changes performed on the workspace. if ((IResourceDelta.CHANGED == resourceDelta.getKind()) && (resource instanceof IWorkspaceRoot)) { IResourceDelta[] childrenResourceDeltas = resourceDelta.getAffectedChildren(); // Loop over modified resources within the workspace. for (IResourceDelta currentChildResourceDelta : childrenResourceDeltas) { // Get the modification kind. int kind = currentChildResourceDelta.getKind(); // Get the modified resource. IResource childResource = currentChildResourceDelta.getResource(); // Get from it an IProject. IProject project = getProject(childResource); // If it is a project, interesting in removed or changed operation. if (null != project) { switch (kind) { case IResourceDelta.ADDED: handleProjectAdded(project, currentChildResourceDelta); break; case IResourceDelta.CHANGED: // A change can be a close event. int flags = currentChildResourceDelta.getFlags(); boolean isProjectOpened = project.isOpen(); // Detailed flag must be the OPEN event. if ((IResourceDelta.OPEN == flags)) { if (isProjectOpened) { handleProjectAdded(project, currentChildResourceDelta); } else { handleProjectClosed(project, currentChildResourceDelta); } } else { handleProjectChanged(project, currentChildResourceDelta); } break; case IResourceDelta.REMOVED: handleProjectRemoved(project, currentChildResourceDelta); break; } } } } } /** * Handle project added. * @param project_p * @param resourceDelta_p */ protected abstract void handleProjectAdded(IProject project_p, IResourceDelta resourceDelta_p); /** * Handle project changed. * @param project_p * @param resourceDelta_p */ protected abstract void handleProjectChanged(IProject project_p, IResourceDelta resourceDelta_p); /** * Handle project removed. * @param project_p * @param resourceDelta_p */ protected abstract void handleProjectRemoved(IProject project_p, IResourceDelta resourceDelta_p); /** * Handle project closed. * @param project_p * @param resourceDelta_p */ protected abstract void handleProjectClosed(IProject project_p, IResourceDelta resourceDelta_p); /** * Get the IProject for given resource. * @param resource_p * @return */ protected IProject getProject(IResource resource_p) { IProject result = null; if ((null != resource_p) && (resource_p instanceof IProject)) { result = (IProject) resource_p; } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/listener/DefaultResourceListener.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3648 Text-content-md5: 0deaeb05a799583e5faf1bc3036d951d Text-content-sha1: b074297a8c19d8a636c6fc5846c9b997728bd2c8 Content-length: 3693 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.listener; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.ResourcesPlugin; /** * A default resource change listener that watches changes on a given resource. * @author Guillaume Brocard */ public abstract class DefaultResourceListener implements IResourceChangeListener { /** * Resource that should be watched. */ private IResource _resourceToWatch; /** * Is listener already registered (true) or not (false) ? */ private volatile boolean _alreadyRegistered; /** * Set resource to watch.
* Also register listener, if needed. * @param resource_p */ public void setResourceToWatch(IResource resource_p) { _resourceToWatch = resource_p; if (!_alreadyRegistered) { ResourcesPlugin.getWorkspace().addResourceChangeListener(this); _alreadyRegistered = true; } } /** * Free resources and unregister the listener. */ public void dispose() { _resourceToWatch = null; if (_alreadyRegistered) { ResourcesPlugin.getWorkspace().removeResourceChangeListener(this); _alreadyRegistered = false; } } /** * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent) */ public void resourceChanged(IResourceChangeEvent event_p) { // Watched resource has changed, do something ! if (refersToResource(_resourceToWatch, event_p)) { handleResourceChanged(event_p, _resourceToWatch); } } /** * Handle a change for watched resource. * @param event_p * @param watchedResource_p */ protected abstract void handleResourceChanged(IResourceChangeEvent event_p, IResource watchedResource_p); /** * Does given resource event refer to given resource ? * @param lookedForResource_p * @param event_p * @return */ protected boolean refersToResource(IResource lookedForResource_p, IResourceChangeEvent event_p) { // Precondition. if ((null == lookedForResource_p) || (null == event_p)) { return false; } return refersToResource(lookedForResource_p, event_p.getDelta()); } /** * Does given resource delta refer to given resource ? * @param lookedForResource_p * @param resourceDelta_p * @return */ private boolean refersToResource(IResource lookedForResource_p, IResourceDelta resourceDelta_p) { IResource resource = resourceDelta_p.getResource(); boolean result = lookedForResource_p.equals(resource); if (!result) { // Iterate over children. IResourceDelta[] children = resourceDelta_p.getAffectedChildren(); for (int i = 0; (i < children.length) && !result; i++) { result = refersToResource(lookedForResource_p, children[i]); } } return result; } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/misc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/misc/Couple.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2138 Text-content-md5: c4115e7538be1c761116cf3bb9a3be4f Text-content-sha1: 1df78846bb46e071ef0c2ce9b691686e4562b94b Content-length: 2183 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.misc; import org.eclipse.egf.common.constant.ICommonConstants; /** * Key, value object. * @author brocard */ public class Couple implements Cloneable { // Key reference. private K _key; // Value reference. private V _value; /** * Constructor. * @param key_p * @param value_p */ public Couple(K key_p, V value_p) { _key = key_p; _value = value_p; } /** * Get key. * @return K */ public K getKey() { return _key; } /** * Get value. * @return V */ public V getValue() { return _value; } /** * Set key with given value. * @param key_p key to set. void */ public void setKey(K key_p) { _key = key_p; } /** * Set value with given value. * @param value_p the value to set */ public void setValue(V value_p) { _value = value_p; } /** * @see java.lang.Object#clone() */ @SuppressWarnings("unchecked") @Override public Couple clone() { try { return (Couple) super.clone(); } catch (CloneNotSupportedException exception_p) { return null; } } /** * @see java.lang.Object#toString() */ @Override public String toString() { String keyString = _key != null ? _key.toString() : ICommonConstants.EMPTY_STRING; String valueString = _value != null ? _value.toString() : ICommonConstants.EMPTY_STRING; return new StringBuffer(keyString) .append(ICommonConstants.PARENTHESIS_OPEN_CHARACTER) .append(valueString) .append(ICommonConstants.PARENTHESIS_CLOSE_CHARACTER) .toString(); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/misc/ISelectionHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 903 Text-content-md5: 69c6ee2b888d2e56b1589bb131a80b13 Text-content-sha1: c5f5485863a7b3995cbdec73bacd56d8b2783824 Content-length: 948 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.misc; /** * Handle selected object to get their string representation.
* Implementors must provide a default constructor (i.e the one without argument). * @author Guillaume Brocard */ public interface ISelectionHandler { /** * Handle given selected object. * @param selectedObject_p * @return a string representation for given selected object. */ public String handleSelection(Object selectedObject_p); } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/misc/PlatformLocationType.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1494 Text-content-md5: 94b7f35f4dc6a8eb2aeb563d7c0cb4e9 Text-content-sha1: 41b6f5b5b9a3a556115b7a3912c8b517b09f2d9d Content-length: 1539 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.misc; /** * This enumeration offers 4 types to identify platform locations. * @author Guillaume Brocard */ public enum PlatformLocationType { /** * Define the target platform.
* Process handlers that use this type, will only perform against the target platform. */ TARGET_PLATFORM_ONLY, /** * Define the workspace.
* Process handlers that use this type, will only perform against the workspace. */ WORKSPACE_ONLY, /** * Define the target platform then the workspace.
* Process handlers that use this type will only perform against the target platform then workspace. */ TARGET_PLATFORM_THEN_WORKSPACE, /** * Define the workspace then the target platform.
* Process handlers that use this type will only perform against the workspace then target platform. */ WORKSPACE_THEN_TARGET_PLATFORM } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/progress Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/progress/IProgressRunnable.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1146 Text-content-md5: d4cf2a57226871a779077329d68b4fca Text-content-sha1: 68a12d73ff35ea7db5d83f62da0d426630e7bfb5 Content-length: 1191 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.progress; import org.eclipse.core.runtime.IProgressMonitor; /** * Runnable that is reporting its progress through a {@link IProgressMonitor}. * @author brocard */ public interface IProgressRunnable { /** * A run method, that can take any action.
* * @param progressMonitor_p * @return true if runnable ended successfully, false otherwise. */ public boolean run(IProgressMonitor progressMonitor_p); /** * Get reporting title. * @return */ public String getReportingTitle(); } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/progress/ProductionProgressMonitor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2037 Text-content-md5: 02976c4bd59919f3976aaad877834f64 Text-content-sha1: 8d916e0a1a0d780cd5ba89d0d95ab692aa8791f7 Content-length: 2082 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.progress; import org.eclipse.core.runtime.SubMonitor; import org.eclipse.egf.common.constant.ICommonConstants; /** * Production progress monitor eases the usage of {@link SubMonitor} in patterns production or execution.
* Have a look at {@link SubMonitor}, {@link IProgressMonitor} documentation. * @author Guillaume Brocard */ public class ProductionProgressMonitor { /** * Number of ticks to allocate to this progress monitor. */ private int _totalWork; /** * Internal Sub monitor. */ private SubMonitor _monitor; /** * Return the underlying monitor. * @return the monitor */ public SubMonitor getMonitor() { return _monitor; } /** * Create a progress monitor for given parameters. * @param parentMonitor_p the parent monitor for this progress monitor. * @param taskName_p the end-user task name displayed in progress reporter. * @param totalWork_p number of ticks to allocate */ public ProductionProgressMonitor(SubMonitor parentMonitor_p, String taskName_p, int totalWork_p) { _totalWork = totalWork_p; _monitor = parentMonitor_p.newChild(_totalWork); _monitor.beginTask(ICommonConstants.EMPTY_STRING, _totalWork); _monitor.setTaskName(taskName_p); } /** * End this progress monitor. */ public void end() { _monitor.worked(_totalWork); _monitor.setWorkRemaining(0); } } Node-path: plugins/org.eclipse.egf.common/src/org/eclipse/egf/common/progress/ProgressReporter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3145 Text-content-md5: d3af78be37cecb9db433652474f9d435 Text-content-sha1: fd0ad0e2bbf3d6668597446d56fb60c5ba644ccb Content-length: 3190 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.progress; import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; /** * A runner that executes runnable with progress reporting support. * @author brocard */ public class ProgressReporter { /** * An executed task default ticks count (in terms of reporting). */ public static final int TASK_DEFAULT_TICKS_COUNT = 1000; /** * Causes the {@link IProgressRunnable#run(IProgressMonitor)} method of the given runnable to be invoked * by an eclipse job at the next reasonable opportunity. The caller continues to run in parallel, * and is not notified when the runnable has completed.
* The progress reporting is done through the progress monitor of the executing job (non-user one). * @param runnable_p * @see #syncExec(IProgressRunnable, IProgressMonitor) */ public static void asyncExec(final IProgressRunnable runnable_p) { // Do nothing if there is nothing to do. if (null == runnable_p) { return; } // Create a new job. Job job = new WorkspaceJob(runnable_p.getReportingTitle()) { @Override public IStatus runInWorkspace(IProgressMonitor monitor_p) throws CoreException { boolean result = syncExec(runnable_p, monitor_p); return result ? Status.OK_STATUS : Status.CANCEL_STATUS; } }; job.schedule(); } /** * Causes the {@link IProgressRunnable#run(IProgressMonitor)} method of the given runnable to be invoked * by the calling thread. This one is suspended until the runnable completes.
* The progress reporting is done through the given progress monitor. * @param runnable_p * @param progressMonitor_p null to disable progress reporting. * @see #asyncExec(IProgressRunnable) */ public static boolean syncExec(IProgressRunnable runnable_p, IProgressMonitor progressMonitor_p) { // Do nothing if there is nothing to do. if (null == runnable_p) { return true; } IProgressMonitor progressMonitor = progressMonitor_p; // If no progress monitor is provided, use null one. if (null == progressMonitor) { progressMonitor = new NullProgressMonitor(); } // Invoke the run method. return runnable_p.run(progressMonitor); } } Node-path: plugins/org.eclipse.egf.common.ui/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 587 Text-content-md5: a06ad971889e8772980d8f22a2d25130 Text-content-sha1: 44b4a10ef1ff9202bb183ab564c441ac99648585 Content-length: 632 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 686 Text-content-md5: fd394656221f2e61a874bc96ab07504b Text-content-sha1: a420d0de96a68a10e9d52088cc22416614852cd0 Content-length: 731 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.common.ui org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.common.ui/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: a4e6115c8dcdb4a8fbf0b3308e69c2e2 Text-content-sha1: 7bc6e403012bc1194d12e508b65f294c03b07542 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:57 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.common.ui/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1304 Text-content-md5: 99b6ea64beb4bfb50b3904c72241944c Text-content-sha1: d01ea37b67f60bfe6a3d0711167552bbc84d9e83 Content-length: 1349 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.common.ui; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.common;visibility:=reexport, org.eclipse.core.databinding;visibility:=reexport, org.eclipse.core.databinding.beans;visibility:=reexport, org.eclipse.jdt.ui;visibility:=reexport, org.eclipse.jface.databinding;visibility:=reexport, org.eclipse.ui;visibility:=reexport, org.eclipse.ui.ide;visibility:=reexport, org.eclipse.ui.forms;visibility:=reexport, org.eclipse.jface.text;visibility:=reexport, org.eclipse.help;visibility:=reexport Export-Package: org.eclipse.egf.common.ui.activator, org.eclipse.egf.common.ui.constant, org.eclipse.egf.common.ui.field, org.eclipse.egf.common.ui.helper, org.eclipse.egf.common.ui.resource, org.eclipse.egf.common.ui.toolkit.adapters, org.eclipse.egf.common.ui.toolkit.fields, org.eclipse.egf.common.ui.toolkit.validators, org.eclipse.egf.common.ui.toolkit.viewers, org.eclipse.egf.common.ui.toolkit.widgets.handler, org.eclipse.egf.common.ui.viewers, org.eclipse.egf.common.ui.wizard.page Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.common.ui/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.common.ui/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/activator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/activator/AbstractUIActivator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4368 Text-content-md5: ef4de4ed7aeb45e420aeab7bdaa86fa1 Text-content-sha1: 462e69f5a925cdbe85f3c2b2813033efd35e15ed Content-length: 4427 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 17org/eclipse/egf/common/ui/activator/AbstractUIActivator&org/eclipse/ui/plugin/AbstractUIPlugin ICONS_PATHLjava/lang/String; ConstantValue  $nl$/icons/()VCode  LineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/common/ui/activator/AbstractUIActivator;getWorkbenchDisplay#()Lorg/eclipse/swt/widgets/Display; org/eclipse/ui/PlatformUI  getWorkbench()Lorg/eclipse/ui/IWorkbench; org/eclipse/ui/IWorkbench  getDisplaylog(Ljava/lang/Throwable;)V #%$java/lang/Throwable &' getMessage()Ljava/lang/String; ) *+newErrorStatusK(Ljava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus; - .%(Lorg/eclipse/core/runtime/IStatus;)VtLjava/lang/Throwable;2org/eclipse/core/runtime/Status 4 5' getPluginID 17 8>(ILjava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)Vmessage exception(Ljava/lang/String;)V = >?getLog!()Lorg/eclipse/core/runtime/ILog; ACB*org/eclipse/egf/common/helper/StatusHelper DE newStatus^(Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus; G-Horg/eclipse/core/runtime/ILog*(Ljava/lang/String;Ljava/lang/Throwable;)V K L7(Ljava/lang/String;Lorg/eclipse/core/runtime/IStatus;)V;(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V Signature>(Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/Throwable;)VQException in {0}.{1}: {2}Sjava/lang/Object UWVjava/lang/Class X'getName Z\[org/eclipse/osgi/util/NLS ]^bind9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; ` IclazzLjava/lang/Class; methodNameLocalVariableTypeTableLjava/lang/Class<*>;status"Lorg/eclipse/core/runtime/IStatus;+(ILjava/lang/String;Ljava/lang/Throwable;)VseverityIegetImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; o pqgetImageRegistry,()Lorg/eclipse/jface/resource/ImageRegistry; sut(org/eclipse/jface/resource/ImageRegistry vm getDescriptor x ymcreateImageDescriptor s{ |}putA(Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)Vkey_p imageRegistry*Lorg/eclipse/jface/resource/ImageRegistry;imageDescriptor,Lorg/eclipse/jface/resource/ImageDescriptor;getImage4(Ljava/lang/String;)Lorg/eclipse/swt/graphics/Image; s getimage Lorg/eclipse/swt/graphics/Image;java/lang/StringBuilder ; append-(Ljava/lang/String;)Ljava/lang/StringBuilder; 'toString  imageDescriptorFromPluginR(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor;   getBundle()Lorg/osgi/framework/Bundle; org/osgi/framework/Bundle 'getSymbolicName SourceFileAbstractUIActivator.java!  /*    ) ' ! F**+"+(, + ,/0*+ N1Y*3+,65 9:0 ; L*<*3+@F BC9 I R*+*3+,@J OP 9/0 MNO |*PRY+TSY,SY-SY-_ Z[*abc/0d ae . ?*+J cdfg h `*1Y*3,-6, jk*ij9k0 L l"+*<*3+@F*<,Fuvx!y ""9"fglm y*nM,+rN-*+wN,+-z- *~  %*nM,+N-*+w:,+z,+N- #4%%~   ym \*3Y+M,  ~5' 4 *   Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/constant Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/constant/IUiCommonConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 326 Text-content-md5: f049ab56da16a8c2d1442a240f02db01 Text-content-sha1: 34ded94685525cc7cea907900d341ee529ef559e Content-length: 385 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 15org/eclipse/egf/common/ui/constant/IUiCommonConstantsjava/lang/Object NO_ELEMENT[Ljava/lang/Object;()VCode  LineNumberTableLocalVariableTable SourceFileIUiCommonConstants.java ,    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/ContextElementFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1638 Text-content-md5: ab33baef716e11bb7e1760d1337622e3 Text-content-sha1: 3de3b077ecdbe694a38e6088ffeac5b0de8548e5 Content-length: 1697 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 129org/eclipse/egf/common/ui/field/ContextElementFieldEditor4org/eclipse/egf/common/ui/field/JavaClassFieldEditor_selectionHandler/Lorg/eclipse/egf/common/misc/ISelectionHandler;[(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class;)V Signature^(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class<*>;)VCode  LineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/common/ui/field/ContextElementFieldEditor;title_pLjava/lang/String;openTypeDialogTitle_pparent_p#Lorg/eclipse/swt/widgets/Composite;classTypeFilter_pLjava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>;handleSelection&(Ljava/lang/Object;)Ljava/lang/String;   "!-org/eclipse/egf/common/misc/ISelectionHandler  "selectedObject_pLjava/lang/Object;resultsetDialogToOpen+(Lorg/eclipse/ui/dialogs/SelectionDialog;)V * '(dialogToOpen_p(Lorg/eclipse/ui/dialogs/SelectionDialog;setSelectionHandler2(Lorg/eclipse/egf/common/misc/ISelectionHandler;)V handler_p SourceFileContextElementFieldEditor.java!   *+,- *+,-. 04        mM**+M *+#M,78 9;= $%&'( >*+) EF+,-. >*+ MN/01 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/DomainFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1286 Text-content-md5: 98aa2bd7b32986547b1daa31c678c9e1 Text-content-sha1: d5cb26ceb44424e67b67aaeb6b89e1d962a7fb5a Content-length: 1345 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.1org/eclipse/egf/common/ui/field/DomainFieldEditor8org/eclipse/egf/common/ui/field/WorkspaceFileFieldEditor(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethis3Lorg/eclipse/egf/common/ui/field/DomainFieldEditor;title_pLjava/lang/String;openResourceDialogTitle_pparent_p#Lorg/eclipse/swt/widgets/Composite; container_p'Lorg/eclipse/core/resources/IContainer;filterExtension_phandleFilePath6(Lorg/eclipse/core/resources/IFile;)Ljava/lang/String;  org/eclipse/core/resources/IFile  getFullPath"()Lorg/eclipse/core/runtime/IPath; ! org/eclipse/core/runtime/IPath "#removeFirstSegments#(I)Lorg/eclipse/core/runtime/IPath; % &'toString()Ljava/lang/String;file_p"Lorg/eclipse/core/resources/IFile;result Lorg/eclipse/core/runtime/IPath; SourceFileDomainFieldEditor.java! *+,- '()*+, . >     V+M,$ 6 7  () *+,- Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/JavaClassFieldEditor$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 887 Text-content-md5: d8190e01fe90db5afa3b8bc47aa8b4da Text-content-sha1: d1e9068cd30ab51e4094215ee4902d6c13389266 Content-length: 946 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1$6org/eclipse/egf/common/ui/field/JavaClassFieldEditor$1java/lang/Object%org/eclipse/swt/events/ModifyListenerthis$06Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;9(Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethis8Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor$1; modifyText'(Lorg/eclipse/swt/events/ModifyEvent;)V 4org/eclipse/egf/common/ui/field/JavaClassFieldEditor  access$0e_p$Lorg/eclipse/swt/events/ModifyEvent; SourceFileJavaClassFieldEditor.javaEnclosingMethod " addListeners InnerClasses   8 *+ *    @*   !#  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/JavaClassFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4142 Text-content-md5: 35bf9f2249c71d9330daa9d02e567803 Text-content-sha1: b610be54e9bd574e471bab305200fc0722e674f6 Content-length: 4201 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 14org/eclipse/egf/common/ui/field/JavaClassFieldEditorAorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor_openTypeDialogTitleLjava/lang/String;_classTypeFilterLjava/lang/Class; SignatureLjava/lang/Class<*>;[(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class;)V^(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class<*>;)VCode  `(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/SelectionDialog;)V       addListeners()VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;title_popenTypeDialogTitle_pparent_p#Lorg/eclipse/swt/widgets/Composite;classTypeFilter_pLocalVariableTypeTablehandleSelection&(Ljava/lang/Object;)Ljava/lang/String;'org/eclipse/jdt/core/IType &) *+getFullyQualifiedName()Ljava/lang/String;selectedObject_pLjava/lang/Object;typeLorg/eclipse/jdt/core/IType; createDialog*()Lorg/eclipse/ui/dialogs/SelectionDialog;3;org/eclipse/jdt/internal/ui/dialogs/OpenTypeSelectionDialog 5 67getShell!()Lorg/eclipse/swt/widgets/Shell; 9;:org/eclipse/ui/PlatformUI <= getWorkbench()Lorg/eclipse/ui/IWorkbench; ?A@org/eclipse/ui/IWorkbench BCgetProgressService,()Lorg/eclipse/ui/progress/IProgressService; 2E F(Lorg/eclipse/swt/widgets/Shell;ZLorg/eclipse/jface/operation/IRunnableContext;Lorg/eclipse/jdt/core/search/IJavaSearchScope;ILorg/eclipse/jdt/ui/dialogs/TypeSelectionExtension;)V HJIjava/lang/Class K+getName M NOgetFormattedOpenTypeDialogTitle&(Ljava/lang/String;)Ljava/lang/String; QSR&org/eclipse/ui/dialogs/SelectionDialog TUsetTitle(Ljava/lang/String;)V WYX*org/eclipse/jdt/internal/ui/JavaUIMessages ZOpenTypeAction_dialogMessage Q\ ]U setMessagedialog(Lorg/eclipse/ui/dialogs/SelectionDialog; dialogTitlefullyQualifiedFilteredClassNamesetClassTypeFilter(Ljava/lang/Class;)V(Ljava/lang/Class<*>;)V f gh getValidator;()Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;j@org/eclipse/egf/common/ui/internal/validators/JavaClassValidator il mcsetExpectedClassType validator9Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;javaClassValidatorBLorg/eclipse/egf/common/ui/internal/validators/JavaClassValidator; sutjava/lang/String vw lastIndexOf(I)I sy z{ substring(I)Ljava/lang/String; }~4org/eclipse/egf/common/ui/helper/MessageFormatHelper  formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;!fullyQualifiedFilteredClassName_p lastDotIndexI  getTextControl ()Lorg/eclipse/swt/widgets/Text;6org/eclipse/egf/common/ui/field/JavaClassFieldEditor$1 9(Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;)V org/eclipse/swt/widgets/Text addModifyListener*(Lorg/eclipse/swt/events/ModifyListener;)Vaccess$0  refreshValidState SourceFileJavaClassFieldEditor.java InnerClasses!     *-+*,**:; <=>4 !"# " $%N +&M,( EF   ,-./01A2Y*48> DL*M**GN*-LM+,P+V[+>PQR STUVPYZ%\-]3`8a?b*A(^_#`-abc d#*+*eM,,i,iN-*kjk mno"q*##" nopq# #" NOk+.r=*sY+`xS|y{ |}z F*Y*  %*  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 917 Text-content-md5: 9d310e55b355a76a542172e4fa07ac69 Text-content-sha1: 5487625ecc7aaa6a1aa44468281e1ab2bf89c5b5 Content-length: 976 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1$;org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor$1java/lang/Object%org/eclipse/swt/events/ModifyListenerthis$0;Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor;>(Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethis=Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor$1; modifyText'(Lorg/eclipse/swt/events/ModifyEvent;)V 9org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor  access$0e_p$Lorg/eclipse/swt/events/ModifyEvent; SourceFileJavaScopeClassFieldEditor.javaEnclosingMethod " addListeners InnerClasses   8 *+ * j   @*  pq !#  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3201 Text-content-md5: b44697c48e97263f6d40e49d664cbe4d Text-content-sha1: 993d3461a3397ee7c2c40027b1017ac383f9a7b9 Content-length: 3260 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1r9org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditorAorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor_openTypeDialogTitleLjava/lang/String; _javaProject#Lorg/eclipse/jdt/core/IJavaProject;_classTypeFilterLjava/lang/Class; SignatureLjava/lang/Class<*>;~(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;)V(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class<*>;)VCode  `(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/SelectionDialog;)V        addListeners()VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor;title_popenTypeDialogTitle_pparent_p#Lorg/eclipse/swt/widgets/Composite; javaProject_pclassTypeFilter_pLocalVariableTypeTablehandleSelection&(Ljava/lang/Object;)Ljava/lang/String;,org/eclipse/jdt/core/IType +. /0getFullyQualifiedName()Ljava/lang/String;selectedObject_pLjava/lang/Object;typeLorg/eclipse/jdt/core/IType; createDialog*()Lorg/eclipse/ui/dialogs/SelectionDialog;8@org/eclipse/jdt/internal/ui/dialogs/FilteredTypesSelectionDialog : ;<getShell!()Lorg/eclipse/swt/widgets/Shell;>/org/eclipse/jface/dialogs/ProgressMonitorDialog =@ A"(Lorg/eclipse/swt/widgets/Shell;)VCKorg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension BE F7(Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;)V 7H I(Lorg/eclipse/swt/widgets/Shell;ZLorg/eclipse/jface/operation/IRunnableContext;Lorg/eclipse/jdt/core/search/IJavaSearchScope;ILorg/eclipse/jdt/ui/dialogs/TypeSelectionExtension;)V 7K LMsetTitle(Ljava/lang/String;)V OQP*org/eclipse/jdt/internal/ui/JavaUIMessages ROpenTypeAction_dialogMessage 7T UM setMessage 7W XYsetBlockOnOpen(Z)VdialogBLorg/eclipse/jdt/internal/ui/dialogs/FilteredTypesSelectionDialog; ] ^_getTextControl ()Lorg/eclipse/swt/widgets/Text;a;org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor$1 `c d>(Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor;)V fhgorg/eclipse/swt/widgets/Text ijaddModifyListener*(Lorg/eclipse/swt/events/ModifyListener;)Vaccess$0 m nrefreshValidState SourceFileJavaScopeClassFieldEditor.java InnerClasses!     *-+*,***AB CDEF> !"#$%&' ( ' )*N ++M,- MN  ! 123456 ?7Y*9=Y*9?BY**DGL+*J+NS+V+2 WXY Z[\]%W)_1`8a=b? !)Z[F*\`Y*beij it  !kd%*lopq ` Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/LabelFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1828 Text-content-md5: 9f516620bbbbcf883bc708639ff33eea Text-content-sha1: 91beba8f84f1188543a2f82cc52bf9a203415d8a Content-length: 1887 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1K0org/eclipse/egf/common/ui/field/LabelFieldEditor(org/eclipse/jface/preference/FieldEditor_labelLorg/eclipse/swt/widgets/Label;8(Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VCode label  J(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VLineNumberTableLocalVariableTablethis2Lorg/eclipse/egf/common/ui/field/LabelFieldEditor; labelText_pLjava/lang/String;parent_p#Lorg/eclipse/swt/widgets/Composite;adjustForNumColumns(I)V   org/eclipse/swt/widgets/Label   getLayoutData()Ljava/lang/Object;"org/eclipse/swt/layout/GridData !$ %&horizontalSpanI numColumns_pdoFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V + ,-getLabelControlD(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Label; !/ 0()V !2 3&horizontalAlignment !5 67grabExcessHorizontalSpaceZ !9 :&verticalAlignment !< =7grabExcessVerticalSpace ? @A setLayoutData(Ljava/lang/Object;)VgridData!Lorg/eclipse/swt/layout/GridData;doLoad doLoadDefaultdoStoregetNumberOfControls()I SourceFileLabelFieldEditor.java! K * +,       G*!# #$'&() 3**+*!Y.N-#-1-4-8-;*->& + ,-./ 0%1*223*333'&"BCD0 +; E0 +C F0 +K GH ,R IJ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/SpacerFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 538 Text-content-md5: 828997685dda3fc56431987727a1fe63 Text-content-sha1: fa32b2e1e3f81db8e514948dea3dc9fa072888a2 Content-length: 597 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11org/eclipse/egf/common/ui/field/SpacerFieldEditor0org/eclipse/egf/common/ui/field/LabelFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)VCode    8(Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VLineNumberTableLocalVariableTablethis3Lorg/eclipse/egf/common/ui/field/SpacerFieldEditor;parent_p#Lorg/eclipse/swt/widgets/Composite; SourceFileSpacerFieldEditor.java!@*+   Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1996 Text-content-md5: 1f39148bfeb320bcd4029045a36dd03d Text-content-sha1: 2ab159847abb8b0a0f9f5963d95d268f5cad9928 Content-length: 2055 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1HAorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditorAorg/eclipse/egf/common/ui/toolkit/fields/StringBrowserFieldEditor _dialogToOpen(Lorg/eclipse/ui/dialogs/SelectionDialog;`(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/SelectionDialog;)VCode   t(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/viewers/ILabelProvider;)V  LineNumberTableLocalVariableTablethisCLorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor;parent_p#Lorg/eclipse/swt/widgets/Composite;label_pLjava/lang/String;dialogToOpen_pisValid(Z)Z  refreshValidState()V ! "()Zforce_pZ changePressed()Ljava/lang/String; ( )*getDialogToOpen*()Lorg/eclipse/ui/dialogs/SelectionDialog; , -* createDialog /10&org/eclipse/ui/dialogs/SelectionDialog 23open()I /5 67 getResult()[Ljava/lang/Object; 9 :;handleSelection&(Ljava/lang/Object;)Ljava/lang/String; selectedValue dialogToOpen selection[Ljava/lang/Object;Ajava/lang/StringselectedObject_pLjava/lang/Object;setDialogToOpen+(Lorg/eclipse/ui/dialogs/SelectionDialog;)V SourceFile&ValidatingStringButtonFieldEditor.java! _* ,+ *-, -.* I ** 78:  #$%& 3L*'M,*+M, ,.,4N-- *-28L+* BCE FHIK L)N1R*31<,= >?-* ,[ :; 9+@fBCDE >*+ no)* /*v FG Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/field/WorkspaceFileFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2343 Text-content-md5: 75ed052aa92e5a80e3bd168670e2b04f Text-content-sha1: 011d797958947c621f88cab2aa3b41fc19c70dbe Content-length: 2402 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1b8org/eclipse/egf/common/ui/field/WorkspaceFileFieldEditorAorg/eclipse/egf/common/ui/toolkit/fields/StringBrowserFieldEditor _container'Lorg/eclipse/core/resources/IContainer;_openResourceDialogTitleLjava/lang/String;_filterExtension(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;)VCode  t(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/viewers/ILabelProvider;)V      LineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/common/ui/field/WorkspaceFileFieldEditor;title_popenResourceDialogTitle_pparent_p#Lorg/eclipse/swt/widgets/Composite; container_pfilterExtension_p changePressed()Ljava/lang/String;%7org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog ' ()getShell!()Lorg/eclipse/swt/widgets/Shell; $+ ,K(Lorg/eclipse/swt/widgets/Shell;ZLorg/eclipse/core/resources/IContainer;I)V $. /0setTitle(Ljava/lang/String;)V $2 30setInitialPattern $5 67open()I $9 :; getResult()[Ljava/lang/Object;= org/eclipse/core/resources/IFile ? @AhandleFilePath6(Lorg/eclipse/core/resources/IFile;)Ljava/lang/String;fileNamedialog9Lorg/eclipse/ui/dialogs/FilteredResourcesSelectionDialog;resultIfiles[Ljava/lang/Object;file"Lorg/eclipse/core/resources/IFile; <L MN getFullPath"()Lorg/eclipse/core/runtime/IPath; PRQorg/eclipse/core/runtime/IPath S#toStringfile_pisValid(Z)Z X YZrefreshValidState()V \ U]()Zforce_pZ SourceFileWorkspaceFileFieldEditor.java!   * +-*,**& ;<=>? ABCD> !"# PL$Y*&**M,*-,*1,4>$,8:2<:*>L+. KMOQ$T)V-X3Y>[G\N_>PNB<CD)'EF3GHGIJ@A @ +KOi  TJUV I *W*[rsu  ^_`a Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/DataBindingHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2380 Text-content-md5: 9b17dc7bb418e664bd9473253aee41a9 Text-content-sha1: bd233cd221b5249c61b13f669835696a95bc696c Content-length: 2439 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?2org/eclipse/egf/common/ui/helper/DataBindingHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis4Lorg/eclipse/egf/common/ui/helper/DataBindingHelper;bindTextToProperty(Lorg/eclipse/swt/widgets/Control;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/core/databinding/observable/value/IValueChangeListener;)V/org/eclipse/core/databinding/DataBindingContext  3org/eclipse/core/databinding/beans/BeansObservables  observeValuef(Ljava/lang/Object;Ljava/lang/String;)Lorg/eclipse/core/databinding/observable/value/IObservableValue; >org/eclipse/core/databinding/observable/value/IObservableValue addValueChangeListenerG(Lorg/eclipse/core/databinding/observable/value/IValueChangeListener;)V "!0org/eclipse/jface/databinding/swt/SWTObservables #$ observeText[(Lorg/eclipse/swt/widgets/Control;I)Lorg/eclipse/jface/databinding/swt/ISWTObservableValue; & '( bindValue (Lorg/eclipse/core/databinding/observable/value/IObservableValue;Lorg/eclipse/core/databinding/observable/value/IObservableValue;Lorg/eclipse/core/databinding/UpdateValueStrategy;Lorg/eclipse/core/databinding/UpdateValueStrategy;)Lorg/eclipse/core/databinding/Binding; control_p!Lorg/eclipse/swt/widgets/Control;propertyName_pLjava/lang/String;propertyHolder_pLjava/lang/Object; listener_pDLorg/eclipse/core/databinding/observable/value/IValueChangeListener;bindingContext1Lorg/eclipse/core/databinding/DataBindingContext;observedProperty@Lorg/eclipse/core/databinding/observable/value/IObservableValue; observedText7Lorg/eclipse/jface/databinding/swt/ISWTObservableValue;bindControlSelectionToProperty 9 :;observeSelectionZ(Lorg/eclipse/swt/widgets/Control;)Lorg/eclipse/jface/databinding/swt/ISWTObservableValue;observedControl SourceFileDataBindingHelper.java!/*   1Y:,+:- -*:%W % &(),$-0. H1)*1+,1-.1/0 (12!34$ 56 7/Y:,+:- -*8:%W : ;=>A"B.C H/)*/+,/-.//0 &1234" <6=> Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/DialogHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1290 Text-content-md5: da1df3774058b5f6801c1379ec9d5806 Text-content-sha1: a0bd9d5ce3780a3b6095709221c7f1a874a2eb22 Content-length: 1349 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 12-org/eclipse/egf/common/ui/helper/DialogHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis/Lorg/eclipse/egf/common/ui/helper/DialogHelper;openDeleteConfirmationDialog5(Lorg/eclipse/swt/widgets/Shell;[Ljava/lang/Object;)Z )org/eclipse/egf/common/ui/helper/Messages (DeleteElementActionConfirmDialog_MessageLjava/lang/String;  G(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;[Ljava/lang/Object;)Zparent_pLorg/eclipse/swt/widgets/Shell; arguments_p[Ljava/lang/Object;  4org/eclipse/egf/common/ui/helper/MessageFormatHelper !" formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; $ %&DeleteElementActionConfirmDialog_Title ')('org/eclipse/jface/dialogs/MessageDialog *+ openQuestionF(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;)ZmessageToFormat_pformatedMessage confirmedZ SourceFileDialogHelper.java!/*   = *+     m+,N*#-&6 %&' 4, -./01 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FieldEditorHelper$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1864 Text-content-md5: 4e0faa308e941edac5c44adbf87430cf Text-content-sha1: 8aa83b1919ab8c1947116d2cb6f65ffb660447a9 Content-length: 1923 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1I4org/eclipse/egf/common/ui/helper/FieldEditorHelper$1Dorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapterval$readOnly_pZval$horizintalIndent_pIval$verticalIndent_pN(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;ZII)VCode        K(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;)VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/helper/FieldEditorHelper$1; $anonymous0Ljava/lang/String; $anonymous1 $anonymous2 $anonymous3#Lorg/eclipse/swt/widgets/Composite;doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V # ! % &'getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; )+*org/eclipse/swt/widgets/Button ,- setEnabled(Z)V )/ 01 getLayoutData()Ljava/lang/Object;3org/eclipse/swt/layout/GridData 25 6horizontalIndent 28 9verticalIndent parent__p numColumns_pcheckBox Lorg/eclipse/swt/widgets/Button;gd!Lorg/eclipse/swt/layout/GridData; SourceFileFieldEditorHelper.javaEnclosingMethodD2org/eclipse/egf/common/ui/helper/FieldEditorHelper FGcreateCheckBoxFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;ZIIZ)Lorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter; InnerClasses    r* ***+, 4 ! 8*+"*+$N-* (-.2:*4*7 %.7488:8; ,<=%>?@ABCEH  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FieldEditorHelper$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1757 Text-content-md5: f97d3bb79fffc58bef7f74ccd23c164b Text-content-sha1: fa6ae770ab36ba67bad9e832b0e7b5c23fd898ce Content-length: 1816 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 184org/eclipse/egf/common/ui/helper/FieldEditorHelper$29org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditorval$readOnly_pZ(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;Z)VCode    ~(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;)VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/helper/FieldEditorHelper$2; $anonymous0Ljava/lang/String; $anonymous1 $anonymous2#Lorg/eclipse/swt/widgets/Composite; $anonymous3#Lorg/eclipse/jdt/core/IJavaProject; $anonymous4Ljava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>;doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V !  # $%getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; ')(org/eclipse/swt/widgets/Button *+ setEnabled(Z)V parent__p numColumns_pI SourceFileFieldEditorHelper.javaEnclosingMethod32org/eclipse/egf/common/ui/helper/FieldEditorHelper 56createJavaScopeClassFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor; InnerClasses  * *+,-  .>  a*+ *+"* &789 ,-./01247  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FieldEditorHelper$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1623 Text-content-md5: d647d2a7b7b999631797b8c841211971 Text-content-sha1: 28f3942d58d8f29d503b2c3f14aa62415bd837f2 Content-length: 1682 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 164org/eclipse/egf/common/ui/helper/FieldEditorHelper$34org/eclipse/egf/common/ui/field/JavaClassFieldEditorval$readOnly_pZ\(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class;Z)VCode    [(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class;)VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/helper/FieldEditorHelper$3; $anonymous0Ljava/lang/String; $anonymous1 $anonymous2#Lorg/eclipse/swt/widgets/Composite; $anonymous3Ljava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>;doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V   ! "#getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; %'&org/eclipse/swt/widgets/Button () setEnabled(Z)V parent__p numColumns_pI SourceFileFieldEditorHelper.javaEnclosingMethod12org/eclipse/egf/common/ui/helper/FieldEditorHelper 34createJavaClassFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor; InnerClasses  x* *+,-  X4  a*+*+ * $`ab *+,-./025  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FieldEditorHelper$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1638 Text-content-md5: 297695c5bfd68950d83ef5394af9997a Text-content-sha1: 69e11cbb3136a1be0ad2f9dac8acec0a38ee5a42 Content-length: 1697 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 164org/eclipse/egf/common/ui/helper/FieldEditorHelper$49org/eclipse/egf/common/ui/field/ContextElementFieldEditorval$readOnly_pZ\(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class;Z)VCode    [(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class;)VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/helper/FieldEditorHelper$4; $anonymous0Ljava/lang/String; $anonymous1 $anonymous2#Lorg/eclipse/swt/widgets/Composite; $anonymous3Ljava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>;doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V   ! "#getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; %'&org/eclipse/swt/widgets/Button () setEnabled(Z)V parent__p numColumns_pI SourceFileFieldEditorHelper.javaEnclosingMethod12org/eclipse/egf/common/ui/helper/FieldEditorHelper 34createContextElementFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/ContextElementFieldEditor; InnerClasses  x* *+,-  4  a*+*+ * $ *+,-./025  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FieldEditorHelper$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1644 Text-content-md5: e31e0ac8dbe6c415542d21d384c8aeca Text-content-sha1: 85a68beee121fbeeed14ba5350037c05209bc14f Content-length: 1703 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 154org/eclipse/egf/common/ui/helper/FieldEditorHelper$58org/eclipse/egf/common/ui/field/WorkspaceFileFieldEditorval$readOnly_pZ(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)VCode    (Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;)VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/helper/FieldEditorHelper$5; $anonymous0Ljava/lang/String; $anonymous1 $anonymous2#Lorg/eclipse/swt/widgets/Composite; $anonymous3'Lorg/eclipse/core/resources/IContainer; $anonymous4doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V    !"getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; $&%org/eclipse/swt/widgets/Button '( setEnabled(Z)V parent__p numColumns_pI SourceFileFieldEditorHelper.javaEnclosingMethod02org/eclipse/egf/common/ui/helper/FieldEditorHelper 23createWorkspaceFileEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/field/WorkspaceFileFieldEditor; InnerClasses  r* *+,-  > a*+*+* # )*+,-./14  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FieldEditorHelper$6.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1628 Text-content-md5: 75a988a05ffddbb731e6b72266ba80c3 Text-content-sha1: c49e12187e752e83b719a9d72f1abb964daf117f Content-length: 1687 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 154org/eclipse/egf/common/ui/helper/FieldEditorHelper$61org/eclipse/egf/common/ui/field/DomainFieldEditorval$readOnly_pZ(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)VCode    (Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;)VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/helper/FieldEditorHelper$6; $anonymous0Ljava/lang/String; $anonymous1 $anonymous2#Lorg/eclipse/swt/widgets/Composite; $anonymous3'Lorg/eclipse/core/resources/IContainer; $anonymous4doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V    !"getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; $&%org/eclipse/swt/widgets/Button '( setEnabled(Z)V parent__p numColumns_pI SourceFileFieldEditorHelper.javaEnclosingMethod02org/eclipse/egf/common/ui/helper/FieldEditorHelper 23createDomainFieldEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/field/DomainFieldEditor; InnerClasses  r* *+,-  > a*+*+* # )*+,-./14  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FieldEditorHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 12650 Text-content-md5: 397b708d90e8614356a49adde1bd422c Text-content-sha1: 16aca9181c85ac47671dd13b439b808e7b72a2d5 Content-length: 12709 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Z2org/eclipse/egf/common/ui/helper/FieldEditorHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis4Lorg/eclipse/egf/common/ui/helper/FieldEditorHelper;createDescriptionFieldEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/jface/text/IDocumentListener;Z)Lorg/eclipse/swt/custom/StyledText;!org/eclipse/swt/widgets/Composite  '(Lorg/eclipse/swt/widgets/Composite;I)V!org/eclipse/swt/layout/GridLayout    numColumnsI   marginWidth  ! marginHeight # $% setLayout#(Lorg/eclipse/swt/widgets/Layout;)V'org/eclipse/swt/layout/GridData &) *(IIZZ)V , -. setLayoutData(Ljava/lang/Object;)V &0 1horizontalSpan3org/eclipse/swt/widgets/Label 2 26 78setText(Ljava/lang/String;)V:org/eclipse/jface/text/Document 9 =?> org/eclipse/jface/text/IDocument @8set =B CDaddDocumentListener-(Lorg/eclipse/jface/text/IDocumentListener;)VF*org/eclipse/jface/text/source/SourceViewer EH IU(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/text/source/IVerticalRuler;I)V EK LM setDocument%(Lorg/eclipse/jface/text/IDocument;)V EO PQ getTextWidget%()Lorg/eclipse/swt/custom/StyledText; S TUgetFont!()Lorg/eclipse/swt/graphics/Font; WYX!org/eclipse/swt/custom/StyledText Z[setFont"(Lorg/eclipse/swt/graphics/Font;)V W, ^`_+org/eclipse/egf/common/ui/helper/FormHelper abforceControlSize&(Lorg/eclipse/swt/widgets/Control;II)Vparent_p#Lorg/eclipse/swt/widgets/Composite;label_pLjava/lang/String; tooltip_p initialText_p numColumns_ptextModificationListener_p*Lorg/eclipse/jface/text/IDocumentListener; readOnly_pZ textComposite gridLayout#Lorg/eclipse/swt/layout/GridLayout;textCompositeLayoutData!Lorg/eclipse/swt/layout/GridData;descriptionLabelLorg/eclipse/swt/widgets/Label;document"Lorg/eclipse/jface/text/IDocument;textViewerStyle textViewer,Lorg/eclipse/jface/text/source/SourceViewer; styledText#Lorg/eclipse/swt/custom/StyledText;styledTextLayoutDatacreateCheckBoxFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;ZIIZ)Lorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter;4org/eclipse/egf/common/ui/helper/FieldEditorHelper$1  N(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;ZII)V Dorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter setPage)(Lorg/eclipse/jface/dialogs/DialogPage;)V getValueControl#()Lorg/eclipse/swt/widgets/Control;org/eclipse/swt/widgets/Button 8setToolTipText  setSelection(Z)Vpage_p&Lorg/eclipse/jface/dialogs/DialogPage;labelTooltip_pinitialValue_phorizintalIndent_pverticalIndent_pcheckBoxFieldEditorFLorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter;checkbox Lorg/eclipse/swt/widgets/Button; createGroupX(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;II)Lorg/eclipse/swt/widgets/Group;org/eclipse/swt/widgets/Group  6 Y  horizontalSpacing # & (I)V ,style_pgroupLorg/eclipse/swt/widgets/Group;layoutgdcreateStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;Dorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor ;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor  UNLIMITED M(Ljava/lang/String;Ljava/lang/String;IILorg/eclipse/swt/widgets/Composite;I)V  setValidator<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V getLabel!()Lorg/eclipse/swt/widgets/Label; 2 getTextControl ()Lorg/eclipse/swt/widgets/Text; org/eclipse/swt/widgets/Text  setTextLimit textTooltip_p textLimit_pfieldEditorValidator_p9Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator; fieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;labeltextLorg/eclipse/swt/widgets/Text;createRadioGroupFieldEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;I[[Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor;?org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor `(Ljava/lang/String;Ljava/lang/String;I[[Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Z)V getRadioBoxControlH(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Composite;   setEnabledtitle_plabelAndValues_p[[Ljava/lang/String;ALorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor;createJavaScopeClassFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor; Signature(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class<*>;Z)Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor;4org/eclipse/egf/common/ui/helper/FieldEditorHelper$2 (Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;Z)V 9org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor setEmptyStringAllowed   setEditableopenTypeDialogTitle_p javaProject_p#Lorg/eclipse/jdt/core/IJavaProject;classTypeFilter_pLjava/lang/Class;;Lorg/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor;LocalVariableTypeTableLjava/lang/Class<*>;createJavaClassFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class<*>;Z)Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;4org/eclipse/egf/common/ui/helper/FieldEditorHelper$3  \(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/Class;Z)V  initializeJavaClassFieldEditor(Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;)V classLoader_pLjava/lang/ClassLoader;bundle_pLorg/osgi/framework/Bundle;6Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;createContextElementFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/ContextElementFieldEditor;(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class<*>;Z)Lorg/eclipse/egf/common/ui/field/ContextElementFieldEditor;"4org/eclipse/egf/common/ui/helper/FieldEditorHelper$4 !;Lorg/eclipse/egf/common/ui/field/ContextElementFieldEditor;(Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class<*>;Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;)V '(4org/eclipse/egf/common/ui/field/JavaClassFieldEditor ' ',@org/eclipse/egf/common/ui/internal/validators/JavaClassValidator +. /F(Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;)V ' fieldEditor_pcreateWorkspaceFileEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/field/WorkspaceFileFieldEditor;54org/eclipse/egf/common/ui/helper/FieldEditorHelper$5 47 8(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)V :;8org/eclipse/egf/common/ui/field/WorkspaceFileFieldEditoropenResourceDialogTitle_p container_p'Lorg/eclipse/core/resources/IContainer;filterExtension_p:Lorg/eclipse/egf/common/ui/field/WorkspaceFileFieldEditor;createDomainFieldEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/field/DomainFieldEditor;D4org/eclipse/egf/common/ui/helper/FieldEditorHelper$6 C7 GH1org/eclipse/egf/common/ui/field/DomainFieldEditor G3Lorg/eclipse/egf/common/ui/field/DomainFieldEditor;layoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)V N OP getLayout"()Lorg/eclipse/swt/widgets/Layout; RTS(org/eclipse/jface/preference/FieldEditor U fillIntoGrid*Lorg/eclipse/jface/preference/FieldEditor; SourceFileFieldEditorHelper.java InnerClasses! /* 3  ѻY*:Y:"&Y(:  + /2Y@4:  +59Y;: -  -< A B6 EY   G:   J N:*RV&Y(:\<] rH IKM N&P-R:SATHVVW\Ye[i\q_zbcdefchjkmnpq cdefgfhfijklm ndop:qr V{st eluv Rw 7xy )z{|r }~ 6Y,@*:+:  -  .  &,3 f 6cd66ef6f6m666lm & WY*:+ +*RY:&Y:/ 2 '.4;GMT HWcdWefWWi L'0pGr 6 `Y,*  :+-:  -:    N %,07=BIPV] p `cd``ef`f`f```lmA7t I &Y+-*:* *      # >&cd&f&i&&lm -Y,-*:+ . ./012 3 .;=?*@ R-cd--f-f-- -lm  -    Y,-*:+ 6 XYZ[\ Xefghidk \ cdff lm     !Y,-*#:+ 6   \ cdff lm$   %(*&)*+Y+,--0  ' 4(((( (1 (  234Y+,*-6:9 &   Hcdf<f=>?flm @ AB&CY+,*-E:FI *  # H&cd&f&<f&=>&?f&lmJ KLX*M+*Q   cd1ViWXY2!4C Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FormHelper$LayoutType.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1272 Text-content-md5: 8e78bf43410d0e4fb3afba4a764a1370 Text-content-sha1: f7793c1549ad1b0ca8df9061f75790a1dab06ca7 Content-length: 1331 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 126org/eclipse/egf/common/ui/helper/FormHelper$LayoutTypejava/lang/Enum GRID_LAYOUT8Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType;TABLEWRAP_LAYOUT ENUM$VALUES9[Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType;()VCode  (Ljava/lang/String;I)V       LineNumberTableLocalVariableTable thisvalues;()[Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType; "!java/lang/System #$ arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VvalueOfL(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType; ( %)5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; SourceFileFormHelper.java SignatureJLjava/lang/Enum; InnerClasses0+org/eclipse/egf/common/ui/helper/FormHelper LayoutType@1@@   N.Y YYSYS/ 1*+/   6YK*Y<YM, %& * *'*+,-. /1@ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/FormHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 8418 Text-content-md5: 2d67670ecf54ca66965d9dc3a940232d Text-content-sha1: dce281d8430d440605423d4a65e6aa13264ba69e Content-length: 8477 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1+org/eclipse/egf/common/ui/helper/FormHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis-Lorg/eclipse/egf/common/ui/helper/FormHelper;createCompositeWithLayoutType(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType;IZ)Lorg/eclipse/swt/widgets/Composite; (org/eclipse/ui/forms/widgets/FormToolkit createCompositeH(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Composite;  #updateCompositeLayoutWithLayoutTypeq(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType;IZ)Ljava/lang/Object; toolkit_p*Lorg/eclipse/ui/forms/widgets/FormToolkit;parent_p#Lorg/eclipse/swt/widgets/Composite; layoutType_p8Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType; numColumns_pI equalWidth_pZresult &('6org/eclipse/egf/common/ui/helper/FormHelper$LayoutType ) GRID_LAYOUT &+ ,-equals(Ljava/lang/Object;)Z/!org/eclipse/swt/layout/GridLayout . .2 3! numColumns .5 6#makeColumnsEqualWidth &8 9TABLEWRAP_LAYOUT;,org/eclipse/ui/forms/widgets/TableWrapLayout : :2 :5 @BA!org/eclipse/swt/widgets/Composite CD setLayout#(Lorg/eclipse/swt/widgets/Layout;)V F GH)updateControlLayoutDataWithLayoutTypeDatam(Lorg/eclipse/swt/widgets/Control;Lorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType;)Ljava/lang/Object; composite_pselectedLayout Lorg/eclipse/swt/widgets/Layout;layout#Lorg/eclipse/swt/layout/GridLayout;.Lorg/eclipse/ui/forms/widgets/TableWrapLayout;Porg/eclipse/swt/layout/GridData OR S(IIZZ)VU*org/eclipse/ui/forms/widgets/TableWrapData TW X(I)V Z\[org/eclipse/swt/widgets/Control ]^ setLayoutData(Ljava/lang/Object;)V control_p!Lorg/eclipse/swt/widgets/Control; layoutDataLjava/lang/Object;createSectionWithChildComposite(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;ILorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType;IZ)Lorg/eclipse/egf/common/misc/Couple; Signature(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;ILorg/eclipse/egf/common/ui/helper/FormHelper$LayoutType;IZ)Lorg/eclipse/egf/common/misc/Couple; h ij createSectionL(Lorg/eclipse/swt/widgets/Composite;I)Lorg/eclipse/ui/forms/widgets/Section; l  npo$org/eclipse/ui/forms/widgets/Section qr setClient$(Lorg/eclipse/swt/widgets/Control;)Vt"org/eclipse/egf/common/misc/Couple sv w'(Ljava/lang/Object;Ljava/lang/Object;)VsectionStyle_pchildNumColumns_presultingSection&Lorg/eclipse/ui/forms/widgets/Section;childCompositecreateLabelAndText(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Z)Lorg/eclipse/egf/common/misc/Couple;(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Z)Lorg/eclipse/egf/common/misc/Couple;   createLabelW(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;I)Lorg/eclipse/swt/widgets/Label;   getColors#()Lorg/eclipse/ui/forms/FormColors;org.eclipse.ui.forms.TITLE org/eclipse/ui/forms/FormColors getColor4(Ljava/lang/String;)Lorg/eclipse/swt/graphics/Color; org/eclipse/swt/widgets/Label  setForeground#(Lorg/eclipse/swt/graphics/Color;)Vorg/eclipse/swt/widgets/Text '(Lorg/eclipse/swt/widgets/Composite;I)V OW \ setText(Ljava/lang/String;)VlabelMessage_pLjava/lang/String; initialText_p editable_plabelLorg/eclipse/swt/widgets/Label;textLorg/eclipse/swt/widgets/Text;createLabelTextAndButton(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/events/SelectionListener;)Lorg/eclipse/egf/common/misc/Couple;(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/events/SelectionListener;)Lorg/eclipse/egf/common/misc/Couple;  }~   createButtonX(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;I)Lorg/eclipse/swt/widgets/Button; org/eclipse/swt/widgets/Button addSelectionListener-(Lorg/eclipse/swt/events/SelectionListener;)V s getValue()Ljava/lang/Object; buttonLabel_p listener_p*Lorg/eclipse/swt/events/SelectionListener; labelAndText$Lorg/eclipse/egf/common/misc/Couple;button Lorg/eclipse/swt/widgets/Button;LocalVariableTypeTablecLorg/eclipse/egf/common/misc/Couple;createLinkWithDescription(Lorg/eclipse/ui/forms/widgets/FormToolkit;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/swt/graphics/Image;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Lorg/eclipse/ui/forms/events/IHyperlinkListener;)V  createImageHyperlinkS(Lorg/eclipse/swt/widgets/Composite;I)Lorg/eclipse/ui/forms/widgets/ImageHyperlink; +org/eclipse/ui/forms/widgets/ImageHyperlink setImage#(Lorg/eclipse/swt/graphics/Image;)V ^setHref addHyperlinkListener3(Lorg/eclipse/ui/forms/events/IHyperlinkListener;)Vicon_p Lorg/eclipse/swt/graphics/Image; linkText_p linkRef_plinkDescription_p0Lorg/eclipse/ui/forms/events/IHyperlinkListener;specificationLink-Lorg/eclipse/ui/forms/widgets/ImageHyperlink;forceControlSize&(Lorg/eclipse/swt/widgets/Control;II)Vorg/eclipse/swt/graphics/GC &(Lorg/eclipse/swt/graphics/Drawable;)V getFontMetrics(()Lorg/eclipse/swt/graphics/FontMetrics; dispose Z  getLayoutData  org/eclipse/jface/dialogs/Dialog convertWidthInCharsToPixels*(Lorg/eclipse/swt/graphics/FontMetrics;I)I O ! widthHint convertHeightInCharsToPixels O ! heightHint TwidthInChars_pheightInChars_pgcLorg/eclipse/swt/graphics/GC; fontMetrics&Lorg/eclipse/swt/graphics/FontMetrics;data!Lorg/eclipse/swt/layout/GridData;,Lorg/eclipse/ui/forms/widgets/TableWrapData; SourceFileFormHelper.java InnerClasses LayoutType! /* *  x*+:,W ?@A > !"# $ `:%+*.Y0:14:&7+*:Y<:=>:*?*+EW >QR STU"V)W3X<YBZH[L^Q_W`]b H`I`` !`"#]JKLM<LN GH;M%+*OYQM7+*TYVM,*,Y, "kl mn%o0r4s9u ;_`;9ab cdef/*+g:-EW*-k:msYu * # R///x!//y!/"#'z{| }~eU*+,@:*Y+ :OY- -sYu * +0?CI HUUUUU# K0% e2*+,:*+-: sYu   H22222 (  ( .*+@:-,*+@W  #- R.....b.. %  i* Y*N-:-*:O#O:TT: :  &.5@NV]h Ri_`i!i!SM&Cab5 ]     &@ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/MessageFormatHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 634 Text-content-md5: 88d3ebdefc48fed0df2977ea1b98e91e Text-content-sha1: c5419ab33eaa53bce27bf367384b165773b6f4e0 Content-length: 693 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 14org/eclipse/egf/common/ui/helper/MessageFormatHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/common/ui/helper/MessageFormatHelper; formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; *org/eclipse/egf/common/helper/StringHelper notFormatedMessage_pLjava/lang/String; arguments_p[Ljava/lang/Object; SourceFileMessageFormatHelper.java!/*   :*+   Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 717 Text-content-md5: 1fc862bf75d7161596e69ac879258798 Text-content-sha1: 0ce021e9178731016cb43deb85c7993f44f28a96 Content-length: 776 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)org/eclipse/egf/common/ui/helper/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue )org.eclipse.egf.common.ui.helper.messages&DeleteElementActionConfirmDialog_Title(DeleteElementActionConfirmDialog_MessageOpenEditor_ErrorMessage()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable  this+Lorg/eclipse/egf/common/ui/helper/Messages; SourceFile Messages.java!    , 3* %'  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/ViewerHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 981 Text-content-md5: 83bd822c7a8be0427399a8c19dbaabe1 Text-content-sha1: 057575fd748314ecb0009549a8fc3022cd2e4542 Content-length: 1040 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)-org/eclipse/egf/common/ui/helper/ViewerHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis/Lorg/eclipse/egf/common/ui/helper/ViewerHelper;refresh/(Lorg/eclipse/jface/viewers/StructuredViewer;)V  0(Lorg/eclipse/jface/viewers/StructuredViewer;Z)Vviewer_p,Lorg/eclipse/jface/viewers/StructuredViewer; *org/eclipse/jface/viewers/StructuredViewer  getControl#()Lorg/eclipse/swt/widgets/Control; org/eclipse/swt/widgets/Control   setRedraw(Z)V "  updateLabels_pZcontrol!Lorg/eclipse/swt/widgets/Control; SourceFileViewerHelper.java!/*   4*   %**M,*! N,-,  * ,-0 356898$: %%#$ %&'( Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/WorkbenchHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7789 Text-content-md5: e78f8ab96a88719ba13944c99f3d7a87 Text-content-sha1: 3d9a48e2ed4e4009f490d7a01aeb70021b31988e Content-length: 7848 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1<0org/eclipse/egf/common/ui/helper/WorkbenchHelperjava/lang/Object__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable " this2Lorg/eclipse/egf/common/ui/helper/WorkbenchHelper;getActiveWorkbenchPage!()Lorg/eclipse/ui/IWorkbenchPage; (*)org/eclipse/ui/PlatformUI +, getWorkbench()Lorg/eclipse/ui/IWorkbench; .0/org/eclipse/ui/IWorkbench 12getActiveWorkbenchWindow#()Lorg/eclipse/ui/IWorkbenchWindow; 465org/eclipse/ui/IWorkbenchWindow 7& getActivePageactiveWorkbenchWindow!Lorg/eclipse/ui/IWorkbenchWindow;openFileEditorC(Ljava/lang/String;Ljava/lang/String;Z)Lorg/eclipse/ui/IEditorPart;=org/eclipse/core/runtime/Path <? @(Ljava/lang/String;)V BDC*org/eclipse/core/resources/ResourcesPlugin EF getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; HJI%org/eclipse/core/resources/IWorkspace KLgetRoot-()Lorg/eclipse/core/resources/IWorkspaceRoot; NPO)org/eclipse/core/resources/IWorkspaceRoot QRgetFileD(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IFile;TDorg/eclipse/egf/common/ui/internal/resource/ExtendedUnmodifiableFile SV W#(Lorg/eclipse/core/runtime/IPath;)VY#org/eclipse/ui/part/FileEditorInput X[ \%(Lorg/eclipse/core/resources/IFile;)V .^ _` getDisplay#()Lorg/eclipse/swt/widgets/Display; bdcorg/eclipse/swt/widgets/Display efgetActiveShell!()Lorg/eclipse/swt/widgets/Shell; h ij openEditorl(Lorg/eclipse/ui/IEditorInput;Ljava/lang/String;Lorg/eclipse/swt/widgets/Shell;)Lorg/eclipse/ui/IEditorPart;fileRelativePath_pLjava/lang/String; editorId_p editable_pZfile"Lorg/eclipse/core/resources/IFile;filePath Lorg/eclipse/core/runtime/IPath; u %& wyxorg/eclipse/ui/IWorkbenchPage izM(Lorg/eclipse/ui/IEditorInput;Ljava/lang/String;)Lorg/eclipse/ui/IEditorPart;| org/eclipse/ui/PartInitException~4No active workbench page was found to open an editor {?java/lang/StringBuilder!WorkbenchHelper.openEditor(..) _ ? toString  warn*(Ljava/lang/Object;Ljava/lang/Throwable;)V )org/eclipse/egf/common/ui/helper/Messages lOpenEditor_ErrorMessage {  getMessage 'org/eclipse/jface/dialogs/MessageDialog  openErrorF(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;)V editorInput_pLorg/eclipse/ui/IEditorInput;shell_pLorg/eclipse/swt/widgets/Shell;Lorg/eclipse/ui/IEditorPart;activeWorkbenchPageLorg/eclipse/ui/IWorkbenchPage; exception_p"Lorg/eclipse/ui/PartInitException; loggerMessageLjava/lang/StringBuilder;openDefaultFileEditorO(Ljava/lang/String;Lorg/eclipse/swt/widgets/Shell;)Lorg/eclipse/ui/IEditorPart; . getEditorRegistry"()Lorg/eclipse/ui/IEditorRegistry; org/eclipse/ui/IEditorRegistry getDefaultEditor6(Ljava/lang/String;)Lorg/eclipse/ui/IEditorDescriptor;  org/eclipse/ui/IEditorDescriptor getId  :;editorRegistry Lorg/eclipse/ui/IEditorRegistry; defaultEditor"Lorg/eclipse/ui/IEditorDescriptor; saveEditor(Lorg/eclipse/ui/IEditorPart;)V org/eclipse/ui/IEditorPart isDirty()Z,org/eclipse/core/runtime/NullProgressMonitor " doSave.(Lorg/eclipse/core/runtime/IProgressMonitor;)Veditor_pcloseFileEditors(Ljava/lang/String;)Z&WorkbenchHelper.closeFileEditor(..) _ w getEditorReferences$()[Lorg/eclipse/ui/IEditorReference; org/eclipse/ui/IEditorReference  getEditor(Z)Lorg/eclipse/ui/IEditorPart; getEditorInput()Lorg/eclipse/ui/IEditorInput; org/eclipse/core/resources/IFile org/eclipse/ui/IEditorInput  getAdapter%(Ljava/lang/Class;)Ljava/lang/Object; equals(Ljava/lang/Object;)Z   closeEditor (Lorg/eclipse/ui/IEditorPart;Z)Zjava/lang/Exceptionresult fileToClosee_pLjava/lang/Exception;editorReferences"[Lorg/eclipse/ui/IEditorReference;iI editorPart editorInput wsave_p closeView w findView.(Ljava/lang/String;)Lorg/eclipse/ui/IViewPart; w hideView(Lorg/eclipse/ui/IViewPart;)VviewId_pviewPartLorg/eclipse/ui/IViewPart;openView w  showView WorkbenchHelper.openView(..) _  isViewOpenaddPartListener!(Lorg/eclipse/ui/IPartListener;)V w  listener_pLorg/eclipse/ui/IPartListener;getAllOpenEditors6(Ljava/lang/String;)[Lorg/eclipse/ui/IEditorReference;java/util/ArrayList  (I)V java/lang/String ! "add $ %&size()I ( )*toArray(([Ljava/lang/Object;)[Ljava/lang/Object; openEditorsLjava/util/ArrayList; activePageallEditorReferenceseditorReference!Lorg/eclipse/ui/IEditorReference;LocalVariableTypeTable8Ljava/util/ArrayList;getPackageExplorerView?()Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;7"org.eclipse.jdt.ui.PackageExplorer9;org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart SourceFileWorkbenchHelper.java! 3  2-  /*!- #$ %& L'-K* *3; < =?  89 :; O*+N:AGMN SYUNXY-Z+']ag"JK N OPQ-S7U4OklOmlOno Cpq9rs ij UN*+-t:*+vN3{Y}:Y:,- --{2 _a b efg#i-k/l:mGnSpHUUmlUSi/$:  )*'M,*N-*-z{~'*)kl)  I**Yƹ     <*tMNAGMN:Yη:,-<,:6C2::%޹:- ~<$'Z ')4AIKMU[hqvp klo q)4 UPXKh0q'pq  ]tM, ,* o @ s*tL+*M, +,  l   @ ,*tL+* WMY N-, {"  +*,l #   f*tL++* l   PtL+ +*    VYLtM,N-Y:66"2:* + W++#ն'+"  (6=G4Vml M,- I.B/(012  M,3 45 MtK**68()*, :; Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/helper/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 748 Text-content-md5: 6e7d0cc0c15baacdadf57274ff88e9b8 Text-content-sha1: b95be8d36371b44237f6ba0eaf96f4f3440436d2 Content-length: 758 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### DeleteElementActionConfirmDialog_Title=Confirm delete DeleteElementActionConfirmDialog_Message=Are you sure you want to delete {0} ''{1}''? OpenEditor_ErrorMessage=Opening an editor Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/field Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2256 Text-content-md5: d9d018a90fff3546ca9743bbd9557be9 Text-content-sha1: 32cdf14bcc4e5a2302fa9081da24dedc504cbc8a Content-length: 2315 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1cMorg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension$1java/lang/Object3org/eclipse/jdt/ui/dialogs/ITypeInfoFilterExtensionthis$0MLorg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension;P(Lorg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension;)VCode    ()VLineNumberTableLocalVariableTablethisOLorg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension$1;select2(Lorg/eclipse/jdt/ui/dialogs/ITypeInfoRequestor;)Zjava/lang/StringBuilder -org/eclipse/jdt/ui/dialogs/ITypeInfoRequestor getPackageName()Ljava/lang/String;  !(Ljava/lang/String;)V # $%append(C)Ljava/lang/StringBuilder; ' ( getTypeName * $+-(Ljava/lang/String;)Ljava/lang/StringBuilder; -/.Korg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension 01 _javaProject#Lorg/eclipse/jdt/core/IJavaProject; 3 4toString 687!org/eclipse/jdt/core/IJavaProject 9:findType0(Ljava/lang/String;)Lorg/eclipse/jdt/core/IType; <>=org/eclipse/jdt/core/IType ?@getSuperInterfaceNames()[Ljava/lang/String; -B CD_classTypeFilterLjava/lang/Class; FHGjava/lang/Class IgetName KMLjava/lang/String NOequals(Ljava/lang/Object;)ZQ'org/eclipse/jdt/core/JavaModelExceptiontypeInfoRequestor_p/Lorg/eclipse/jdt/ui/dialogs/ITypeInfoRequestor;fqnLjava/lang/StringBuilder;typeLorg/eclipse/jdt/core/IType;iLjava/lang/String;jme)Lorg/eclipse/jdt/core/JavaModelException; SourceFile'FilteredJavaTypeSelectionExtension.javaEnclosingMethod `agetFilterExtension7()Lorg/eclipse/jdt/ui/dialogs/ITypeInfoFilterExtension; InnerClasses   8 *+ * @   pY+."+&)M* ,,25N-@-;Y:66!2:* AEJާN\kP^hkPFGH G JILKFO-P1QJR\S^QkWlXnZ>ppRSTTU->VWJXYlZ[\]^-_b  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2215 Text-content-md5: be980a284ff27c30fda98e382b74051b Text-content-sha1: 01d234b0c65d730c3a8360c42dea88bd6630dc91 Content-length: 2274 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1\Korg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension1org/eclipse/jdt/ui/dialogs/TypeSelectionExtension__loggerLorg/apache/log4j/Logger;_classTypeFilterLjava/lang/Class; SignatureLjava/lang/Class<*>; _javaProject#Lorg/eclipse/jdt/core/IJavaProject;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger ! getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; # LineNumberTableLocalVariableTable7(Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class;)V:(Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/Class<*>;)V * & ,.-org/eclipse/core/runtime/Assert /0 isNotNull(Ljava/lang/Object;)V 2 4 thisMLorg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension; javaProject_pclassTypeFilter_pLocalVariableTypeTablegetFilterExtension7()Lorg/eclipse/jdt/ui/dialogs/ITypeInfoFilterExtension;=Morg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension$1 <? &@P(Lorg/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension;)VimplementInterface&(Ljava/lang/Class;Ljava/lang/String;)Z)(Ljava/lang/Class<*>;Ljava/lang/String;)Z E FG getInterfaces()[Ljava/lang/Class;  JLKjava/lang/String MNequals(Ljava/lang/Object;)Z P QR getSuperclass()Ljava/lang/Class; T ABclazz interfaceNameLjava/lang/String; interfaces SourceFile'FilteredJavaTypeSelectionExtension.java InnerClasses!    3"$ $%&' ({*)++,+*+1*,3$456 789% 567 89 8 :;3 $@%  56 AB C=*+*DY:6>2M+,HI*O+S$ab de)f+d4i% =U=VW X9=U  X YZ[ < Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1987 Text-content-md5: e7a0018d4cc15ee58d004102fdb2e83c Text-content-sha1: 8f74f39df3da7d0faf1cfa5d1a8151236cd15af4 Content-length: 2046 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1VIorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension$1java/lang/Object3org/eclipse/jdt/ui/dialogs/ITypeInfoFilterExtensionthis$0ILorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension;L(Lorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension;)VCode    ()VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension$1;select2(Lorg/eclipse/jdt/ui/dialogs/ITypeInfoRequestor;)Zjava/lang/StringBuilder -org/eclipse/jdt/ui/dialogs/ITypeInfoRequestor getPackageName()Ljava/lang/String;  !(Ljava/lang/String;)V # $%append(C)Ljava/lang/StringBuilder; ' ( getTypeName * $+-(Ljava/lang/String;)Ljava/lang/StringBuilder; - .toString 021Gorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension 34 _classLoaderLjava/lang/ClassLoader; 6870org/eclipse/egf/common/helper/ClassLoadingHelper 9: instantiate=(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Object; 0< =>_classTypeFilterLjava/lang/Class; @BAjava/lang/Class CD isInstance(Ljava/lang/Object;)ZtypeInfoRequestor_p/Lorg/eclipse/jdt/ui/dialogs/ITypeInfoRequestor;resultZclassNameBuilderLjava/lang/StringBuilder; classNameLjava/lang/String;objectLjava/lang/Object; SourceFile#FilteredTypeSelectionExtension.javaEnclosingMethod STgetFilterExtension7()Lorg/eclipse/jdt/ui/dialogs/ITypeInfoFilterExtension; InnerClasses   8 *+ * :   J=Y+."+&)N-,:* /5:* ;?=:?BC BEDGFAJ$K2MFOHQ>JJEFHGH,IJ$&KL2MNOPQ0RU  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1541 Text-content-md5: 7ef84f2026a7375554da00e02dd567fd Text-content-sha1: 4d5f2b76df4b736063674f42c14245b031557c9f Content-length: 1600 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?Gorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension1org/eclipse/jdt/ui/dialogs/TypeSelectionExtension__loggerLorg/apache/log4j/Logger; _classLoaderLjava/lang/ClassLoader;_classTypeFilterLjava/lang/Class; SignatureLjava/lang/Class<*>;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger ! getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; # LineNumberTableLocalVariableTable+(Ljava/lang/ClassLoader;Ljava/lang/Class;)V.(Ljava/lang/ClassLoader;Ljava/lang/Class<*>;)V * & ,  . thisILorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension; classLoader_pclassTypeFilter_pLocalVariableTypeTablegetFilterExtension7()Lorg/eclipse/jdt/ui/dialogs/ITypeInfoFilterExtension;7Iorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension$1 69 &:L(Lorg/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension;)V SourceFile#FilteredTypeSelectionExtension.java Deprecated InnerClasses!    3"$  %&' (k*)*++*,-$01 23% /012 3 2 453 6Y*8$:%  /0;<=> 6 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1296 Text-content-md5: 7e8e74122d05fe3141fe06a87bbf3618 Text-content-sha1: 8bde33c7ec22cb94ca22cee11cce1da36a33542c Content-length: 1355 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.>org/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper$1java/lang/Objectjava/lang/Runnablethis$0>Lorg/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper; val$result#[Lorg/eclipse/core/runtime/IStatus; val$file_p"Lorg/eclipse/core/resources/IFile; val$display!Lorg/eclipse/swt/widgets/Display;(Lorg/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper;[Lorg/eclipse/core/runtime/IStatus;Lorg/eclipse/core/resources/IFile;Lorg/eclipse/swt/widgets/Display;)VCode        ()VLineNumberTableLocalVariableTablethis@Lorg/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper$1;run #%$()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable $ " this>Lorg/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper;makeFileWritableF(Lorg/eclipse/core/resources/IFile;)Lorg/eclipse/core/runtime/IStatus;* org/eclipse/core/runtime/IStatus ,.-org/eclipse/core/runtime/Status /0 CANCEL_STATUS"Lorg/eclipse/core/runtime/IStatus; 243org/eclipse/ui/PlatformUI 56isWorkbenchRunning()Z 28 9: getWorkbench()Lorg/eclipse/ui/IWorkbench; <>=org/eclipse/ui/IWorkbench ?@ getDisplay#()Lorg/eclipse/swt/widgets/Display;B>org/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper$1 AD "E(Lorg/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper;[Lorg/eclipse/core/runtime/IStatus;Lorg/eclipse/core/resources/IFile;Lorg/eclipse/swt/widgets/Display;)V GIHorg/eclipse/swt/widgets/Display JKsyncExec(Ljava/lang/Runnable;)V MONjava/lang/Runnable P runfile_p"Lorg/eclipse/core/resources/IFile;result#[Lorg/eclipse/core/runtime/IStatus;display!Lorg/eclipse/swt/widgets/Display;makeFileWritableRunnableLjava/lang/Runnable;X(Lorg/eclipse/core/resources/IFile;Ljava/lang/Object;)Lorg/eclipse/core/runtime/IStatus; []\ org/eclipse/core/resources/IFile ^6exists ,` a0 OK_STATUS Gc degetActiveShell!()Lorg/eclipse/swt/widgets/Shell; gih%org/eclipse/core/resources/IWorkspace jkVALIDATE_PROMPTLjava/lang/Object; mon*org/eclipse/core/resources/ResourcesPlugin pq getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; gs tu validateEditY([Lorg/eclipse/core/resources/IFile;Ljava/lang/Object;)Lorg/eclipse/core/runtime/IStatus; )w x6isOKzjava/lang/StringBuilder|*UserEnforcedHelper.makeFileWritable(..) _ y~ "(Ljava/lang/String;)VCould not make y append-(Ljava/lang/String;)Ljava/lang/StringBuilder; [  getFullPath"()Lorg/eclipse/core/runtime/IPath; y -(Ljava/lang/Object;)Ljava/lang/StringBuilder; writable ! y toString  error(Ljava/lang/Object;)V display_pshellLorg/eclipse/swt/widgets/Shell;context loggerMessageLjava/lang/StringBuilder; SourceFileUserEnforcedHelper.java InnerClasses!  3  #!"  /*# ! %&'( C)Y+SM17;NAY*,+-C:- -F L,2 ) ,.+4/689?;!4C%&CQR 8ST%UV+WX'Y !+N+-+Z_:,G ,Gb: f:l[Y+SrN-v/yY{}:+W- >BDE HILN!P*T9VLWUX`YvZ\!H%&QRkS0i9Jk`! A Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/resource Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/resource/ExtendedUnmodifiableFile.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1297 Text-content-md5: 4725f9b275c54d127d76a6b103f5ef9c Text-content-sha1: fbce5bc3757cefa26c680b356535012f47fa8b3a Content-length: 1356 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 14Dorg/eclipse/egf/common/ui/internal/resource/ExtendedUnmodifiableFile(org/eclipse/core/internal/resources/File#(Lorg/eclipse/core/runtime/IPath;)VCode  *org/eclipse/core/resources/ResourcesPlugin  getWorkspace)()Lorg/eclipse/core/resources/IWorkspace;-org/eclipse/core/internal/resources/Workspace  R(Lorg/eclipse/core/runtime/IPath;Lorg/eclipse/core/internal/resources/Workspace;)VLineNumberTableLocalVariableTablethisFLorg/eclipse/egf/common/ui/internal/resource/ExtendedUnmodifiableFile;path_p Lorg/eclipse/core/runtime/IPath; getContents(Z)Ljava/io/InputStream; Exceptions&org/eclipse/core/runtime/CoreException  ! getFullPath"()Lorg/eclipse/core/runtime/IPath; #%$org/eclipse/core/runtime/IPath &'toString()Ljava/lang/String; )+*(org/eclipse/egf/common/helper/FileHelper ,-readFileAsStream)(Ljava/lang/String;)Ljava/io/InputStream;force_pZ isReadOnly()Z SourceFileExtendedUnmodifiableFile.java!D *+ # $  A *"(+  ./01,3 23 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/validators Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/validators/JavaClassValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2390 Text-content-md5: 049a69d9b455d4c70b8579d4ad7cea5f Text-content-sha1: 06436d104d7bc74a2ce5614bf26f853fab2314f0 Content-length: 2449 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1e@org/eclipse/egf/common/ui/internal/validators/JavaClassValidatorDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator _classLoaderLjava/lang/ClassLoader;_bundleLorg/osgi/framework/Bundle;_expectedClassTypeLjava/lang/Class; SignatureLjava/lang/Class<*>;F(Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;)VI(Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class<*>;)VCode 6org/eclipse/egf/common/ui/internal/validators/Messages ,JavaClassValidator_Error_Message_EMPTY_CLASSLjava/lang/String;  (Ljava/lang/String;)V      LineNumberTableLocalVariableTablethisBLorg/eclipse/egf/common/ui/internal/validators/JavaClassValidator; classLoader_pbundle_pexpectedClassType_pLocalVariableTypeTableisValid&(Ljava/lang/Object;)Ljava/lang/String; + ()-java/lang/String /100org/eclipse/egf/common/helper/ClassLoadingHelper 23 instantiate=(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Object; 576*org/eclipse/egf/common/helper/BundleHelper 28A(Ljava/lang/String;Lorg/osgi/framework/Bundle;)Ljava/lang/Object;:java/lang/StringBuilder < =/JavaClassValidator_Error_Message_UNABLE_TO_LOAD ,? @)valueOf 9 9C DEappend-(Ljava/lang/Object;)Ljava/lang/StringBuilder; 9G HItoString()Ljava/lang/String; KMLjava/lang/Class NO isInstance(Ljava/lang/Object;)Z 9Q R()V T U,JavaClassValidator_Error_Message_INSTANCE_OF 9W DX-(Ljava/lang/String;)Ljava/lang/StringBuilder; KZ [IgetNamevalue_pLjava/lang/Object; errorMessageobjectsetExpectedClassType(Ljava/lang/Class;)V(Ljava/lang/Class<*>;)V SourceFileJavaClassValidator.java!     **+*,*- 56 789!*"#$%& ' & ()}*+*M,tN*+,*.N*+,*4N-9Y;>A+BFM-*-J"9YP+BSV*YVFM, 2 @A C DE"F)G5J9KQM\N{R!*}"#}\]w^ o_]`a bP*+ Z[!"#& ' & cd Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/validators/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 790 Text-content-md5: 0ef859b0b42fa391a1003a73a7845d7e Text-content-sha1: 03584afde6e308afab9141b9a86a5643775100b1 Content-length: 849 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 16org/eclipse/egf/common/ui/internal/validators/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue 6org.eclipse.egf.common.ui.internal.validators.messages,JavaClassValidator_Error_Message_EMPTY_CLASS,JavaClassValidator_Error_Message_INSTANCE_OF/JavaClassValidator_Error_Message_UNABLE_TO_LOAD()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable  this8Lorg/eclipse/egf/common/ui/internal/validators/Messages; SourceFile Messages.java!    , 3* #%  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/internal/validators/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 622 Text-content-md5: 7960e4a554b5a815a5215816323ceb46 Text-content-sha1: d8c63ed7eaef97fbe885b5d27a780e1bfa29f4bd Content-length: 632 PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## JavaClassValidator_Error_Message_EMPTY_CLASS=A Java class must be entered JavaClassValidator_Error_Message_INSTANCE_OF=\ is not an instance of JavaClassValidator_Error_Message_UNABLE_TO_LOAD=Unable to load Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/resource Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/resource/BasicImageRegistry$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 830 Text-content-md5: 6fe9e0a4787d58c5987845da666e87a0 Text-content-sha1: f96cba5da51e1ac3487d76be6a96227a10d87251 Content-length: 889 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1"7org/eclipse/egf/common/ui/resource/BasicImageRegistry$1java/lang/Objectjava/lang/Runnablethis$07Lorg/eclipse/egf/common/ui/resource/BasicImageRegistry;:(Lorg/eclipse/egf/common/ui/resource/BasicImageRegistry;)VCode    ()VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/common/ui/resource/BasicImageRegistry$1;run 5org/eclipse/egf/common/ui/resource/BasicImageRegistry handleDisplayDisposedEvent SourceFileBasicImageRegistry.javaEnclosingMethod  hookDisplayDispose$(Lorg/eclipse/swt/widgets/Display;)V InnerClasses   8 *+ * c   6*  ef !  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/resource/BasicImageRegistry.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2902 Text-content-md5: ee462d31206493c36744f14bf9991e06 Text-content-sha1: 7821683bf50e8f1c346579ec75e684242c2111d3 Content-length: 2961 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 15org/eclipse/egf/common/ui/resource/BasicImageRegistryjava/lang/Object __instance7Lorg/eclipse/egf/common/ui/resource/BasicImageRegistry; _registryLjava/util/Map; Signature]Ljava/util/Map;()VCode     LineNumberTableLocalVariableTable org/eclipse/ui/PlatformUI  getWorkbench()Lorg/eclipse/ui/IWorkbench; org/eclipse/ui/IWorkbench   getDisplay#()Lorg/eclipse/swt/widgets/Display; " #$(Lorg/eclipse/swt/widgets/Display;)Vthis 'java/util/HashMap &) *(I)V ,  . /#hookDisplayDispose display_p!Lorg/eclipse/swt/widgets/Display; getInstance9()Lorg/eclipse/egf/common/ui/resource/BasicImageRegistry;getImageN(Lorg/eclipse/jface/resource/ImageDescriptor;)Lorg/eclipse/swt/graphics/Image; 798 java/util/Map :;get&(Ljava/lang/Object;)Ljava/lang/Object;=org/eclipse/swt/graphics/Image ?A@*org/eclipse/jface/resource/ImageDescriptor BC createImage"()Lorg/eclipse/swt/graphics/Image; 7E FGput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;imageDescriptor_p,Lorg/eclipse/jface/resource/ImageDescriptor;result Lorg/eclipse/swt/graphics/Image;remove 7N L;P7org/eclipse/egf/common/ui/resource/BasicImageRegistry$1 OR S:(Lorg/eclipse/egf/common/ui/resource/BasicImageRegistry;)V UWVorg/eclipse/swt/widgets/Display XY disposeExec(Ljava/lang/Runnable;)VdisplayhandleDisplayDisposedEvent 7] ^_values()Ljava/util/Collection; acbjava/util/Collection deiterator()Ljava/util/Iterator; gihjava/util/Iterator jknext()Ljava/lang/Object; <m no isDisposed()Z <q r dispose gt uohasNext 7w x clearentriesLjava/util/Iterator; currentImageLocalVariableTypeTable6Ljava/util/Iterator; SourceFileBasicImageRegistry.java InnerClasses!     / Y    ; *! * +  $# V*%*&Y(+*+-2356$01 23 $>45 y'M*++6M*++,DW,GIKLN%P '$'HI%JKL5 B*++M<Z$HI/# E +OY*QT c h $ Z1[  C*+\`L+fJ(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VCode       LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter;name_plabel_pparent_pK(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;)V !  labelText_pstyle_pIgetLabel!()Lorg/eclipse/swt/widgets/Label; ( )&getLabelControlgetValueControl#()Lorg/eclipse/swt/widgets/Control; - ./getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button;getHelperControlgetErrorMessage()Ljava/lang/String; getFieldName 5 62getPreferenceName getFieldPage(()Lorg/eclipse/jface/dialogs/DialogPage; : ;8getPage getValidator;()Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator; isFocused()Z A *+ C 0+ EGForg/eclipse/swt/widgets/Control H?isFocusControl valueControl!Lorg/eclipse/swt/widgets/Control; helperControlfocusedZisHelperEnabled EP Q? isEnabledenabled defaultLayout()V VXWorg/eclipse/swt/widgets/Label YZ getParent%()Lorg/eclipse/swt/widgets/Composite; \^]!org/eclipse/swt/widgets/Composite _` getLayout"()Lorg/eclipse/swt/widgets/Layout;b!org/eclipse/swt/layout/GridLayout ad e$ numColumns g hi fillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)Vparentlayout#Lorg/eclipse/swt/layout/GridLayout;(I)V o pmadjustForNumColumns numColumns_p setFieldPage)(Lorg/eclipse/jface/dialogs/DialogPage;)V u vssetPagepage_p&Lorg/eclipse/jface/dialogs/DialogPage; setValidator<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V validator_psetHelperEnabled(Z)V E } setEnabled enabled_pisValueEnabledsetValueEnabled SourceFileBooleanFieldEditorAdapter.java!   x*+,-****-, #&-.*   *+, ****4 #&564 " #$%&/*'< *+3 **,C  0+,L 12/*S 32/*4Z 78/*9a <=/*h >?"*@L*BM>++D>, ,D>"op q rsuv x*"IJ KJ LMN?`<*BM,,O<  RM KJSTd*'UL+[aM*+,cf j klkm>*n q$rs>*+t wxyz>*+ { |}Y*BM,,~  M KJ?`<*@M,,O<  RM IJ}Y*@M,,~  M IJ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/adapters/StringButtonFieldEditorAdapter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6256 Text-content-md5: d8077034697d986a89ac68096dbe9aec Text-content-sha1: 4fc2f3d45528a9d1970a52015fd92ab54b97aa6d Content-length: 6315 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Iorg/eclipse/egf/common/ui/toolkit/adapters/StringButtonFieldEditorAdapter4org/eclipse/jface/preference/StringButtonFieldEditor5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor _labelStyleI _valueStyle_parent#Lorg/eclipse/swt/widgets/Composite; _validator9Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;J(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VCode  L(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;II)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/common/ui/toolkit/adapters/StringButtonFieldEditorAdapter;name_pLjava/lang/String; labelText_pparent_p  ()V   "  $ %&init)(Ljava/lang/String;Ljava/lang/String;II)V ( )* createControl&(Lorg/eclipse/swt/widgets/Composite;)V labelStyle_p valueStyle_p doCheckState()Z 0 -. 2 4 56getStringValue()Ljava/lang/String; 8:97org/eclipse/egf/common/ui/toolkit/validators/IValidator ;<isValid&(Ljava/lang/Object;)Ljava/lang/String; > ?@setErrorMessage(Ljava/lang/String;)VZ errorMessage checkState E ;. G H.isEmptyStringAllowed J KLgetTextControl ()Lorg/eclipse/swt/widgets/Text; NPOorg/eclipse/swt/widgets/Text Q6getText SUTjava/lang/String V6trim SX YZlength()I 0 ] ^clearErrorMessage ` a6getErrorMessage c d@showErrorMessageresultwasValidemptyStringAllowed textFieldLorg/eclipse/swt/widgets/Text;txt lnmorg/eclipse/core/runtime/Assert op isNotNull(Ljava/lang/Object;)V r stcheckLabelStyle(I)I v wtcheckValueStyle y z@ setLabelText | }@setPreferenceNametext_pnewStyle  !org/eclipse/swt/layout/GridLayout   ZgetNumberOfControls  numColumns horizontalSpacing !org/eclipse/swt/widgets/Composite  setLayout#(Lorg/eclipse/swt/widgets/Layout;)V  doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)Vlayout#Lorg/eclipse/swt/layout/GridLayout;  numColumns_p changePressedgetLabel!()Lorg/eclipse/swt/widgets/Label;  getLabelControlgetValueControl#()Lorg/eclipse/swt/widgets/Control;getHelperControl  getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; defaultLayout org/eclipse/swt/widgets/Label  getParent%()Lorg/eclipse/swt/widgets/Composite;  getLayout"()Lorg/eclipse/swt/widgets/Layout;   fillIntoGridparent getFieldName  6getPreferenceName getFieldPage(()Lorg/eclipse/jface/dialogs/DialogPage;  getPage getValidator;()Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator; isFocused   org/eclipse/swt/widgets/Control .isFocusControl valueControl!Lorg/eclipse/swt/widgets/Control; helperControlfocusedisHelperEnabled . isEnabledenabledisValueEnabled(I)V  adjustForNumColumns setFieldPage)(Lorg/eclipse/jface/dialogs/DialogPage;)V  setPagepage_p&Lorg/eclipse/jface/dialogs/DialogPage;setHelperEnabled(Z)V  setEnabled enabled_p setValidator<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V validator_psetValueEnabledsetFocus . SourceFile#StringButtonFieldEditorAdapter.java!   X *+,-@ > ?*      **@*!*+,#*-'J% (QRS>      + ,-./*/<*1$*1*37M,<*,=[\ ^`$b(c-f /*;ABC. c<*D=*F><*I:M:RW <*[~< *\*_:*bFnpr stvwxz&{;}BJQU[aHcaeA\fA WgAKhi&=j[B%&&+k,k**q**u!*,x*+{ %4&&&~&+&,sty=~@~@="  +wt6,)***+YM,*,+,*+,  ) **  I*+   6/* /*I 3 **  d*L+M*+,   6/* /* /*1 ."*L*M>++>, ,Ȁ>"    *"  A.`<*M,,<   A .`<*M,,<'() *, A >*ر 34>*+ݱ :;Y*M,,AB CE A >*+1 KL Y*M,,RS TV A O*L++W]^ _a  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/AbstractFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6354 Text-content-md5: ad4a5a11abbd822e648fc1d41611354e Text-content-sha1: bb56ff8f2891647079d211eb078ba6ad83bf0931 Content-length: 6413 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1()VCode         LineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/common/ui/toolkit/fields/AbstractFieldEditor;J(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)V ! "L(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;II)Vname_p labelText_pparent_p#Lorg/eclipse/swt/widgets/Composite; ( )*init)(Ljava/lang/String;Ljava/lang/String;II)V , -. createControl&(Lorg/eclipse/swt/widgets/Composite;)V labelStyle_p valueStyle_p 243org/eclipse/core/runtime/Assert 56 isNotNull(Ljava/lang/Object;)V 8 9:checkLabelStyle(I)I < =:checkValueStyle ? @AsetPreferenceName(Ljava/lang/String;)V C DA setLabelTexttext_pnewStyleH!org/eclipse/swt/layout/GridLayout G K LMgetNumberOfControls()I GO P numColumns GR ShorizontalSpacing UWV!org/eclipse/swt/widgets/Composite XY setLayout#(Lorg/eclipse/swt/widgets/Layout;)V [ \]doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)Vlayout#Lorg/eclipse/swt/layout/GridLayout;getLabelControlD(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Label; c `aeorg/eclipse/swt/layout/GridData d dh ihorizontalAlignment kmlorg/eclipse/swt/widgets/Label n6 setLayoutData kr st setAlignment(I)VlabelLorg/eclipse/swt/widgets/Label;gd!Lorg/eclipse/swt/layout/GridData; alignementsetErrorMessage message_pgetValue5(Lorg/eclipse/swt/widgets/Control;)Ljava/lang/Object;getLabel!()Lorg/eclipse/swt/widgets/Label;  `getValueControl#()Lorg/eclipse/swt/widgets/Control;getHelperControlgetErrorMessage()Ljava/lang/String; getValidator;()Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator; setValidator<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V validator_pisValid()Z   |} 7org/eclipse/egf/common/ui/toolkit/validators/IValidator &(Ljava/lang/Object;)Ljava/lang/String;  getPage(()Lorg/eclipse/jface/dialogs/DialogPage; $org/eclipse/jface/dialogs/DialogPage  AshowErrorMessage  clearErrorMessageZcontrol!Lorg/eclipse/swt/widgets/Control;valueLjava/lang/Object; oldMessage doCheckState   getFieldName  getPreferenceName getFieldPage setFieldPage)(Lorg/eclipse/jface/dialogs/DialogPage;)V  setPagepage_p&Lorg/eclipse/jface/dialogs/DialogPage;isHelperEnabled  org/eclipse/swt/widgets/Control  isEnabledenabled helperControlsetHelperEnabled(Z)V  setEnabled enabled_pisValueEnabled valueControlsetValueEnabledsetFocus  isFocused isFocusControlfocused defaultLayout k  getParent%()Lorg/eclipse/swt/widgets/Composite; U  getLayout"()Lorg/eclipse/swt/widgets/Layout;  ] fillIntoGridparent  tadjustForNumColumns numColumns_p SourceFileAbstractFieldEditor.java!   Y**@***3% (+.5 X *+,-@  ? @*  #  $  %&"***@****+,'*-+"K% (+.L$M)N>**# *$ *%&*/*0)*&+1,1**7**;*+>*,BXY[\^ _%`4&&# &E &/&09:y=~@~@="efg ijlmo /F=:6y0-.w%GYIM,*JN,Q+,T*+,NZ$ %%%&^_`aA*+bMdYfN-g,-jo*~6 p*~6@6,q,. !&/49?4AA%&;uv3wx! yzA>*+ { \]|}~/* /* /* >*+  k<*c*M*,N*:**-*<*0*****6  (5<JUei4ki[UO /* /* /*  >*+ `<*M,,<    Y*M,,Ʊ'( )+  `<*M,,<123 46  Y*M,,Ʊ=> ?A  O*L++WHI JL "*L*M>++>, ,р>"RS T UVXY [*"  d*L+GM*+,Nޱbcde & ^_^t>* kl Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1154 Text-content-md5: 139e1674f1643f8ac23eacc639f32a13 Text-content-sha1: a93d68d117f1e33a45afa6e3cf15ea4bddb1aeb4 Content-length: 1213 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1,Aorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor$1java/lang/Object.org/eclipse/jface/util/IPropertyChangeListenerthis$0ALorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor;D(Lorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethisCLorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor$1;propertyChange/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V *org/eclipse/jface/util/PropertyChangeEvent  getNewValue()Ljava/lang/Object;  ?org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor !"_selectedRadioButtonValueLjava/lang/Object;event_p,Lorg/eclipse/jface/util/PropertyChangeEvent; SourceFileCRadioGroupFieldEditor.javaEnclosingMethod )* initialize'(Lorg/eclipse/swt/widgets/Composite;Z)V InnerClasses   8 *+ * Y   D * + ^ _  #$%&'(+  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3027 Text-content-md5: fa94a716600da4a43348a3a1b3bdf14a Text-content-sha1: 490a91b012521cb8aacd9fe276f399c70cc6def3 Content-length: 3086 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1t?org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor2org/eclipse/jface/preference/RadioGroupFieldEditor_selectedRadioButtonValueLjava/lang/Object;_parent#Lorg/eclipse/swt/widgets/Composite; _useGroupZ_(Ljava/lang/String;Ljava/lang/String;I[[Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VCode    initialize'(Lorg/eclipse/swt/widgets/Composite;Z)VLineNumberTableLocalVariableTablethisALorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor;name_pLjava/lang/String; labelText_p numColumns_pIlabelAndValues_p[[Ljava/lang/String;parent_p`(Ljava/lang/String;Ljava/lang/String;I[[Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Z)V "  useGroup_p%Aorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor$1 $' (D(Lorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor;)V * +,setPropertyChangeListener3(Lorg/eclipse/jface/util/IPropertyChangeListener;)V .  0 selectRadioButtonFor(Ljava/lang/Object;)V 4 56getRadioBoxControlH(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Composite; 8:9!org/eclipse/swt/widgets/Composite ;< getChildren$()[Lorg/eclipse/swt/widgets/Control;>org/eclipse/swt/widgets/Button =@ ABgetData()Ljava/lang/Object; DFEjava/lang/Object GHequals(Ljava/lang/Object;)Z =J KL setSelection(Z)V N value_pradioButtonGroupbuttons"[Lorg/eclipse/swt/widgets/Control;control!Lorg/eclipse/swt/widgets/Control; radioButton Lorg/eclipse/swt/widgets/Button;radioButtonValuegetSelectedRadioButtondoFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V\org/eclipse/swt/layout/GridData [^ _()V [a bhorizontalAlignment [d ehorizontalSpan gihorg/eclipse/swt/widgets/Control j2 setLayoutData l YZparent numColumnsgd!Lorg/eclipse/swt/layout/GridData; SourceFileCRadioGroupFieldEditor.java InnerClasses!   w*+,*; <=>  *+,!*P QRH#  i*$Y*&)*+-*/XY X cef # 12  ^+**-3M,7N-Y:6692:=:?: + CI* M IƱ6 nortv'w.y5z>|D~MSv]H^^OPPKQR',ST.%UV5W XB /*M YZ 2*/'*+3N[Y]:`c-f *+k" "+1422m2n STopqrs $ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 967 Text-content-md5: 54e4ca1638885ddbd1a9451e9999062c Text-content-sha1: dc26e1345edf567d454062eadb42a101529225a5 Content-length: 1026 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$1!org/eclipse/swt/events/KeyAdapterthis$0=Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;@(Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$1; keyReleased$(Lorg/eclipse/swt/events/KeyEvent;)V ;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor  valueChangedevent_p!Lorg/eclipse/swt/events/KeyEvent; SourceFileCStringFieldEditor.javaEnclosingMethod !getTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; InnerClasses  8 *+ *  ;   @*  >?"  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1000 Text-content-md5: a54372637a035453eec1b1d6f2eb0f61 Text-content-sha1: 2826efeefe1ed2c66d48f2bb82de3051d79f859c Content-length: 1059 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1%=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$2java/lang/Object%org/eclipse/swt/events/ModifyListenerthis$0=Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;@(Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$2; modifyText'(Lorg/eclipse/swt/events/ModifyEvent;)V ;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor  valueChangedevent_p$Lorg/eclipse/swt/events/ModifyEvent; SourceFileCStringFieldEditor.javaEnclosingMethod "#getTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; InnerClasses   8 *+ * C   @*  EF !$  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 962 Text-content-md5: c709085b467c51394d467c8d50673619 Text-content-sha1: d296583891d791086bd9a7af97dcbdf6c9c4aae9 Content-length: 1021 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$3!org/eclipse/swt/events/KeyAdapterthis$0=Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;@(Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$3; keyPressed$(Lorg/eclipse/swt/events/KeyEvent;)V ;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor access$0event_p!Lorg/eclipse/swt/events/KeyEvent; SourceFileCStringFieldEditor.javaEnclosingMethod !getTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; InnerClasses  8 *+ *  J   @*  NO"  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1125 Text-content-md5: 2a7ce273f417960c9c5db5d833d912a3 Text-content-sha1: d80cd6bfb03b1bb69f75ae35fecf5c53bf94fc82 Content-length: 1184 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$4#org/eclipse/swt/events/FocusAdapterthis$0=Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;@(Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$4; focusGained&(Lorg/eclipse/swt/events/FocusEvent;)V ;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor refreshValidStateevent_p#Lorg/eclipse/swt/events/FocusEvent; focusLost   valueChanged ! "access$0 SourceFileCStringFieldEditor.javaEnclosingMethod '(getTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; InnerClasses  8 *+ *  Q   @*  TU K* * Z[\#$%&)  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1039 Text-content-md5: 578fe77c3900d3cbaa86783866d65536 Text-content-sha1: 0b597240fdb442b18f4747339cf597b01e01b1a2 Content-length: 1098 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$5java/lang/Object&org/eclipse/swt/events/DisposeListenerthis$0=Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;@(Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$5;widgetDisposed((Lorg/eclipse/swt/events/DisposeEvent;)V ;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor  _textFieldLorg/eclipse/swt/widgets/Text;event_p%Lorg/eclipse/swt/events/DisposeEvent; SourceFileCStringFieldEditor.javaEnclosingMethod #$getTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; InnerClasses   8 *+ * d   A *  fg   !"%  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 9822 Text-content-md5: 8d7cd15512456709b651140104654a0d Text-content-sha1: 1e1192bdcad1a4701ef4a9955abbf562290fa76f Content-length: 9881 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor()VCode  java/lang/Class !" getPackage()Ljava/lang/Package; $&%java/lang/Package '(getName()Ljava/lang/String; *,+org/apache/log4j/Logger -. getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; 0  2  LineNumberTableLocalVariableTableJ(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)V 8 59L(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;I)Vthis=Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;name_plabel_pparent_p#Lorg/eclipse/swt/widgets/Composite;K(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;I)V valueStyle_p C 5DM(Ljava/lang/String;Ljava/lang/String;IILorg/eclipse/swt/widgets/Composite;I)Vwidth_p G 5 I  K M O Q  S  U VWinit)(Ljava/lang/String;Ljava/lang/String;II)V Y Z[setValidateStrategy(I)V]StringFieldEditor.errorMessage _a`)org/eclipse/jface/resource/JFaceResources bc getString&(Ljava/lang/String;)Ljava/lang/String; e fgsetErrorMessage(Ljava/lang/String;)V i jk createControl&(Lorg/eclipse/swt/widgets/Composite;)V strategy_padjustForNumColumns o  qsrorg/eclipse/swt/widgets/Text tu getLayoutData()Ljava/lang/Object;worg/eclipse/swt/layout/GridData vy z horizontalSpan v| }grabExcessHorizontalSpace numColumns_pgd!Lorg/eclipse/swt/layout/GridData; checkState()Z q (getText java/lang/String (trim length()I   doCheckState  clearErrorMessage  (getErrorMessage  gshowErrorMessageresultwasValidtxtdoFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V  getLabelControlD(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Label;  getTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; vGorg/eclipse/swt/graphics/GC 5&(Lorg/eclipse/swt/graphics/Drawable;)VX  textExtent4(Ljava/lang/String;)Lorg/eclipse/swt/graphics/Point; org/eclipse/swt/graphics/Point x v  widthHint dispose v horizontalAlignment q getStyle v verticalAlignment v  verticalSpan v grabExcessVerticalSpace q  setLayoutData(Ljava/lang/Object;)VgcLorg/eclipse/swt/graphics/GC;extent Lorg/eclipse/swt/graphics/Point;doLoad  getPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore;  (getPreferenceName a-org/eclipse/jface/preference/IPreferenceStore q gsetTextvalue doLoadDefault cgetDefaultString   valueChangeddoStore setValue'(Ljava/lang/String;Ljava/lang/String;)VgetNumberOfControlsgetStringValue ()Lorg/eclipse/swt/widgets/Text;checkValueStyle(I)I   _valueStylenewStyle   doTextControlD(Lorg/eclipse/swt/widgets/Composite;I)Lorg/eclipse/swt/widgets/Text; !org/eclipse/swt/widgets/Composite getFont!()Lorg/eclipse/swt/graphics/Font; q  setFont"(Lorg/eclipse/swt/graphics/Font;)V =org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$1   5@(Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;)V q addKeyListener'(Lorg/eclipse/swt/events/KeyListener;)V=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$2  q addModifyListener*(Lorg/eclipse/swt/events/ModifyListener;)V=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$3  =org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$4  q! "#addFocusListener)(Lorg/eclipse/swt/events/FocusListener;)V%java/lang/StringBuilder'(CStringFieldEditor.getTextControl(..) _ $) 5g+Unknown validate strategy $- ./append-(Ljava/lang/String;)Ljava/lang/StringBuilder; $1 2(toString *4 5error7=org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor$5 6 q: ;<addDisposeListener+(Lorg/eclipse/swt/events/DisposeListener;)V q> ?[ setTextLimit A BC checkParentG(Lorg/eclipse/swt/widgets/Control;Lorg/eclipse/swt/widgets/Composite;)V loggerMessageLjava/lang/StringBuilder; qG 5style_pisEmptyStringAllowedisValidrefreshValidState M setEmptyStringAllowed(Z)V allowed_psetFocus qS QsetStringValue V WXequals(Ljava/lang/Object;)Zvalue_plimit_p\-CStringFieldEditor.setValidateStrategy(..) _ ^Validation strategy unknown ` aOsetPresentsDefaultValue c Kefield_editor_is_valid g hifireStateChanged(Ljava/lang/String;ZZ)Vkfield_editor_value m nofireValueChanged9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)VoldStatenewValue setEnabled'(ZLorg/eclipse/swt/widgets/Composite;)V u rs qw rO enabled_pgetHelperControl#()Lorg/eclipse/swt/widgets/Control;getValue5(Lorg/eclipse/swt/widgets/Control;)Ljava/lang/Object; control_p!Lorg/eclipse/swt/widgets/Control;getValueControlaccess$0 SourceFileCStringFieldEditor.java InnerClasses!          ;#)/13)W$456Z*+,1-73 a b4*:;< = >?5@c *+,1-73 m n44 :; <  =  >? A 59m *+,B3 z {4> :; <  =  E  >? A 5DQ*F*H*J*1L*1N*P*R*+,@T*L*X*H*\^d*h3:, /258!;&16<AJP4HQ:;Q< Q= QE Ql Q>?QA m[n$*npvM,dx,,x{3 #4 $:;$~  f<*H=*P<*n<*nN-*P<*< * **3:!8IQX\d4*f:;d_!E ?*+W**+nvYN-dx*L1<Y*n::-*Lh : --{*n~---*n-α5OO3R(5>OQVYafkw|4>:;>?~ x5,>p,*n'**۹L*n++*+J3&+4,:; f"*n**۹L*n+*3!4":; C***n3 4 :;,34 :;(O*n *n**۹3  4 :;/*n34 :;r =~ =*=3" #'(*4  :; A  V*n**+*n*n+*R^=+*n Y* S*nY*A*nY**nY* $Y&(M,*,W/,03*n6Y*89*N*n*N= **n+@*n3N6789<;KANC]H`JoQ~^`abdijmo4 :;>?DEH qY+F3y4  :; >? H I/*P34 :;J/*H34 :;K7 **LH3 4  :;NO>*P3 4:;PQB*n *nRW34 :;Tg3+M*n,,M**nJ*J,U*n,*3&   &.24 3:;3Y 1 ?[U*N*n *n=3 4:;Z Z[4  *R $Y[(M,],W/,033!)34 4:;4Y !DE7 **3 4  :;G*_*H<*b*H*d*Hf*nM,*JU*j*J,l*,J3*  "*5AF4 G:; =p*q rsV*,t*,v34 :;x>?yz,34 :;{|<*n3 4:;}~z/*n34 :;%*34* 6 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 896 Text-content-md5: f25850c39282b0bf0480b62107db3c54 Text-content-sha1: 6f2430b996988dc05753abd2da5628fe86d4163c Content-length: 955 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1$5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditorjava/lang/Object getFieldName()Ljava/lang/String;getLabel!()Lorg/eclipse/swt/widgets/Label;getValueControl#()Lorg/eclipse/swt/widgets/Control;getHelperControlgetErrorMessage setValidator<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V getValidator;()Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;isValid()ZsetValueEnabled(Z)VsetHelperEnabledisValueEnabledisHelperEnabled setFieldPage)(Lorg/eclipse/jface/dialogs/DialogPage;)V getFieldPage(()Lorg/eclipse/jface/dialogs/DialogPage;setFocus()V isFocused defaultLayoutlayout(I)V SourceFileIFieldEditor.java     !"# Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1244 Text-content-md5: b04f6060f3d3aca974a7e0f66f83daae Text-content-sha1: 81e8d9a8eba9cbb62f8b1ece5e2d0739b5aeb810 Content-length: 1303 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?1org/eclipse/egf/common/ui/toolkit/fields/Messagesjava/lang/Object BUNDLE_NAMELjava/lang/String; ConstantValue 1org.eclipse.egf.common.ui.toolkit.fields.messagesRESOURCE_BUNDLELjava/util/ResourceBundle;()VCode java/util/ResourceBundle  getBundle.(Ljava/lang/String;)Ljava/util/ResourceBundle;  LineNumberTableLocalVariableTable   this3Lorg/eclipse/egf/common/ui/toolkit/fields/Messages; getString&(Ljava/lang/String;)Ljava/lang/String; ! #java/lang/StringBuilder %'&java/lang/String ()valueOf(C)Ljava/lang/String; "+ ,(Ljava/lang/String;)V ". /0append-(Ljava/lang/String;)Ljava/lang/StringBuilder; "2 /3(C)Ljava/lang/StringBuilder; "5 67toString()Ljava/lang/String;9"java/util/MissingResourceExceptionkey_pe$Ljava/util/MissingResourceException; SourceFile Messages.java!  -   3*   f"* L"Y!$**-!148&' (": ;<=> Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/StringBrowserFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2191 Text-content-md5: 81293ea2cda9127e25243f8b0024c769 Text-content-sha1: 0bdd02789844f6afc254fd2e1154b95a13b2cb86 Content-length: 2250 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1HAorg/eclipse/egf/common/ui/toolkit/fields/StringBrowserFieldEditorIorg/eclipse/egf/common/ui/toolkit/adapters/StringButtonFieldEditorAdapter_selectedObjectLjava/lang/Object;_labelProvider*Lorg/eclipse/jface/viewers/ILabelProvider;t(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/viewers/ILabelProvider;)VCode  v(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/viewers/ILabelProvider;II)VLineNumberTableLocalVariableTablethisCLorg/eclipse/egf/common/ui/toolkit/fields/StringBrowserFieldEditor;name_pLjava/lang/String;label_pparent_p#Lorg/eclipse/swt/widgets/Composite;labelProvider_p  L(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;II)V     labelStyle_pI valueStyle_pgetChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button;&%StringBrowserFieldEditor.button.label (*)1org/eclipse/egf/common/ui/toolkit/fields/Messages +, getString&(Ljava/lang/String;)Ljava/lang/String; . /0setChangeButtonText(Ljava/lang/String;)V 2 #$getCurrentSelection()Ljava/lang/Object;setCurrentSelection(Ljava/lang/Object;)V 8:9(org/eclipse/jface/viewers/ILabelProvider ;<getText&(Ljava/lang/Object;)Ljava/lang/String; > ?0setStringValueobject_plabel changePressed()Ljava/lang/String;E SourceFileStringBrowserFieldEditor.java!  d*+,-@  / 04  *+,-**C EFH !"!#$ G*%'-*+1 N P34 /*X 56 |&*+M***7M,*,=`abce f%h &&@ABC -Do FG Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1956 Text-content-md5: 051e65b9381c8dcd71336d8f6da51f97 Text-content-sha1: ad9ba9c2d4941db39dda17b1da3c0053e2505fbb Content-length: 2015 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1BDorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditorJ(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VCode  LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;name_pLjava/lang/String;label_pparent_p#Lorg/eclipse/swt/widgets/Composite;K(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;I)V  style_pIL(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;I)V  width_pM(Ljava/lang/String;Ljava/lang/String;IILorg/eclipse/swt/widgets/Composite;I)V   strategy_p doCheckState()Z # ! % &' getValidator;()Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator; ) *+getStringValue()Ljava/lang/String; -/.7org/eclipse/egf/common/ui/toolkit/validators/IValidator 01isValid&(Ljava/lang/Object;)Ljava/lang/String; 3 45setErrorMessage(Ljava/lang/String;)VZ errorMessage(Z)Z : ;<refreshValidState()V > 0!force_p SourceFile ValidatingStringFieldEditor.java!T*+,- !" * ` *+,- - . 4    l *+, : ; >     x*+, I J H  !/*"<*$$*$*(,M,<*,2 RS UW$Y(Z-] / *06708I *9*= fgi  ?6@A Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/fields/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 612 Text-content-md5: 8af4f0e239eb9a0241bfabda131de657 Text-content-sha1: 08c6e1629c58683d55a878b73df86b661fc096e8 Content-length: 622 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### StringBrowserFieldEditor.button.label=Browse... Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/internal/IToolkitConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 232 Text-content-md5: 3cf7c13f6ea9674af98f1cd54d7b3096 Text-content-sha1: 21df3070e0a195058deecc86675ff02f94466888 Content-length: 291 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 (II)VCode   ()V    LineNumberTableLocalVariableTablethisCLorg/eclipse/egf/common/ui/toolkit/internal/StringMatcher$Position;start_pend_pgetStart()IgetEnd SourceFileStringMatcher.java InnerClasses8org/eclipse/egf/common/ui/toolkit/internal/StringMatcherPosition!  Y* **45 67  /*>  /*F   Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/internal/StringMatcher.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5709 Text-content-md5: 06da0b9909aac222860d06a4efdcc2a4 Text-content-sha1: 90512efd85b51d5d902c3c73fd1d865f27250217 Content-length: 5768 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18org/eclipse/egf/common/ui/toolkit/internal/StringMatcherjava/lang/ObjectfPatternLjava/lang/String;fLengthIfIgnoreWildCardsZ fIgnoreCasefHasLeadingStarfHasTrailingStar fSegments[Ljava/lang/String;fBoundfSingleWildCardC ConstantValue(Ljava/lang/String;ZZ)VCode  ()V  "java/lang/IllegalArgumentException  ! # %  ')(java/lang/String *+length()I -  / 0parseNoWildCards 2 3parseWildCardsLineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/common/ui/toolkit/internal/StringMatcher;pattern ignoreCaseignoreWildCardsfindY(Ljava/lang/String;II)Lorg/eclipse/egf/common/ui/toolkit/internal/StringMatcher$Position;>Aorg/eclipse/egf/common/ui/toolkit/internal/StringMatcher$Position =@ A(II)V C DEposIn(Ljava/lang/String;II)I G  I JK regExpPosIn)(Ljava/lang/String;IILjava/lang/String;)Itextstart_pend_pstartendtlenxsegCountcurPos matchStarticurrent nextMatchmatch(Ljava/lang/String;)Z \ Y](Ljava/lang/String;II)Z '_ `a regionMatches(ZILjava/lang/String;II)Z c e g hiregExpRegionMatches*(Ljava/lang/String;ILjava/lang/String;II)Z 'k lmindexOf(I)I o pK textPosIntCurPosbound segLength currentMatchkclenx* 'z {Z startsWith '} ~ZendsWith ' charAt(I)Cjava/util/Vector java/lang/StringBuffer  append(C)Ljava/lang/StringBuffer; ) toString()Ljava/lang/String;  addElement(Ljava/lang/Object;)V  setLength(I)V +size copyInto([Ljava/lang/Object;)VtempLjava/util/Vector;posbufLjava/lang/StringBuffer;cnextLocalVariableTypeTable&Ljava/util/Vector; ' l(Ljava/lang/String;I)Imaxpplen java/lang/Character  toUpperCase(C)C  toLowerCasetStart_ppStart_pplen_ptStartpStarttcharpchar SourceFileStringMatcher.java InnerClassesPosition!      ?**+ Y* *"*+$*+&,*" *.*142 T# U VXYZ$[,\3]:_>a5*?67?8?9 ?: ;<% + Y66+&666 *,=Y?*"&*+B6=Y*,`?*F6=Y?66 6 6*F 2: *+ H6    6   &`6    =Y ?4#qr tuvwx z'{+}7~9@LS^cev}567LMNOPQ^R}tS_T\U YV 'W X YZM+*++&[4567LY]+ Y66*")d*,*$* +*,^*F6*b *d*,*,+&6666*d6  6 *F 2:  &6 *b*+  f  `6*Fg*b`*dY*F 2:  j6*+ n6  *+ H6    &`6  *d! &6 *+ d  f 42 "HObdkv} "/46CHJTW^ls567LMNO|PO?SQqr V W s /t Ct :usv 0Q*'F*F*$S**,4 5 6731?*$wy*b*$w|"*,*$*,d\*dYL=YN*$6*s?\$*, -Wt*$6*? \ -WH-W-W7-0+-*Y-`--W -W*,E-+-*Y-`*+'F+*F4" 7< D"F#N$Q%^&()+-.12579:;=@AC$HIJ+M6N>O5>?67DFN^- DDET*,d6* +*$6 6+*$*,^4. XYZ['\)^,`2aEbH`Re5HT67TLTOTPLV/#VJK1&6d66*+f4pq rs"t%r/w5R1671L1O1P1* $VhiF p666[+6 -6 *"  6  ,* #    4N $+03:=DQTadfn5p p67pLppppmi eM $B pKS&6d6* +6 6+^42  *,/5DGQ5\ S67SLSOSPSL FV2V = Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/internal/UI$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 551 Text-content-md5: a02a121199f15088cc4f971a9c127bfc Text-content-sha1: 1b4be5bd06fe10f19d6e2ee4d6dd619aea2563d9 Content-length: 610 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/org/eclipse/egf/common/ui/toolkit/internal/UI$1java/lang/Objectjava/lang/Runnable()VCode  LineNumberTableLocalVariableTablethis1Lorg/eclipse/egf/common/ui/toolkit/internal/UI$1;run -org/eclipse/egf/common/ui/toolkit/internal/UI dispose SourceFileUI.javaEnclosingMethod InnerClasses  3*     2 "#   Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/internal/UI.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2828 Text-content-md5: e3a67d6271311a7654e3ca932743aa9e Text-content-sha1: 96199635d38fb143774794e3e8e0549f649361a8 Content-length: 2887 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-org/eclipse/egf/common/ui/toolkit/internal/UIjava/lang/Object ERROR_COLOR Lorg/eclipse/swt/graphics/Color; DEFAULT_COLOR()VCode  org/eclipse/swt/widgets/Display  getDefault#()Lorg/eclipse/swt/widgets/Display;/org/eclipse/egf/common/ui/toolkit/internal/UI$1      disposeExec(Ljava/lang/Runnable;)V  getSystemColor#(I)Lorg/eclipse/swt/graphics/Color;   ! LineNumberTableLocalVariableTable this/Lorg/eclipse/egf/common/ui/toolkit/internal/UI;dispose )+*org/eclipse/swt/graphics/Color ' convertHorizontalDLUsToPixels%(Lorg/eclipse/swt/widgets/Control;I)I/org/eclipse/swt/graphics/GC .1 2&(Lorg/eclipse/swt/graphics/Drawable;)V 465org/eclipse/swt/widgets/Control 78getFont!()Lorg/eclipse/swt/graphics/Font; .: ;<setFont"(Lorg/eclipse/swt/graphics/Font;)V .> ?@getFontMetrics(()Lorg/eclipse/swt/graphics/FontMetrics; BDC$org/eclipse/swt/graphics/FontMetrics EFgetAverageCharWidth()I .+? KMLjava/lang/Math NOround(D)Jcontrol!Lorg/eclipse/swt/widgets/Control;dlusIgcLorg/eclipse/swt/graphics/GC; averageWidthhorizontalDialogUnitSizeDconvertVerticalDLUsToPixels B[ \F getHeight?heightverticalDialogUnitSizesetButtonLayoutData#(Lorg/eclipse/swt/widgets/Button;)Vdorg/eclipse/swt/layout/GridData cf g(I)V i6jorg/eclipse/swt/widgets/Button lnm org/eclipse/jface/dialogs/Dialog Yo*(Lorg/eclipse/swt/graphics/FontMetrics;I)I iq rs computeSize%(IIZ)Lorg/eclipse/swt/graphics/Point; uwvorg/eclipse/swt/graphics/Point xSx Kz {|max(II)I c~ S widthHint i  setLayoutData(Ljava/lang/Object;)Vbutton Lorg/eclipse/swt/widgets/Button;data!Lorg/eclipse/swt/layout/GridData; fontMetrics&Lorg/eclipse/swt/graphics/FontMetrics; SourceFileUI.java InnerClasses!  V" Y   "  +0!#  /*$"# %& '  5 ( ("67 8# ,- /.Y*0M,*39,=A>,GHk9kJ"D EFGH%I#4/PQ/RS &TUVS% WX Y- /.Y*0M,*39,=Z>,G]k9kJ"V WXYZ%[#4/PQ/RS &TU_S% `X ab FcYeL.Y*0M,*h9,=N,G-=k6+*pty}*+"& c efg!h%i-j@kEl#4F ;2TU!%-S  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/AbstractValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 744 Text-content-md5: 7d12533a67203b36c6c05f02478d17f5 Text-content-sha1: b1b66a80ffc010aa08bbfad56b7f4d4f96e204c7 Content-length: 803 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1>org/eclipse/egf/common/ui/toolkit/validators/AbstractValidatorjava/lang/Object7org/eclipse/egf/common/ui/toolkit/validators/IValidator _errorMessageLjava/lang/String;(Ljava/lang/String;)VCode  ()V  LineNumberTableLocalVariableTablethis@Lorg/eclipse/egf/common/ui/toolkit/validators/AbstractValidator;errorMessage_pgetErrorMessage()Ljava/lang/String;setErrorMessage SourceFileAbstractValidator.java!  F * *+    /*'   >*+ /0 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/CompoundValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1721 Text-content-md5: af17bd5958987a9c6f85a331037d9cab Text-content-sha1: 581bcbd6b503c6497e2666e710117c4b918115a2 Content-length: 1780 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1G>org/eclipse/egf/common/ui/toolkit/validators/CompoundValidator>org/eclipse/egf/common/ui/toolkit/validators/AbstractValidator _validatorsLjava/util/List; SignatureKLjava/util/List;()VCode  (Ljava/lang/String;)Vjava/util/ArrayList  (I)V  LineNumberTableLocalVariableTablethis@Lorg/eclipse/egf/common/ui/toolkit/validators/CompoundValidator;<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V    addValidator validator_p9Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator; #%$java/util/List &'add(Ljava/lang/Object;)ZisValid&(Ljava/lang/Object;)Ljava/lang/String; #+ ,-iterator()Ljava/util/Iterator; /10java/util/Iterator 23next()Ljava/lang/Object;57org/eclipse/egf/common/ui/toolkit/validators/IValidator 47 () /9 :;hasNext()Zvalue_pLjava/lang/Object; errorMessageLjava/lang/String; validatorsLjava/util/Iterator;currentValidatorLocalVariableTypeTableOLjava/util/Iterator; SourceFileCompoundValidator.java!  D* *Y"#$   F **+,- .  ! D *+"W 5 6  !() 2M**N-.4:+6M-8,,=> @AB#@0D422<=0>? &@A B!C  &@DEF Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/IValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 205 Text-content-md5: 47f93dffa017507f5590153711158548 Text-content-sha1: 1e3ce32950e31e9b18f1e125146bf42b01c4039d Content-length: 264 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 7org/eclipse/egf/common/ui/toolkit/validators/IValidatorjava/lang/ObjectisValid&(Ljava/lang/Object;)Ljava/lang/String; SourceFileIValidator.java Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1554 Text-content-md5: e04498f33a73eb2e2e152bea4f000e52 Text-content-sha1: 9f32860e388260a9ac778510c7000f5d68fb2099 Content-length: 1613 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1NDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator>org/eclipse/egf/common/ui/toolkit/validators/AbstractValidator__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable(Ljava/lang/String;)V # !thisFLorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator;errorMessage_pLjava/lang/String;isValid&(Ljava/lang/Object;)Ljava/lang/String; + ,getErrorMessage.java/lang/String -0 1trim -3 45length()I7java/lang/StringBuilder9&NotEmptyStringValidator.isValid(..) _ 6# 6< =toString ? @Aerror*(Ljava/lang/Object;Ljava/lang/Throwable;)VCjava/lang/ClassCastExceptionvalue_pLjava/lang/Object;result stringValue exception_pLjava/lang/ClassCastException; loggerMessageLjava/lang/StringBuilder; SourceFileNotEmptyStringValidator.java! 3   ! >*+" $%&'() 7**M+-N-*-/2 MN6Y8::;->,B"$' )+-.)/51>7$%7DE2F' G'HI) JKLM Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1346 Text-content-md5: afab0924d0bf374e438f7aef3db51ac4 Text-content-sha1: 24be002853efff502c95561971d18a2d720d9021 Content-length: 1405 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1;org/eclipse/egf/common/ui/toolkit/validators/AbstractValidator_regExpPatternLjava/util/regex/Pattern;'(Ljava/lang/String;Ljava/lang/String;)VCode   (Ljava/lang/String;)V java/util/regex/Pattern compile-(Ljava/lang/String;)Ljava/util/regex/Pattern;  LineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;errorMessage_pLjava/lang/String;regularExpression_p getPattern()Ljava/util/regex/Pattern;isValid&(Ljava/lang/Object;)Ljava/lang/String;!java/lang/String # $%length()I ' ()matcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; +-,java/util/regex/Matcher ./matches()Z 1 23getErrorMessage()Ljava/lang/String;value_pLjava/lang/Object;ZvalueLjava/util/regex/Matcher; SourceFileRegExpValidator.java! T*+ *,  ! "  /*)  2=+ + N-"*-&:*= *002 3468%<42245067(89: Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 878 Text-content-md5: 38d22c20f7995b8cf623536c3c12685c Text-content-sha1: 59ecb7cbc2b01d41137a3ead3e2b6643baf59d33 Content-length: 937 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$1Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$1; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+ /  ? Y+ 5    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 884 Text-content-md5: e0f839ab443c637ff764abafcb2ef015 Text-content-sha1: 934b9a42e5cc2d11ea2d4badb1e3676374955878 Content-length: 943 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$2Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$2; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+ <  ? Y+ B    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 883 Text-content-md5: 16a69aabbdad4c5c98aae0632991f4db Text-content-sha1: e38b47768de47d684dee43a2d8b36ea1a4999efe Content-length: 942 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$3Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$3; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+ J  ? Y+ P    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 884 Text-content-md5: 61d0fc5ddf87cda504afb0f987a23e58 Text-content-sha1: f661412475096314c206d1481b56597dd195f183 Content-length: 943 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$4Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$4; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+ W  ? Y+ ]    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 888 Text-content-md5: 69aedf2a073196d43c5e91f15ca0872d Text-content-sha1: 47ef057e2424b89e8ce8bd5eccc787401f9c906f Content-length: 947 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$5Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$5; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+ d  ? Y+ j    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$6.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 881 Text-content-md5: a043f82ffe75986167c376e9ec87e2c3 Text-content-sha1: 1321827e244abc5a7928ddb2ce60411bbfe556e9 Content-length: 940 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$6Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$6; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+ q  ? Y+ w    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$7.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 904 Text-content-md5: 0e0aa1dd1cd65170cc0cb662a638f02b Text-content-sha1: 8a86829e727c63650974a15758f226dfd1e5e546 Content-length: 963 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$7Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$7; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+ ~  ? Y+     Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$8.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 877 Text-content-md5: f66535c319788d5c613a372a241cb0fe Text-content-sha1: fc7d9fae55f8cce668d8befc9cf013dbee16a7a0 Content-length: 936 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$8Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$8; $anonymous0Ljava/lang/String;createR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;*+   ? Y+     Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2000 Text-content-md5: e512c6ce4838f7df3215fd20e07454dd Text-content-sha1: 98accde53e8b04a83289e6624c6e4c55cdb7f34a Content-length: 2059 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1]Corg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactoryjava/lang/Object_idLjava/lang/String; ONLY_DIGITSELorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory;ONLY_LOWER_CASEONLY_UPPER_CASENOT_NUMERIC_STARTNO_PUNCTUATIONNO_SPACEIP_DIGIT NOT_EMPTY()VCodeEorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$1 onlyDigits  (Ljava/lang/String;)V  Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$2  onlyLowerCase  # %Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$3' onlyUpperCase $ * ,Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$4.notNumericStart + 1 3Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$55 noPunctuation 2 8 :Eorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$6<noSpace 9 ? AEorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$7CipDigit @ F HEorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory$8JnotEmpty G M LineNumberTableLocalVariableTable Q  S this validatorId_pcreateR(Ljava/lang/String;)Lorg/eclipse/egf/common/ui/toolkit/validators/RegExpValidator;getId()Ljava/lang/String; SourceFileRegExpValidatorFactory.java InnerClasses!      aYY!"$Y&()+Y-/02Y4679Y;=>@YBDEGYIKLN& / <J$W0d<qH~T`OF *P*+RN O T UVWXY/*RN)O TZ[\B$+29@G Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1076 Text-content-md5: ad3ef9407f19bd20e53e68506a720fbc Text-content-sha1: 549d3d8d1e77783aff5a651c28d886acaacfc340 Content-length: 1135 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1'Korg/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProviderjava/lang/Object4org/eclipse/jface/viewers/IStructuredContentProvider()VCode  LineNumberTableLocalVariableTablethisMLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProvider; inputChangedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V   handleViewer%(Lorg/eclipse/jface/viewers/Viewer;)V  handleElementRemoved7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)V  handleElementAdded  handleElementUpdatedviewer_p"Lorg/eclipse/jface/viewers/Viewer; oldInput_pLjava/lang/Object; newInput_p SourceFile&AbstractStructuredContentProvider.java! /*    8*+,- *+,$,- *+-,-- *+,- ""$ %()',0-7/ *88 !8"#8$#%& Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1178 Text-content-md5: 8204f48a2e125c1d4eccf347695916be Text-content-sha1: 75e7cd2c1ff52437323d5fa7cb3072b163ac44a8 Content-length: 1237 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*Borg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$1'org/eclipse/swt/events/SelectionAdapterthis$0BLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;E(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;)VCode    ()VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$1;widgetSelected*(Lorg/eclipse/swt/events/SelectionEvent;)V %org/eclipse/swt/events/SelectionEvent widget Lorg/eclipse/swt/widgets/Widget; @org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer  access$0e(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;Lorg/eclipse/swt/widgets/Widget;)Vevent_p'Lorg/eclipse/swt/events/SelectionEvent;button SourceFileAbstractTransferViewer.javaEnclosingMethod (initializeListeners InnerClasses  8 *+ *     T+M* ,  !" #$%&')  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2360 Text-content-md5: 2194bf77c2a81bf06e6477575193c283 Text-content-sha1: 2e5cc985096a3a886bbfa990743a7f9273eaef1f Content-length: 2419 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1fBorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$2java/lang/Object3org/eclipse/jface/viewers/ISelectionChangedListenerthis$0BLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;E(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;)VCode    ()VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$2;selectionChanged4(Lorg/eclipse/jface/viewers/SelectionChangedEvent;)V @org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer handleViewersSelectionMode /org/eclipse/jface/viewers/SelectionChangedEvent ! getSelection(()Lorg/eclipse/jface/viewers/ISelection; #%$$org/eclipse/jface/viewers/ISelection &'isEmpty()Z ) *+getSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider; - ./ updateButtonsW(Lorg/eclipse/jface/viewers/ISelection;Lorg/eclipse/jface/viewers/ISelectionProvider;)V1.org/eclipse/jface/viewers/IStructuredSelection 03 45toList()Ljava/util/List; 07 89size()I ;=<java/util/List >?get(I)Ljava/lang/Object; A BC getSource()Ljava/lang/Object;E'org/eclipse/jface/viewers/ContentViewer DG HIgetLabelProvider0()Lorg/eclipse/jface/viewers/IBaseLabelProvider;K(org/eclipse/jface/viewers/ILabelProvider JM NOgetText&(Ljava/lang/Object;)Ljava/lang/String; Q RSupdateStatusLine(Ljava/lang/String;)Vevent_p1Lorg/eclipse/jface/viewers/SelectionChangedEvent; selection&Lorg/eclipse/jface/viewers/ISelection;structSelection0Lorg/eclipse/jface/viewers/IStructuredSelection; lastSelectedLjava/lang/Object;source)Lorg/eclipse/jface/viewers/ContentViewer; labelProvider*Lorg/eclipse/jface/viewers/ILabelProvider; SourceFileAbstractTransferViewer.javaEnclosingMethod dinitializeListeners InnerClasses   8 *+ *    `* ++M,"L* ,+(,,0N-2-6d::+@D:FJ:* LP*   "'<EO_H``TU SVW'8XY<#Z[E\]O^_`abce  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1787 Text-content-md5: de6541bea8c36b63b22d9c699b87b6b4 Text-content-sha1: cadd8038ea18404ecf44576a3fd756568261dc55 Content-length: 1846 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1PBorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$3%org/eclipse/swt/events/ControlAdapterthis$0BLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;E(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;)VCode    ()VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$3;controlResized((Lorg/eclipse/swt/events/ControlEvent;)V @org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer  _leftViewer,Lorg/eclipse/jface/viewers/StructuredViewer; *org/eclipse/jface/viewers/StructuredViewer   getControl#()Lorg/eclipse/swt/widgets/Control; "$#org/eclipse/swt/widgets/Control %& computeSize$(II)Lorg/eclipse/swt/graphics/Point; ( ) _rightViewer +-,org/eclipse/swt/graphics/Point ./xI 132java/lang/Math 45max(II)I "7 89 getLayoutData()Ljava/lang/Object;;org/eclipse/swt/layout/GridData := >/ widthHintevent_p%Lorg/eclipse/swt/events/ControlEvent; leftControl!Lorg/eclipse/swt/widgets/Control;leftViewerSize Lorg/eclipse/swt/graphics/Point; rightControlrightViewerSizewidthgd!Lorg/eclipse/swt/layout/GridData; SourceFileAbstractTransferViewer.javaEnclosingMethod NinitializeListeners InnerClasses  8 *+ *  !   W* M,!N* ':!:-**06,6::<6::<* ' ()*'+5,>-E.O/V0RWW?@ LABECD9EB'0FD5"G/>HIJKLMO  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 15500 Text-content-md5: 188bb3c291116f49257fe672c52917f9 Text-content-sha1: c88a49c84aec5f91a5c3555953f83c15c6f7233e Content-length: 15559 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1@org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer org/eclipse/jface/viewers/Viewer_loggerLorg/apache/log4j/Logger;STATUS_TEXT_FIELDI ConstantValueADD_ALL_BUTTONADD_SELECTED_BUTTONREMOVE_SELECTED_BUTTONREMOVE_ALL_BUTTON SINGLE_SELECTION_VIEWER@ ALL_BUTTONS< ALL_WIDGETS>_style _composite#Lorg/eclipse/swt/widgets/Composite; _statusBarLorg/eclipse/swt/widgets/Text; _buttonsPanel _addAllBtn Lorg/eclipse/swt/widgets/Button;_addSelectedBtn_removeSelectedBtn _removeAllBtn _leftViewer,Lorg/eclipse/jface/viewers/StructuredViewer;_leftViewerStyleBits _rightViewer_rightViewerStyleBits_buttonClickedListener*Lorg/eclipse/swt/events/SelectionListener;_viewerSelectionChangedListener5Lorg/eclipse/jface/viewers/ISelectionChangedListener;'_selectionChangedHandlersForBothViewersLjava/util/List; Signature]Ljava/util/List;&_selectionChangedHandlersForLeftViewer'_selectionChangedHandlersForRightViewer()VCode 798java/lang/Class :; getPackage()Ljava/lang/Package; =?>java/lang/Package @AgetName()Ljava/lang/String; CEDorg/apache/log4j/Logger FG getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; I LineNumberTableLocalVariableTable)(Lorg/eclipse/swt/widgets/Composite;III)V O L4 Q Sjava/util/ArrayList RU LV(I)V X -. Z 1. \ 2. ^ & ` ( b cd createViewer&(Lorg/eclipse/swt/widgets/Composite;)VthisBLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;parent_pstyle_pleftViewerStyleBits_prightViewerStyleBits_p l mdcreateInternalComposite o p4initializeListeners r  t udcreateLeftViewer w xdcreateButtonArea z {dcreateRightViewer } ~dcreateStatusTextField!org/eclipse/swt/widgets/Composite  L'(Lorg/eclipse/swt/widgets/Composite;I)V!org/eclipse/swt/layout/GridLayout L(IZ)V   setLayout#(Lorg/eclipse/swt/widgets/Layout;)Vorg/eclipse/swt/layout/GridData L(IIZZ)V   setLayoutData(Ljava/lang/Object;)VgridData!Lorg/eclipse/swt/layout/GridData;  $%   doLeftViewerQ(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/jface/viewers/StructuredViewer;-AbstractTransferViewer.list.available.tooltip 2org/eclipse/egf/common/ui/toolkit/viewers/Messages  getString&(Ljava/lang/String;)Ljava/lang/String;   layoutViewerA(Lorg/eclipse/jface/viewers/StructuredViewer;Ljava/lang/String;)V  '%   doRightViewer,AbstractTransferViewer.list.selected.tooltip   O -org/eclipse/egf/common/ui/toolkit/internal/UI convertHorizontalDLUsToPixels%(Lorg/eclipse/swt/widgets/Control;I)I  widthHint verticalAlignment grabExcessVerticalSpaceZ>>-AbstractTransferViewer.addallelements.tooltip   createButtoni(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/swt/widgets/Button;   >2AbstractTransferViewer.addselectedelements.tooltip  ! <5AbstractTransferViewer.removeselectedelements.tooltip  " <<0AbstractTransferViewer.removeallelements.tooltip  # gdData buttonsLayout#Lorg/eclipse/swt/layout/GridLayout;org/eclipse/swt/widgets/Text    setEditable(Z)V horizontalAlignment grabExcessHorizontalSpace horizontalSpan Borg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$1 LE(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;)V  )*Borg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$2  +,Borg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer$3   addControlListener+(Lorg/eclipse/swt/events/ControlListener;)V    *org/eclipse/jface/viewers/StructuredViewer  setUseHashlookup    getControl#()Lorg/eclipse/swt/widgets/Control; org/eclipse/swt/widgets/Control setToolTipText(Ljava/lang/String;)V   addSelectionChangedListener8(Lorg/eclipse/jface/viewers/ISelectionChangedListener;)V viewer_p tooltip_pLjava/lang/String;control!Lorg/eclipse/swt/widgets/Control;#org/eclipse/swt/widgets/Button " " "( )setText " ", -.addSelectionListener-(Lorg/eclipse/swt/events/SelectionListener;)Vtext_pbuttonhandleButtonClicked#(Lorg/eclipse/swt/widgets/Widget;)V 4 56doHandleAddAllButton()Z 8 96doHandleAddSelectedButton ; <6doHandleRemoveSelectedButton > ?6doHandleRemoveAllButtonAjava/lang/StringBuilderCUnsupported source button : @E L @G HIappend-(Ljava/lang/Object;)Ljava/lang/StringBuilder; @K LAtoString CN Owarn Q R4doLayoutbutton_p Lorg/eclipse/swt/widgets/Widget;somethingWasDone W X4layout  Z [\getInput()Ljava/lang/Object;  ^ _setInputchangedinputLjava/lang/Object;  d ef getSelection(()Lorg/eclipse/jface/viewers/ISelection; hji$org/eclipse/jface/viewers/ISelection k6isEmptym.org/eclipse/jface/viewers/IStructuredSelection lo pqtoArray()[Ljava/lang/Object;  s tugetContentProvider.()Lorg/eclipse/jface/viewers/IContentProvider; wyx*org/eclipse/jface/viewers/IContentProvider z{ inputChangedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V leftSelection&Lorg/eclipse/jface/viewers/ISelection;structuredSelection0Lorg/eclipse/jface/viewers/IStructuredSelection;elements[Ljava/lang/Object;rightSelectionupdateStatusLine ( updateButtonsW(Lorg/eclipse/jface/viewers/ISelection;Lorg/eclipse/jface/viewers/ISelectionProvider;)V  notifySelectionChangedHandler9(Lorg/eclipse/jface/viewers/ISelection;Ljava/util/List;)V selection_pselectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;handlersForSelectionProviderLocalVariableTypeTable(Lorg/eclipse/jface/viewers/ISelection;Ljava/util/List;)V java/util/List iterator()Ljava/util/Iterator; java/util/Iterator \nextIorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler  handleSelection)(Lorg/eclipse/jface/viewers/ISelection;)V  6hasNext handlers_phandlerKLorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;handleViewersSelectionMode4(Lorg/eclipse/jface/viewers/SelectionChangedEvent;)V d/org/eclipse/jface/viewers/SelectionChangedEvent  getSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider; "  setEnabled -org/eclipse/jface/viewers/StructuredSelection EMPTY/Lorg/eclipse/jface/viewers/StructuredSelection;    setSelectionevent_p1Lorg/eclipse/jface/viewers/SelectionChangedEvent;selectionProviderdisableSelectionViewerbuttonDrivenByOppositeViewersetSelectionChangedHandlerO(Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;I)V   addControl$(Lorg/eclipse/swt/widgets/Control;)V  add(Ljava/lang/Object;)Z handler_pbuttonStyleConstant_pgetLeftContentProviderprovider,Lorg/eclipse/jface/viewers/IContentProvider; getLeftInputobject getLeftViewer.()Lorg/eclipse/jface/viewers/StructuredViewer;getLeftLabelProvider0()Lorg/eclipse/jface/viewers/IBaseLabelProvider;   getLabelProvider.Lorg/eclipse/jface/viewers/IBaseLabelProvider;setLeftContentProvider/(Lorg/eclipse/jface/viewers/IContentProvider;)V   setContentProvider provider_p setLeftInputinput_psetLeftLabelProvider-(Lorg/eclipse/jface/viewers/ILabelProvider;)V   setLabelProvider1(Lorg/eclipse/jface/viewers/IBaseLabelProvider;)V*Lorg/eclipse/jface/viewers/ILabelProvider;getRightContentProvider getRightInputgetRightViewergetRightLabelProvidersetRightContentProvider setRightInputsetRightLabelProviderdispose  6 isDisposed  4   removeSelectionChangedListenerrefresh   4*(Lorg/eclipse/jface/viewers/ISelection;Z)Vreveal_pgetLeftViewerStyleBits()IgetRightViewerStyleBitssetButtonEnabled buttonStyle_penable_pisButtonEnabled(I)Z "  6 isEnabledenabledgetButtonsContainer%()Lorg/eclipse/swt/widgets/Composite;access$0e(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;Lorg/eclipse/swt/widgets/Widget;)V  12 SourceFileAbstractTransferViewer.java InnerClasses!              ! " # $%&'%()*+,-./01./02./0334536<BHJ ><KLM5K*N *>P*P*RYTW*RYTY*RYT[*]*_*+aJ. ".:?EJK4KefKgKhKiKjcd5v**+k*n**qs**qv**qy**q|J !)K*ef*gmd52*Y+q*qYYM*q,J )1K 2ef2g) ud5^* **+**JKefg{d5^* **+**JKefgxd5B*Y+YM,*=,,*,YN*-*P~***Ƹȵ*P~***иȵ*P~***ָȵ *P~***ܸȵޱJF "',4>FOblK*efg>|~d5@*P~9*Y+*YM,,,*,J&  (-27?K @ef@g(p45^(*Y**Y**qY*J !'2K (ef5D++ +N-,+*Y:-J6 78; =>?A%B+C1D7E=FCGK4DefD%D5 !%5A"Y+$%:Y:&,'-**+J& K LMN"P)Q/R5S>UK>AefAgA/A 40 +125b=+*̦ *3=J+*Ҧ *7=:+*ئ *:=*+*ަ *==H@YBD+FJM*PJ6 \] ^_`"a*b2c:dBfYj]kamK befbST`UR456*qVJ stK ef565x"<*YM,<*]*,]J{| }~ K "ef ` ab965J<*cM,g8<,lN-n:*r*v*r*vJ&  "5HK4JefH` @|}.~"&<65J<*cM,g8<,lN-n:*r*v*r*vJ&  "5HK4JefH` @}.~"&?65x"<*YM,<*]*,]J  K "ef ` ab5L* *+JKef/5/N,* *YN,**[N*+-*+*WJ" %.K*/ef/}/-. -0/5*,(,:N-+J)K**ef*}*. *05h*P@~`+gT+MN:,**N*:,**N*: -cg -J> (-6>CINT`gK4hefhLJ% G 5*~+*̶*W+W* ~+*޶*W+W*~+*Ҷ*Y+W*~+*ض*[+WJ6   ! #.$6%A'O(W)b+p,x-/K efu5SL* *rL+J67 8:Kef\5SL* *YL+JBC DFKefb5/*JNK ef5SL* *L+JVW XZKef5A *+ݱJ bcK ef 5A *+]J jkK ef b5A *+J rsK ef u5SL* *rL+Jz{ |~Kef\5SL* *YL+J Kefb5/*JK ef5SL* *L+J Kef5A *+ݱJ K ef 5A *+]J K ef b5A *+J K ef 45`*q*q*q*q************J:"',16=HOZ_K `ef5/*qJK ef[\5,JK efef5,JK ef45A**JK ef_55JKefb5?JK ef}5/*]J K ef5/*_JK ef5<~ *~ *~ * ~ *J&  !#$&$',)3*;,K <ef<<5W=R)4? J*̶=!*Ҷ=*ض= *޶=J* 89,;4<7??@BCJDMGUKK WefWU   5/*JSK ef 5&*+J[K Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/DefaultListContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2342 Text-content-md5: f4720f59a5ed6a7dbc65cb034da04925 Text-content-sha1: a2d7c0549b8977caab63e0632193d981f92ab8da Content-length: 2401 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1KDorg/eclipse/egf/common/ui/toolkit/viewers/DefaultListContentProviderKorg/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProvider()VCode  LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/common/ui/toolkit/viewers/DefaultListContentProvider;handleElementAdded7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)V,org/eclipse/jface/viewers/AbstractListViewer[Ljava/lang/Object;  add([Ljava/lang/Object;)Vjava/util/Collection  toArray()[Ljava/lang/Object;   (Ljava/lang/Object;)Vviewer_p"Lorg/eclipse/jface/viewers/Viewer;addedElements_pLjava/lang/Object;abstractListViewer.Lorg/eclipse/jface/viewers/AbstractListViewer;array collectionLjava/util/Collection;LocalVariableTypeTableLjava/util/Collection<*>;handleElementRemoved . /remove 1 / removedElements_phandleElementUpdatedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V 6 7 refresh oldInput_p newInput_p handleViewer%(Lorg/eclipse/jface/viewers/Viewer;)V="java/lang/IllegalArgumentException?0Viewer must be an instance of AbstractListViewer <A B(Ljava/lang/String;)V getElements'(Ljava/lang/Object;)[Ljava/lang/Object;Fjava/lang/ObjectinputElement_pdispose SourceFileDefaultListContentProvider.java!3*   @+N,,:-',,::--, * %& '()"*(+1,:.?0 H@ @!"@#$;%& '(()1 '* ((+,@+N,,:--',,::---,0 * 9: ;<=">(?1@:B?D H@ @!"@2$;%& '(()1 '* ((+34U +,5 LM * !" 8$ 9$:;N+ @ TUW  !"CDf"+++ +E ^_ abd " "G$H+ l  IJ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/DefaultTableContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2281 Text-content-md5: 899a0b43f537234762242197b94a7718 Text-content-sha1: 335494d568b566ff39007116fa72ecc268539aff Content-length: 2340 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1KEorg/eclipse/egf/common/ui/toolkit/viewers/DefaultTableContentProviderKorg/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProvider()VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/common/ui/toolkit/viewers/DefaultTableContentProvider;handleElementAdded7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)V%org/eclipse/jface/viewers/TableViewer[Ljava/lang/Object;  add([Ljava/lang/Object;)Vjava/util/Collection  toArray()[Ljava/lang/Object;   (Ljava/lang/Object;)Vviewer_p"Lorg/eclipse/jface/viewers/Viewer;addedElements_pLjava/lang/Object; tableViewer'Lorg/eclipse/jface/viewers/TableViewer;array collectionLjava/util/Collection;LocalVariableTypeTableLjava/util/Collection<*>;handleElementRemoved . /remove 1 / removedElements_phandleElementUpdatedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V 6 7 refresh oldInput_p newInput_p handleViewer%(Lorg/eclipse/jface/viewers/Viewer;)V="java/lang/IllegalArgumentException?)Viewer must be an instance of TableViewer <A B(Ljava/lang/String;)V getElements'(Ljava/lang/Object;)[Ljava/lang/Object;Fjava/lang/ObjectinputElement_pdispose SourceFile DefaultTableContentProvider.java!3*   <+N,,:-#,,:--, & &' ()*"+(,6.;0 >< <!"<#$7%& '(()* ((+,<+N,,:--#,,:---,0 & 9: ;<=">(?6A;C >< <!"<2$7%& '(()* ((+34U +-5 KL * !" 8$ 9$:;N+ @ STV  !"CDf"+++ +E ]^ `ac " "G$H+ k  IJ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1247 Text-content-md5: e04f11602ccbcb6d74d824fdcd024d8d Text-content-sha1: 431bd93a30149360813a26dafe095f425cc0e4e8 Content-length: 1306 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?2org/eclipse/egf/common/ui/toolkit/viewers/Messagesjava/lang/Object BUNDLE_NAMELjava/lang/String; ConstantValue 2org.eclipse.egf.common.ui.toolkit.viewers.messagesRESOURCE_BUNDLELjava/util/ResourceBundle;()VCode java/util/ResourceBundle  getBundle.(Ljava/lang/String;)Ljava/util/ResourceBundle;  LineNumberTableLocalVariableTable   this4Lorg/eclipse/egf/common/ui/toolkit/viewers/Messages; getString&(Ljava/lang/String;)Ljava/lang/String; ! #java/lang/StringBuilder %'&java/lang/String ()valueOf(C)Ljava/lang/String; "+ ,(Ljava/lang/String;)V ". /0append-(Ljava/lang/String;)Ljava/lang/StringBuilder; "2 /3(C)Ljava/lang/StringBuilder; "5 67toString()Ljava/lang/String;9"java/util/MissingResourceExceptionkey_pe$Ljava/util/MissingResourceException; SourceFile Messages.java!  -   3*   f"* L"Y!$**-!148&' (": ;<=> Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/TransferListViewer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1823 Text-content-md5: d50e47147ba459e5634fcd33ef046fbd Text-content-sha1: 3914daf965e69a5d9051e9055a73cf8c55439ff7 Content-length: 1882 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1C'(Lorg/eclipse/swt/widgets/Composite;I)VCode  )(Lorg/eclipse/swt/widgets/Composite;III)VLineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/common/ui/toolkit/viewers/TransferListViewer;parent_p#Lorg/eclipse/swt/widgets/Composite;style_p  Dorg/eclipse/egf/common/ui/toolkit/viewers/DefaultListContentProvider  ()V  setLeftContentProvider/(Lorg/eclipse/jface/viewers/IContentProvider;)V ! "setRightContentProvider$'org/eclipse/jface/viewers/LabelProvider # ' ()setLeftLabelProvider-(Lorg/eclipse/jface/viewers/ILabelProvider;)V + ,)setRightLabelProviderleftViewerStyleBits_prightViewerStyleBits_pproviderFLorg/eclipse/egf/common/ui/toolkit/viewers/DefaultListContentProvider; labelProvider)Lorg/eclipse/jface/viewers/LabelProvider; doLeftViewerQ(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/jface/viewers/StructuredViewer;6$org/eclipse/jface/viewers/ListViewer 8 9:getLeftViewerStyleBits()I 5<  doRightViewer ? @:getRightViewerStyleBits SourceFileTransferListViewer.java!  O *+    & '      4*+Y:** #Y%:*&**"1 2346'7-839H4444-4."/0' 1234 A 5Y+*7;@  =4 A 5Y+*>;H  AB Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/TransferTreeViewer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1217 Text-content-md5: 3c86b29c490052b727293050996404f4 Text-content-sha1: 26c73f52c45de388c083d0c24f30a681e43eeb20 Content-length: 1276 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)'(Lorg/eclipse/swt/widgets/Composite;I)VCode  )(Lorg/eclipse/swt/widgets/Composite;III)VLineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/common/ui/toolkit/viewers/TransferTreeViewer;parent_p#Lorg/eclipse/swt/widgets/Composite;style_p  leftViewerStyleBits_prightViewerStyleBits_p doLeftViewerQ(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/jface/viewers/StructuredViewer;$org/eclipse/jface/viewers/TreeViewer   getLeftViewerStyleBits()I "  doRightViewer % & getRightViewerStyleBits SourceFileTransferTreeViewer.java!  O *+    % &      ` *+ 0 14      A Y+*!8  # A Y+*$!@  '( Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 990 Text-content-md5: 0d6efc77cd2a8f5c700824c6cc71624a Text-content-sha1: 723f2f6f78f63b78572b099c25d03158de95b764 Content-length: 1000 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### AbstractTransferViewer.addallelements.tooltip=Add all elements. AbstractTransferViewer.list.available.tooltip=Available elements. AbstractTransferViewer.list.selected.tooltip=Selected elements AbstractTransferViewer.addselectedelements.tooltip=Add selected element(s). AbstractTransferViewer.removeselectedelements.tooltip=Remove selected element(s). AbstractTransferViewer.removeallelements.tooltip=Remove all elements. Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/widgets Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/widgets/handler Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1403 Text-content-md5: bd3c0ad8266bc0fd4ed1557e8362d21d Text-content-sha1: a0e06a110fcdab9a3690b1b144a4433904d50186 Content-length: 1462 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1DIorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandlerjava/lang/Object _controlsLjava/util/List; Signature3Ljava/util/List;()VCode  LineNumberTableLocalVariableTablethisKLorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler; addControl$(Lorg/eclipse/swt/widgets/Control;)V  java/util/ArrayList  (I)V java/util/List  add(Ljava/lang/Object;)Z control_p!Lorg/eclipse/swt/widgets/Control;handleSelection)(Lorg/eclipse/jface/viewers/ISelection;)V & '(doHandleSelection)(Lorg/eclipse/jface/viewers/ISelection;)Z * +,iterator()Ljava/util/Iterator; .0/java/util/Iterator 12next()Ljava/lang/Object;4org/eclipse/swt/widgets/Control 36 78 setEnabled(Z)V .: ;<hasNext()Z selection_p&Lorg/eclipse/jface/viewers/ISelection;enabledZcontrol SourceFileSelectionChangedHandler.java!  /*   _**Y*+W$%'(!"#$ /*+%=*):-3N-59023$2.5*//=>)?@A"'(BC Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/AbstractTooltipLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2939 Text-content-md5: a6a5a28071f85c50bc059c1c690a51d8 Text-content-sha1: 21bc1a1676931796f26795f71839d2a9f4861928 Content-length: 2998 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1j>org/eclipse/egf/common/ui/viewers/AbstractTooltipLabelProvider+org/eclipse/jface/viewers/CellLabelProvider(org/eclipse/jface/viewers/ILabelProviderTOOLTIP_TIME_DISPLAYEDI ConstantValueXDISPLAY_DELAY_TIME_tooltipTimeDisplayed_tooltipDisplayDelayTime_labelProvider*Lorg/eclipse/jface/viewers/ILabelProvider;/(Lorg/eclipse/jface/viewers/ILabelProvider;II)VCode  ()V      LineNumberTableLocalVariableTablethis@Lorg/eclipse/egf/common/ui/viewers/AbstractTooltipLabelProvider;labelProvider_ptooltipTimeDisplayed_ptooltipDisplayDelayTime_p-(Lorg/eclipse/jface/viewers/ILabelProvider;)V & getToolTipText&(Ljava/lang/Object;)Ljava/lang/String;getToolTipShift4(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Point;,org/eclipse/swt/graphics/Point +. /(II)Vobject_pLjava/lang/Object;getToolTipDisplayDelayTime(Ljava/lang/Object;)IgetToolTipTimeDisplayedupdate)(Lorg/eclipse/jface/viewers/ViewerCell;)V 8:9$org/eclipse/jface/viewers/ViewerCell ;< getElement()Ljava/lang/Object; > ?(getText 8A BCsetText(Ljava/lang/String;)V E FGgetImage4(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image; 8I JKsetImage#(Lorg/eclipse/swt/graphics/Image;)Vviewer_p&Lorg/eclipse/jface/viewers/ViewerCell;element E element_p > addListener5(Lorg/eclipse/jface/viewers/ILabelProviderListener;)V U RS U listener_p2Lorg/eclipse/jface/viewers/ILabelProviderListener;dispose [ Y [isLabelProperty'(Ljava/lang/Object;Ljava/lang/String;)Z ` ]^ ` property_pLjava/lang/String;removeListener f dS f SourceFile!AbstractTooltipLabelProvider.java!       l**+**45 678* !"#$D *+Xз% A B  !'()*> +Y-O  01239*W 01439*_ 0156b+7M+*,=@+*,DHghij  LMN1FG? *+Op  P1?(? *+Qw  P1RSL*+T*+V WXY@*Z*\   ]^Y*+,_*+,a  P1bcdSL*+e*+g WXhi Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1339 Text-content-md5: 0ad96a1ed942336a432b9d57b74680f9 Text-content-sha1: 5ea918c52fef06dfbe6ee5f6c6bdfd74aa243b8c Content-length: 1398 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 14=org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$1java/lang/Object3org/eclipse/jface/viewers/ISelectionChangedListenerthis$0=Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;@(Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;)VCode    ()VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$1;selectionChanged4(Lorg/eclipse/jface/viewers/SelectionChangedEvent;)V /org/eclipse/jface/viewers/SelectionChangedEvent  getSelection(()Lorg/eclipse/jface/viewers/ISelection;  $org/eclipse/jface/viewers/ISelection !"isEmpty()Z $&%;org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons '( updateButtons)(Lorg/eclipse/jface/viewers/ISelection;)Vevent_p1Lorg/eclipse/jface/viewers/SelectionChangedEvent; selection&Lorg/eclipse/jface/viewers/ISelection; SourceFileAbstractViewerWithButtons.javaEnclosingMethod 12init&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses   8 *+ * U   f+M,* ,#[]^`a )*+,-./$03  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1605 Text-content-md5: b960dcc68ff25dc547ea5abd6c193fd7 Text-content-sha1: 4ec19b903e9eb30971bd46023b6ad0a0a38f52a6 Content-length: 1664 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 19=org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$2'org/eclipse/swt/events/SelectionAdapterthis$0=Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;@(Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;)VCode    ()VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$2;widgetDefaultSelected*(Lorg/eclipse/swt/events/SelectionEvent;)V  buttonSelectede_p'Lorg/eclipse/swt/events/SelectionEvent;widgetSelected %org/eclipse/swt/events/SelectionEvent  widget Lorg/eclipse/swt/widgets/Widget;"org/eclipse/swt/widgets/Button $&%org/eclipse/swt/widgets/Widget '(getData()Ljava/lang/Object; *,+;org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons -5(Lorg/eclipse/swt/widgets/Button;Ljava/lang/Object;)Ve SourceFileAbstractViewerWithButtons.javaEnclosingMethod 34 createButtonso(Lorg/eclipse/swt/widgets/Composite;[Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData;)V InnerClasses7Forg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData ButtonData  8 *+ *     >*+  >*+  N* +!+#) ./01*256*8 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1599 Text-content-md5: fd8921c0949638971b468f1a5fc10abd Text-content-sha1: 78a5753edb9d5b78c269137480ed0897e0ce211d Content-length: 1658 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 15Forg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonDatajava/lang/Object_labelLjava/lang/String;_styleI_dataLjava/lang/Object;_selectionChangedHandlerKLorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;this$0=Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;(Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;Ljava/lang/String;ILjava/lang/Object;Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;)VCode    ()V       LineNumberTableLocalVariableTablethisHLorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData;label_pstyle_pdata_pselectionChangedHandler_pgetLabel()Ljava/lang/String;getStyle()IgetData()Ljava/lang/Object;getSelectionChangedHandlerM()Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler; SourceFileAbstractViewerWithButtons.java InnerClasses3;org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons ButtonData!    *+**,***A< =>?@ 4 !" # $ %  & '(/*H !")*/*P !"+,/*X !"-./*` !"/01 24 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6148 Text-content-md5: 578301c1e9f0cf7c94dd49aeda6191d5 Text-content-sha1: a938d33bd8c9b2dbadb73ab20facb4321ce7f7a5 Content-length: 6207 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1;org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtonsjava/lang/Object_buttons![Lorg/eclipse/swt/widgets/Button; _buttonDataI[Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData; _composite#Lorg/eclipse/swt/widgets/Composite;_decoratedViewer,Lorg/eclipse/jface/viewers/StructuredViewer;_buttonClickedListener:Lorg/eclipse/egf/common/ui/viewers/IButtonClickedListener;_viewerSelectionChangedListener5Lorg/eclipse/jface/viewers/ISelectionChangedListener;()VCode  LineNumberTableLocalVariableTablethis=Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;&(Lorg/eclipse/swt/widgets/Composite;)V  initparent_p  !"createInternalCompositeH(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Composite; $ & '( createViewerQ(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/jface/viewers/StructuredViewer; * ,=org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$1 +. /@(Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;)V 1  354*org/eclipse/jface/viewers/StructuredViewer 67addSelectionChangedListener8(Lorg/eclipse/jface/viewers/ISelectionChangedListener;)V 9 :;createButtonDataK()[Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData; = >? createButtonso(Lorg/eclipse/swt/widgets/Composite;[Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData;)V isEditable()Z updateButtons)(Lorg/eclipse/jface/viewers/ISelection;)V E  GIHForg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData JKgetSelectionChangedHandlerM()Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler; MONIorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler PChandleSelection selection_p&Lorg/eclipse/jface/viewers/ISelection; buttonDataHLorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData;selectionChangedHandlerKLorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;X!org/eclipse/swt/widgets/Composite WZ ['(Lorg/eclipse/swt/widgets/Composite;I)V]!org/eclipse/swt/layout/GridLayout \_ `(IZ)V Wb cd setLayout#(Lorg/eclipse/swt/widgets/Layout;)Vforg/eclipse/swt/layout/GridData eh i(IIZZ)V Wk lm setLayoutData(Ljava/lang/Object;)V compositegridData!Lorg/eclipse/swt/layout/GridData; r @A Wt uv setEnabled(Z)V \x yz marginHeightI \| }z marginWidthorg/eclipse/swt/widgets/Button  =org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$2 . G getLabel()Ljava/lang/String; G getStyle()I   createButtonX(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;I)Lorg/eclipse/swt/widgets/Button; addSelectionListener-(Lorg/eclipse/swt/events/SelectionListener;)V G getData()Ljava/lang/Object; msetData M  addControl$(Lorg/eclipse/swt/widgets/Control;)V  createEmptySpaceE(Lorg/eclipse/swt/widgets/Composite;I)Lorg/eclipse/swt/widgets/Label; buttonData_pbuttonContainerlayout#Lorg/eclipse/swt/layout/GridLayout;listener)Lorg/eclipse/swt/events/SelectionAdapter;ilabelLjava/lang/String;stylebutton Lorg/eclipse/swt/widgets/Button;handlerbuttonSelected5(Lorg/eclipse/swt/widgets/Button;Ljava/lang/Object;)V   8org/eclipse/egf/common/ui/viewers/IButtonClickedListener  buttonClicked 3  getSelection(()Lorg/eclipse/jface/viewers/ISelection;  BCselectedButton_pdata_pLjava/lang/Object; selection Z setText(Ljava/lang/String;)V klabel_pstyle_porg/eclipse/swt/widgets/Label Z e zhorizontalSpan e z widthHint e z heightHint kspan_pLorg/eclipse/swt/widgets/Label;getDecoratedViewer.()Lorg/eclipse/jface/viewers/StructuredViewer;setButtonClickedListener=(Lorg/eclipse/egf/common/ui/viewers/IButtonClickedListener;)VbuttonClickedListener_p SourceFileAbstractViewerWithButtons.java InnerClasses ButtonData!   3* >@ F **+GH I   9**+#***#%)*+Y*-0*)*02**#*8<Q SU!d,f8g99 @A,o BC/*DY:6>2M,F: +Lxyz{%x.~*//QRST UV:;'(!"*WY+YM,\Y^aeYgN,-j, #(***  n #op>? ,,WY+YN-*qs\Y^:Zw{-aeY~g:-j*,D*,Y*:6a,2:: 6  >*-  :   F:    * S *-W,n '39HNS\flry   'HopflihzrUSTyN Gz 0 V x **+,*)N*-*   R+Y+:,ǻeYg:!(>++ ++z! op1Y+NeYg:-- #)/ 411 1z 'op/*) >*+ +G Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/DefaultTreeNode.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1097 Text-content-md5: 98f24ab34451710f15efabd7539b06d7 Text-content-sha1: 042869e5ce58645ea9fa2736f1ede732736d9427 Content-length: 1156 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1$1org/eclipse/egf/common/ui/viewers/DefaultTreeNodejava/lang/Object+org/eclipse/egf/common/ui/viewers/ITreeNode_parent-Lorg/eclipse/egf/common/ui/viewers/ITreeNode;0(Lorg/eclipse/egf/common/ui/viewers/ITreeNode;)VCode  ()V  LineNumberTableLocalVariableTablethis3Lorg/eclipse/egf/common/ui/viewers/DefaultTreeNode;parent_p getChildren0()[Lorg/eclipse/egf/common/ui/viewers/ITreeNode; getParent/()Lorg/eclipse/egf/common/ui/viewers/ITreeNode; hasChildren()Z isHandling(Ljava/lang/Object;)Z element_pLjava/lang/Object;comparisonPriority()I SourceFileDefaultTreeNode.java!  F * *+    ,%  /*,  ,3  6: ! ,A "# Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/IButtonClickedListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 239 Text-content-md5: 9b87ef30bdf40eec9bf8facf92604291 Text-content-sha1: a968a62e291cd502af1c0f3ff92461fc90f8e5e9 Content-length: 298 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 8org/eclipse/egf/common/ui/viewers/IButtonClickedListenerjava/lang/Object buttonClicked5(Lorg/eclipse/swt/widgets/Button;Ljava/lang/Object;)V SourceFileIButtonClickedListener.java Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/IContentHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 243 Text-content-md5: 3b0cae5587e969e47feaf92d8330c97f Text-content-sha1: 32cbb8e67dd33958c3994aa47fe64cc7d3283b15 Content-length: 302 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 1org/eclipse/egf/common/ui/viewers/IContentHandlerjava/lang/ObjectcreateNewElement()Ljava/lang/Object; removeElement(Ljava/lang/Object;)V SourceFileIContentHandler.java  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/IOrderedContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 244 Text-content-md5: 3305926d925d0d718e2086ac8c0302be Text-content-sha1: 54208579ec3d3dbd62e3766ea374c2f461d83ff3 Content-length: 303 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 9org/eclipse/egf/common/ui/viewers/IOrderedContentProviderjava/lang/Object4org/eclipse/jface/viewers/IStructuredContentProviderswap(II)V SourceFileIOrderedContentProvider.java  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/ITreeNode.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 384 Text-content-md5: fd2aedca5a3c3f27e1272cee7e4fb4e4 Text-content-sha1: 71265d245b59c88b30dd83c520013bc621a4232b Content-length: 443 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1+org/eclipse/egf/common/ui/viewers/ITreeNodejava/lang/Object getChildren0()[Lorg/eclipse/egf/common/ui/viewers/ITreeNode; getParent/()Lorg/eclipse/egf/common/ui/viewers/ITreeNode; hasChildren()Z isHandling(Ljava/lang/Object;)ZcomparisonPriority()I SourceFileITreeNode.java    Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 795 Text-content-md5: e7eb98a60b6b4056f8fc0ba09b445741 Text-content-sha1: b24bd6cbe455cf57e82c84d901b853c022b63edf Content-length: 854 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*org/eclipse/egf/common/ui/viewers/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue *org.eclipse.egf.common.ui.viewers.messages1OrderedListViewerWithAddAndRemove_AddButton_Label4OrderedListViewerWithAddAndRemove_RemoveButton_Label!SortedListViewer_DownButton_TitleSortedListViewer_UpButton_Title()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable  this,Lorg/eclipse/egf/common/ui/viewers/Messages; SourceFile Messages.java!    , 3* "$  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/OrderedListViewer$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2045 Text-content-md5: 7fb2411a0721be5427c15a1ee6dea61b Text-content-sha1: 39798b939a5a6428bebe6cab9800daf4ce959418 Content-length: 2104 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1X5org/eclipse/egf/common/ui/viewers/OrderedListViewer$1java/lang/Object8org/eclipse/egf/common/ui/viewers/IButtonClickedListenerthis$05Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;8(Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;)VCode    ()VLineNumberTableLocalVariableTablethis7Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer$1; buttonClicked5(Lorg/eclipse/swt/widgets/Button;Ljava/lang/Object;)V 3org/eclipse/egf/common/ui/viewers/OrderedListViewer getDecoratedViewer.()Lorg/eclipse/jface/viewers/StructuredViewer;  *org/eclipse/jface/viewers/StructuredViewer !" getSelection(()Lorg/eclipse/jface/viewers/ISelection; $ %&access$0()Ljava/lang/Object; ( )*equals(Ljava/lang/Object;)Z , -&access$1 /10$org/eclipse/jface/viewers/ISelection 23isEmpty()Z 5 67getSelectionIndex()I 9 :;getContentProvider.()Lorg/eclipse/jface/viewers/IContentProvider;=9org/eclipse/egf/common/ui/viewers/IOrderedContentProvider <? @Aswap(II)V C DdelegateButtonClickedclickedButton_p Lorg/eclipse/swt/widgets/Button;data_pLjava/lang/Object;decoratedViewer,Lorg/eclipse/jface/viewers/StructuredViewer; selection&Lorg/eclipse/jface/viewers/ISelection;selectionElementIndexIelementToSwapWithIndexcontentProvider,Lorg/eclipse/jface/viewers/IContentProvider; SourceFileOrderedListViewer.javaEnclosingMethod V&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses   8 *+ * G   1* N-:#,' +,'\.* 466#,' d6+,' `6-8:<<> * +,BBNOP"R,S-V6X9ZC[L\V]\`bajc{fhREFGH}IJwKL6EMN9BONbPQRSTUW  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/OrderedListViewer$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1023 Text-content-md5: b00285cf6364713c584b1012a6d6410a Text-content-sha1: ca5e870a7e96fede5bdacfae0c50d911875ec29b Content-length: 1082 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1'5org/eclipse/egf/common/ui/viewers/OrderedListViewer$2Iorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandlerthis$05Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;8(Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;)VCode    ()VLineNumberTableLocalVariableTablethis7Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer$2;doHandleSelection)(Lorg/eclipse/jface/viewers/ISelection;)Z 3org/eclipse/egf/common/ui/viewers/OrderedListViewer getSelectionIndex()I selection_p&Lorg/eclipse/jface/viewers/ISelection;resultZselectionIndexI SourceFileOrderedListViewer.javaEnclosingMethod %"initializeSelectionChangedHandlers InnerClasses  8 *+ *  z   j=* >= *  !"#$&  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/OrderedListViewer$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1060 Text-content-md5: 1f54631e8be49d2ea521b8272f2afe0c Text-content-sha1: 735d78f69729f6ae8256b8b2e7b0928aeabc6e5e Content-length: 1119 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*5org/eclipse/egf/common/ui/viewers/OrderedListViewer$3Iorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandlerthis$05Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;8(Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;)VCode    ()VLineNumberTableLocalVariableTablethis7Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer$3;doHandleSelection)(Lorg/eclipse/jface/viewers/ISelection;)Z 3org/eclipse/egf/common/ui/viewers/OrderedListViewer getSelectionIndex()I  getElementCount selection_p&Lorg/eclipse/jface/viewers/ISelection;resultZselectionIndexI SourceFileOrderedListViewer.javaEnclosingMethod ("initializeSelectionChangedHandlers InnerClasses  8 *+ *     s=* >* d= * ! "#$%&')  Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/OrderedListViewer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4992 Text-content-md5: 99069c92f34234145de1185443c33d3f Text-content-sha1: 27202aab882f9132af6ebb2100522178af3c8a22 Content-length: 5051 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 13org/eclipse/egf/common/ui/viewers/OrderedListViewer;org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtonsUP_BUTTON_DATALjava/lang/Object;DOWN_BUTTON_DATA__buttonsLabels[Ljava/lang/String;__buttonsStyles[IDEFAULT_LIST_VIEWER_STYLEI ConstantValue #_selectionChangedHandlerForUpButtonKLorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;%_selectionChangedHandlerForDownButton()VCodejava/lang/Object       java/lang/String "$#*org/eclipse/egf/common/ui/viewers/Messages %&SortedListViewer_UpButton_TitleLjava/lang/String; "( )&!SortedListViewer_DownButton_Title +  - LineNumberTableLocalVariableTable&(Lorg/eclipse/swt/widgets/Composite;)V 2 045org/eclipse/egf/common/ui/viewers/OrderedListViewer$1 36 78(Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;)V 9 :;setButtonClickedListener=(Lorg/eclipse/egf/common/ui/viewers/IButtonClickedListener;)Vthis5Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;parent_p#Lorg/eclipse/swt/widgets/Composite;delegateButtonClicked5(Lorg/eclipse/swt/widgets/Button;Ljava/lang/Object;)VclickedButton_p Lorg/eclipse/swt/widgets/Button;data_p"initializeSelectionChangedHandlersG5org/eclipse/egf/common/ui/viewers/OrderedListViewer$2 F6 J L5org/eclipse/egf/common/ui/viewers/OrderedListViewer$3 K6 O getSelectionIndex()I S TUgetUnderlyingViewerControl#()Lorg/eclipse/swt/widgets/Control;Worg/eclipse/swt/widgets/List VY PQ[org/eclipse/swt/widgets/Table ZYselectionIndexcontrol!Lorg/eclipse/swt/widgets/Control;listLorg/eclipse/swt/widgets/List;tableLorg/eclipse/swt/widgets/Table;getElementCount Vf gQ getItemCount Zf itemCount k lmgetDecoratedViewer.()Lorg/eclipse/jface/viewers/StructuredViewer; oqp*org/eclipse/jface/viewers/StructuredViewer rU getControlcreateButtonDataK()[Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData; v E x yzcreateExtraButtonData()Ljava/util/List;|Forg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData {~ (Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;Ljava/lang/String;ILjava/lang/Object;Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;)V java/util/List add(Ljava/lang/Object;)Z Qsize toArray(([Ljava/lang/Object;)[Ljava/lang/Object;I[Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData; buttonDataLjava/util/List;LocalVariableTypeTableZLjava/util/List; Signature\()Ljava/util/List;java/util/ArrayList (I)V createViewerQ(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/jface/viewers/StructuredViewer;%org/eclipse/jface/viewers/TableViewer '(Lorg/eclipse/swt/widgets/Composite;I)V qorg/eclipse/swt/layout/GridData (IIZZ)V org/eclipse/swt/widgets/Control  setLayoutData(Ljava/lang/Object;)V composite_p listViewer'Lorg/eclipse/jface/viewers/TableViewer;gridData!Lorg/eclipse/swt/layout/GridData;access$0()Ljava/lang/Object;access$1 SourceFileOrderedListViewer.java InnerClasses ButtonData!    h8YYY!SY'S* YOYO,.% )-'17!/0N*+1*3Y*58.EGj/<=>?@A?.t/ <=BCDEK*FY*HI*KY*MN.z / <=PQ.<*RM,V,VN-X<,Z ,ZN-\<.& "',/4.<=,] '^_`a'bcdQ.<*RM,V,VN-e<,Z ,ZN-h<.& "',/4.<=,i '^_`a'bcTU2*jn./ <=st\*u*wL+{Y**2,.*I}W+{Y**2,.*N}W++{. )I/\<= S  Syz3 Y./  <=&Y+ M,NY:-,. $/4&<=&? ^_$.%/$.)/"{3FK Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/OrderedListViewerWithAddAndRemove.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3554 Text-content-md5: bc9e8389a1921abbdaa01a4bf0da96cf Text-content-sha1: b4011a7d1f6f8007dadf93f7a9f958211e7e4eb7 Content-length: 3613 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Corg/eclipse/egf/common/ui/viewers/OrderedListViewerWithAddAndRemove3org/eclipse/egf/common/ui/viewers/OrderedListViewerADD_BUTTON_DATALjava/lang/Object;REMOVE_BUTTON_DATA()VCode java/lang/Object       LineNumberTableLocalVariableTable&(Lorg/eclipse/swt/widgets/Composite;)V  thisELorg/eclipse/egf/common/ui/viewers/OrderedListViewerWithAddAndRemove;parent_p#Lorg/eclipse/swt/widgets/Composite;createExtraButtonData()Ljava/util/List; Signature\()Ljava/util/List; " $Forg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData &('*org/eclipse/egf/common/ui/viewers/Messages )*1OrderedListViewerWithAddAndRemove_AddButton_LabelLjava/lang/String; , -.createAddButtonHandlerM()Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler; #0 1(Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;Ljava/lang/String;ILjava/lang/Object;Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;)V 354java/util/List 67add(Ljava/lang/Object;)Z &9 :*4OrderedListViewerWithAddAndRemove_RemoveButton_Label < =.createRemoveButtonHandlerresultLjava/util/List;LocalVariableTypeTableZLjava/util/List;getContentHandler5()Lorg/eclipse/egf/common/ui/viewers/IContentHandler;delegateButtonClicked5(Lorg/eclipse/swt/widgets/Button;Ljava/lang/Object;)V G HIgetDecoratedViewer.()Lorg/eclipse/jface/viewers/StructuredViewer; KML*org/eclipse/jface/viewers/StructuredViewer NOgetContentProvider.()Lorg/eclipse/jface/viewers/IContentProvider; Q BC S T7equals VXW1org/eclipse/egf/common/ui/viewers/IContentHandler YZcreateNewElement()Ljava/lang/Object; \^]*org/eclipse/jface/viewers/IContentProvider _` inputChangedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V Kb cd getSelection(()Lorg/eclipse/jface/viewers/ISelection;f.org/eclipse/jface/viewers/IStructuredSelection eh iZgetFirstElement Vk lm removeElement(Ljava/lang/Object;)VclickedButton_p Lorg/eclipse/swt/widgets/Button;data_pcontentProvider,Lorg/eclipse/jface/viewers/IContentProvider;contentHandler3Lorg/eclipse/egf/common/ui/viewers/IContentHandler; objectToAdd selection&Lorg/eclipse/jface/viewers/ISelection;objectToRemove SourceFile&OrderedListViewerWithAddAndRemove.java InnerClasses};org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons ButtonData!  = Y  Y  $ >*+ +, =*!L+#Y*%*+/2W+#Y*8*;/2W+34 5;6=8>?@ 8>A-. ,@ =. ,J BCDE *FJN*P:,R% U:-*F[I,R?*Fa:eeg: j-*F[2 YZ[\*]:^D_M`eajbsdfRnopyqrsst*uM3vwexyz{ #|~ Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/ViewerWithAddAndRemove.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1668 Text-content-md5: f63ec3469732b87ebafd4821a8c128e7 Text-content-sha1: 80769bc5c94a758a62739129f32488e89825d3b8 Content-length: 1727 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 158org/eclipse/egf/common/ui/viewers/ViewerWithAddAndRemove;org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtonsADD_BUTTON_DATALjava/lang/String; ConstantValue LV_ADDREMOVE_BUTTON_DATA  LV_REMOVE()VCode  LineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/common/ui/viewers/ViewerWithAddAndRemove;&(Lorg/eclipse/swt/widgets/Composite;)V  parent_p#Lorg/eclipse/swt/widgets/Composite;createButtonDataK()[Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData;Forg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons$ButtonData "!*org/eclipse/egf/common/ui/viewers/Messages #1OrderedListViewerWithAddAndRemove_AddButton_Label % &'createAddHandlerM()Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler; ) *(Lorg/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons;Ljava/lang/String;ILjava/lang/Object;Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;)V , -4OrderedListViewerWithAddAndRemove_RemoveButton_Label / 0'createRemoveHandler SourceFileViewerWithAddAndRemove.java InnerClasses ButtonData!   3* %&  >*+ -.c 1YY**$(SYY*+ *.(S6706 1&',? 0',G 123 4 Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 755 Text-content-md5: d8d52e80d9266a555a5b000b2ab429ef Text-content-sha1: f7bbeec35f8682475dd952eea743b0a2643ed04b Content-length: 765 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### SortedListViewer_UpButton_Title=Up SortedListViewer_DownButton_Title=Down OrderedListViewerWithAddAndRemove_AddButton_Label=Add OrderedListViewerWithAddAndRemove_RemoveButton_Label=Remove Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/wizard Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/wizard/page Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/bin/org/eclipse/egf/common/ui/wizard/page/AbstractWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3612 Text-content-md5: 5a2b04975a90e5a9cf7a21d81ab49913 Text-content-sha1: 3e6fcd148ccc99998a3e38e3f337f1edf3631fd8 Content-length: 3671 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18org/eclipse/egf/common/ui/wizard/page/AbstractWizardPage#org/eclipse/jface/wizard/WizardPage_computeCompleteStatusZ_completeStatus(Ljava/lang/String;)VCode     initialize()VLineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/common/ui/wizard/page/AbstractWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;   createControl&(Lorg/eclipse/swt/widgets/Composite;)V " #$ getPageTitle()Ljava/lang/String; & ' setTitle ) *$getPageDescription , - setDescription / 01getContentNumColumn()I 3 45createCompositeI(Lorg/eclipse/swt/widgets/Composite;I)Lorg/eclipse/swt/widgets/Composite; 7 89initializeDialogUnits$(Lorg/eclipse/swt/widgets/Control;)V ; < createPageArea > ? updateButtons ACB!org/eclipse/swt/widgets/Composite DE computeSize$(II)Lorg/eclipse/swt/graphics/Point; AG HI getLayoutData()Ljava/lang/Object;Korg/eclipse/swt/layout/GridData MONorg/eclipse/swt/graphics/Point PQyI JS TQ heightHint VXWjava/lang/Math YZmax(II)I \ ]$getHelpContextId _a`org/eclipse/ui/PlatformUI bc getWorkbench()Lorg/eclipse/ui/IWorkbench; egforg/eclipse/ui/IWorkbench hi getHelpSystem,()Lorg/eclipse/ui/help/IWorkbenchHelpSystem; kml(org/eclipse/ui/help/IWorkbenchHelpSystem nosetHelp6(Lorg/eclipse/swt/widgets/Control;Ljava/lang/String;)Vparent_p#Lorg/eclipse/swt/widgets/Composite;contentsize Lorg/eclipse/swt/graphics/Point;gridData!Lorg/eclipse/swt/layout/GridData; helpContextId isReadOnly()Z { |ycomputeCompleteStatus ~ setPageComplete(Z)VisPageCompletegetCompleteStatushandlePageLayout  y   A '(Lorg/eclipse/swt/widgets/Composite;I)V!org/eclipse/swt/layout/GridLayout  Q numColumns A  setLayout#(Lorg/eclipse/swt/widgets/Layout;)V  9 setControl numColumns_p compositelayout#Lorg/eclipse/swt/layout/GridLayout; performHelp k  displayHelp SourceFileAbstractWizardPage.java!  F *+ * +, -   \ *+,-* 67 8*     4* ?@   h**!%**(+*+*.2M*,6*,:*=,@N+FJ:-L `RUR*[:^d,j6 GHJLN$P(R/T8WLZR[W\g^>hhpqNrq/9st80uvRwxy? @***z}jk l y /*zs y<   5pq01 , #$*$]$ , |y O***** 45 &AY+NY:-*-- $4&&pq&Q q X*[L+^d+ w Node-path: plugins/org.eclipse.egf.common.ui/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 612 Text-content-md5: 114ac067e20e72418ae277a27b135d87 Text-content-sha1: 2abf6082b9c156765939167d9a861ad872fc5692 Content-length: 657 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = META-INF/,\ about.html,\ .,\ plugin.properties,\ plugin.xml src.includes = about.html Node-path: plugins/org.eclipse.egf.common.ui/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 489 Text-content-md5: 57429882911dd23c753b15c7e7f06c79 Text-content-sha1: 34118efd17109cb1ac284736db073957e6c300d2 Content-length: 534 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Common UI (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.common.ui/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 715 Text-content-md5: 490cffa18d4aa7748bb86e1f7ffe497e Text-content-sha1: e688eff2eda31f9a04cd29f2e341e129b59fc6c9 Content-length: 760 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/activator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/activator/AbstractUIActivator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6734 Text-content-md5: 42af7db36929961f32d9c34009136cc8 Text-content-sha1: afff280b153799c3abbc66acfe31bebdce4ec7c2 Content-length: 6779 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2007, 2009 La Carotte Et Le Baton. * 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: * La Carotte Et Le Baton - initial API and implementation */ package org.eclipse.egf.common.ui.activator; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.helper.StatusHelper; /** * Base class for plug-ins that integrate with the Eclipse platform UI.
* * @author fournier */ public abstract class AbstractUIActivator extends AbstractUIPlugin { private static final String ICONS_PATH = "$nl$/icons/"; //$NON-NLS-1$ /** * Returns the workbench display to be used. */ public static Display getWorkbenchDisplay() { return PlatformUI.getWorkbench().getDisplay(); } public void log(Throwable t) { log(newErrorStatus(t.getMessage(), t)); } /** * Returns a new error status for this plug-in with the given message * @param message the message to be included in the status * @param exception the exception to be included in the status or null if none * @return a new error status */ public IStatus newErrorStatus(String message, Throwable exception) { return new Status(IStatus.ERROR, getPluginID(), ICommonConstants.INTERNAL_ERROR, message, exception); } /** * Logs the given message to the platform log. * * If you have an exception in hand, call log(String, Throwable) instead. * * If you have a status object in hand call log(String, IStatus) instead. * * @param message A high level UI message describing when the problem happened. */ public void log(String message) { getLog().log(StatusHelper.newStatus(getPluginID(), IStatus.ERROR, message, null)); } /** * Logs the given message and throwable to the platform log. * * If you have a status object in hand call log(String, IStatus) instead. * * * @param message A high level UI message describing when the problem happened. * @param t The throwable from where the problem actually occurred. */ public void log(String message, Throwable t) { log(message, StatusHelper.newStatus(getPluginID(), IStatus.ERROR, message, t)); } /** * Logs the given throwable to the platform log, indicating the class and method from where it is being logged (this is not necessarily where it occurred). * * @param clazz The calling class. * @param methodName The calling method name. * @param t The throwable from where the problem actually occurred. */ public void log(Class clazz, String methodName, Throwable t) { log(NLS.bind("Exception in {0}.{1}: {2}", new Object []{ clazz.getName(), methodName, t }), t); //$NON-NLS-1$ } /** * Logs the given message and status to the platform log. * * @param status The status describing the problem. Must not be null. */ public void log(IStatus status) { log(null, status); } /** * Log the given exception along with the provided message and severity indicator */ public void log(int severity, String message, Throwable e) { log(new Status(severity, getPluginID(), 0, message, e)); } /** * Logs the given message and status to the platform log. * * @param message A high level UI message describing when the problem happened. May be null. * @param status The status describing the problem. Must not be null. */ public void log(String message, IStatus status) { // 1FTUHE0: ITPCORE:ALL - API - Status & logging - loss of semantic info if (message != null) { getLog().log(StatusHelper.newStatus(getPluginID(), IStatus.ERROR, message, null)); } getLog().log(status); } /** * Get an image descriptor for given key.
* Images must be located in 'plug-in folder'/icons * * @param key_p * the key must be the file name of the related image. * @return an {@link ImageDescriptor} or null if not found */ public ImageDescriptor getImageDescriptor(String key_p) { ImageRegistry imageRegistry = getImageRegistry(); ImageDescriptor imageDescriptor = imageRegistry.getDescriptor(key_p); if (imageDescriptor == null) { imageDescriptor = createImageDescriptor(key_p); imageRegistry.put(key_p, imageDescriptor); } return imageDescriptor; } /** * Get an image for given key.
* Images must be located in 'plug-in folder'/icons * * @param key_p * the key must be the file name of the related image. * @return an {@link Image} or null if not found */ public Image getImage(String key_p) { ImageRegistry imageRegistry = getImageRegistry(); Image image = imageRegistry.get(key_p); if (image == null) { // Create an image descriptor for given id. ImageDescriptor imageDescriptor = createImageDescriptor(key_p); // Store the (id, imageDescriptor) rather than (id,image) // because with storing (id,image) the getDescriptor method will return null in later usage // this way, everything is correctly initialized. imageRegistry.put(key_p, imageDescriptor); // Everything is all right at this step, let's get the real image image = imageRegistry.get(key_p); } return image; } /** * Create an image descriptor for given key.
* Images must be located in 'plug-in folder'/icons * * @param key_p * the key must be the file name of the related image. * @return an {@link ImageDescriptor} or null if error occurred */ protected ImageDescriptor createImageDescriptor(String key_p) { ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(getPluginID(), ICONS_PATH + key_p); return imageDescriptor; } /** * Get the plug-in ID according to MANIFEST.MF definition. * * @return a String containing the plug-in ID. */ public String getPluginID() { return getBundle().getSymbolicName(); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/constant Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/constant/IUiCommonConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 869 Text-content-md5: 9576a9df29adb611c97fbd4ad78de69c Text-content-sha1: 037d31a92ceedf13429f032e4ccfbfc3f22ddee6 Content-length: 914 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.constant; /** * Common constants used in UI parts. * @author fournier */ public interface IUiCommonConstants { /** * No elements constant used by IStructuredContentProvider */ public static final Object[] NO_ELEMENT = new Object[0]; } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/ContextElementFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2284 Text-content-md5: cec60f25ed4cea4413547ce6ca577721 Text-content-sha1: 9b3c1209691a4f0a2d73eb3141b06574f54d8d80 Content-length: 2329 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.egf.common.misc.ISelectionHandler; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.SelectionDialog; /** * Implements a field editor that allows the end-user to enter a context element value. * @author Guillaume Brocard */ public class ContextElementFieldEditor extends JavaClassFieldEditor { /** * Selection handler to use if provided. */ private ISelectionHandler _selectionHandler; /** * Constructor. * @param title_p * @param openTypeDialogTitle_p * @param parent_p * @param classTypeFilter_p */ public ContextElementFieldEditor( String title_p, String openTypeDialogTitle_p, Composite parent_p, Class classTypeFilter_p ) { super( title_p, openTypeDialogTitle_p, parent_p, classTypeFilter_p ); } /** * @see org.eclipse.egf.common.ui.field.JavaClassFieldEditor#handleSelection(java.lang.Object) */ @Override protected String handleSelection(Object selectedObject_p) { String result = null; if (null != _selectionHandler) { result = _selectionHandler.handleSelection(selectedObject_p); } else { result = super.handleSelection(selectedObject_p); } return result; } /** * @see org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor#setDialogToOpen(org.eclipse.ui.dialogs.SelectionDialog) */ @Override public void setDialogToOpen(SelectionDialog dialogToOpen_p) { super.setDialogToOpen(dialogToOpen_p); } /** * Set the selection handler to handle selected object from the selection dialog. * @param handler_p */ public void setSelectionHandler(ISelectionHandler handler_p) { _selectionHandler = handler_p; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/DomainFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1692 Text-content-md5: 63f4dc7f5bfde7666be74db3f015e453 Text-content-sha1: 66667d75ffc7a0a91e627088c5076324ecefa003 Content-length: 1737 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IPath; import org.eclipse.swt.widgets.Composite; /** * Implements a field editor that allows the end-user to select an {@link IFile} used as domain. * @author fournier */ public class DomainFieldEditor extends WorkspaceFileFieldEditor { /** * Constructor. * @param title_p * @param openResourceDialogTitle_p * @param parent_p * @param container_p * @param filterExtension_p */ public DomainFieldEditor( String title_p, String openResourceDialogTitle_p, Composite parent_p, IContainer container_p, String filterExtension_p ) { super( title_p, openResourceDialogTitle_p, parent_p, container_p, filterExtension_p ); } /** * @see org.eclipse.egf.common.ui.field.WorkspaceFileFieldEditor#handleFilePath(org.eclipse.core.resources.IFile) */ @Override protected String handleFilePath(IFile file_p) { // Remove first segment which is the project path. IPath result = file_p.getFullPath().removeFirstSegments(1); return result.toString(); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/JavaClassFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5095 Text-content-md5: 98503f7ae02c9b1c2409f9938f7c56b5 Text-content-sha1: 6801cf9008d65dd1d8be1041747e810cdf4c2ad6 Content-length: 5140 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.search.IJavaSearchConstants; import org.eclipse.jdt.internal.ui.JavaUIMessages; import org.eclipse.jdt.internal.ui.dialogs.OpenTypeSelectionDialog; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.SelectionDialog; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.helper.MessageFormatHelper; import org.eclipse.egf.common.ui.internal.validators.JavaClassValidator; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; /** * Implements a field editor that allows the end-user to select a Java type. * @author fournier */ public class JavaClassFieldEditor extends ValidatingStringButtonFieldEditor { /** * Title displayed in the open type dialog. */ private String _openTypeDialogTitle; /** * Class type used to filter end-user selection. */ private Class _classTypeFilter; /** * Constructor. * @param title_p label of the text widget. * @param openTypeDialogTitle_p label displayed in the open type dialog. * @param parent_p * @param classTypeFilter_p class type filter used to filter end-user class selection. */ public JavaClassFieldEditor( String title_p, String openTypeDialogTitle_p, Composite parent_p, Class classTypeFilter_p ) { super(parent_p, title_p, null); _openTypeDialogTitle = openTypeDialogTitle_p; _classTypeFilter = classTypeFilter_p; addListeners(); } /** * @see org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor#handleSelection(java.lang.Object) */ @Override protected String handleSelection(Object selectedObject_p) { IType type = (IType) selectedObject_p; return type.getFullyQualifiedName(); } /** * Create an {@link OpenTypeSelectionDialog} * @see org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor#createDialog() */ @Override protected SelectionDialog createDialog() { // Create a Java open type dialog. SelectionDialog dialog = new OpenTypeSelectionDialog( getShell(), false, PlatformUI.getWorkbench().getProgressService(), null, IJavaSearchConstants.CLASS_AND_INTERFACE, null ); // Default dialog title. String dialogTitle = _openTypeDialogTitle; if (_classTypeFilter != null) { // Update the open type dialog title with filtered class name. String fullyQualifiedFilteredClassName = _classTypeFilter.getName(); dialogTitle = getFormattedOpenTypeDialogTitle(fullyQualifiedFilteredClassName); } // Set title and message. dialog.setTitle(dialogTitle); dialog.setMessage(JavaUIMessages.OpenTypeAction_dialogMessage); return dialog; } /** * Set the class type filter used when opening the open type dialog. * @param classTypeFilter_p the classTypeFilter to set */ public void setClassTypeFilter(Class classTypeFilter_p) { _classTypeFilter = classTypeFilter_p; IValidator validator = getValidator(); // Update the java class validator if any. if (validator != null && validator instanceof JavaClassValidator) { JavaClassValidator javaClassValidator = (JavaClassValidator) validator; javaClassValidator.setExpectedClassType(_classTypeFilter); } } /** * Get the formatted open type dialog title to take into account the filtered class name. * @param fullyQualifiedFilteredClassName_p */ private String getFormattedOpenTypeDialogTitle(String fullyQualifiedFilteredClassName_p) { // Get the class short name. int lastDotIndex = fullyQualifiedFilteredClassName_p.lastIndexOf(ICommonConstants.DOT_CHARACTER); return MessageFormatHelper.formatMessage( _openTypeDialogTitle, new String[] { fullyQualifiedFilteredClassName_p.substring(lastDotIndex + 1) } ); } /** * Add listeners on widgets contained by this field editor. */ protected void addListeners() { getTextControl().addModifyListener( new ModifyListener() { /** * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) */ @SuppressWarnings("synthetic-access") public void modifyText(ModifyEvent e_p) { refreshValidState(); } } ); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/JavaScopeClassFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3836 Text-content-md5: f0bdd9f75f9c9d5ffc64e0a93ee3edf3 Text-content-sha1: 5048864425a51063f30f5698845f60630816c707 Content-length: 3881 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.search.IJavaSearchConstants; import org.eclipse.jdt.core.search.IJavaSearchScope; import org.eclipse.jdt.core.search.SearchEngine; import org.eclipse.jdt.internal.ui.JavaUIMessages; import org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog; import org.eclipse.jdt.internal.ui.dialogs.OpenTypeSelectionDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.SelectionDialog; import org.eclipse.egf.common.ui.internal.field.FilteredJavaTypeSelectionExtension; /** * Implements a field editor that allows the end-user to select a Java type. * @author Xavier Maysonnave */ public class JavaScopeClassFieldEditor extends ValidatingStringButtonFieldEditor { /** * Title displayed in the open type dialog. */ private String _openTypeDialogTitle; /** * Java Project */ private IJavaProject _javaProject; /** * Class type used to filter end-user selection. */ private Class _classTypeFilter; /** * Constructor. * @param title_p label of the text widget. * @param openTypeDialogTitle_p label displayed in the open type dialog. * @param parent_p * @param classTypeFilter_p class type filter used to filter end-user class selection. */ public JavaScopeClassFieldEditor( String title_p, String openTypeDialogTitle_p, Composite parent_p, IJavaProject javaProject_p, Class classTypeFilter_p ) { super(parent_p, title_p, null); _openTypeDialogTitle = openTypeDialogTitle_p; _javaProject = javaProject_p; _classTypeFilter = classTypeFilter_p; addListeners(); } /** * @see org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor#handleSelection(java.lang.Object) */ @Override protected String handleSelection(Object selectedObject_p) { IType type = (IType) selectedObject_p; return type.getFullyQualifiedName(); } /** * Create an {@link OpenTypeSelectionDialog} * @see org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor#createDialog() */ @Override protected SelectionDialog createDialog() { FilteredTypesSelectionDialog dialog = new FilteredTypesSelectionDialog( getShell(), false, new ProgressMonitorDialog(getShell()), null, IJavaSearchConstants.CLASS, new FilteredJavaTypeSelectionExtension(_javaProject, _classTypeFilter) ); dialog.setTitle(_openTypeDialogTitle); dialog.setMessage(JavaUIMessages.OpenTypeAction_dialogMessage); dialog.setBlockOnOpen(true); return dialog; } /** * Add listeners on widgets contained by this field editor. */ protected void addListeners() { getTextControl().addModifyListener( new ModifyListener() { /** * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) */ @SuppressWarnings("synthetic-access") public void modifyText(ModifyEvent e_p) { refreshValidState(); } } ); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/LabelFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2384 Text-content-md5: 98c24e7737b1a72a7372f96839afa133 Text-content-sha1: 447a9811f8a86b679ca0cd6551dd9450aec5a82a Content-length: 2429 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2007, 2009 La Carotte Et Le Baton. * 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: * La Carotte Et Le Baton - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; /** * A field editor to display labels not associated with other widgets. * @author Guillaume Brocard */ public class LabelFieldEditor extends FieldEditor { private Label _label; public LabelFieldEditor(String labelText_p, Composite parent_p) { super("label", labelText_p, parent_p); //$NON-NLS-1$ } /** * @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int) */ @Override protected void adjustForNumColumns(int numColumns_p) { ((GridData) _label.getLayoutData()).horizontalSpan = numColumns_p; } /** * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int) */ @Override protected void doFillIntoGrid(Composite parent_p, int numColumns_p) { _label = getLabelControl(parent_p); GridData gridData = new GridData(); gridData.horizontalSpan = numColumns_p; gridData.horizontalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = false; gridData.verticalAlignment = GridData.CENTER; gridData.grabExcessVerticalSpace = false; _label.setLayoutData(gridData); } /** * @see org.eclipse.jface.preference.FieldEditor#doLoad() */ @Override protected void doLoad() { // Do nothing. } /** * @see org.eclipse.jface.preference.FieldEditor#doLoadDefault() */ @Override protected void doLoadDefault() { // Do nothing. } /** * @see org.eclipse.jface.preference.FieldEditor#doStore() */ @Override protected void doStore() { // Do nothing. } /** * @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls() */ @Override public int getNumberOfControls() { return 1; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/SpacerFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 934 Text-content-md5: 5e3108369c12f38edbea22ca76ce8176 Text-content-sha1: 79273ff72e1ccf4f860082ee675c5321ab02164d Content-length: 979 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.swt.widgets.Composite; /** * A field editor used as a separator in a preference page. * @author Guillaume Brocard */ public class SpacerFieldEditor extends LabelFieldEditor { /** * Constructor.
* Implemented as an empty label field editor. */ public SpacerFieldEditor(Composite parent_p) { super(ICommonConstants.EMPTY_STRING, parent_p); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3803 Text-content-md5: 390f9e2b234c784d03bdc7a5629442f8 Text-content-sha1: 79ffaca5d64f8754c9e186a41fc158ccf83491b6 Content-length: 3848 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.SelectionDialog; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.toolkit.fields.StringBrowserFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; /** * Implement a string button field editor that delegated its validation to an {@link IValidator} object if provided. * @author Guillaume Brocard */ public class ValidatingStringButtonFieldEditor extends StringBrowserFieldEditor { /** * Dialog to open when the button is pressed. */ private SelectionDialog _dialogToOpen; /** * Constructor. * @param parent_p * @param label_p * @param dialogToOpen_p */ public ValidatingStringButtonFieldEditor( Composite parent_p, String label_p, SelectionDialog dialogToOpen_p ) { super(ICommonConstants.EMPTY_STRING, label_p, parent_p, null); _dialogToOpen = dialogToOpen_p; } /** * Checks whether the class text field contains a valid value or not. * @param force_p true means force to compute the valid state again. * @return true if the field value is valid, and false if invalid. */ public boolean isValid(boolean force_p) { // Force to refresh valid state. if (force_p) { refreshValidState(); } return isValid(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.CStringButtonFieldEditor#changePressed() */ @Override protected String changePressed() { String selectedValue = null; SelectionDialog dialogToOpen = getDialogToOpen(); // If the dialog was not set, try to create it. if (null == dialogToOpen) { dialogToOpen = createDialog(); } if (null != dialogToOpen) { if (IDialogConstants.OK_ID == dialogToOpen.open()) { // Get returned types. Object[] selection = dialogToOpen.getResult(); if (null != selection && selection.length > 0) { // We are not in multi selection context. selectedValue = handleSelection(selection[0]); } } } return selectedValue; } /** * Create a specific dialog.
* Default implementation does nothing. * @return null if not implemented. */ protected SelectionDialog createDialog() { return null; } /** * Offers a way to convert the end-user object selection into a string representation displayed in the text field editor.
* This method is called when the end-user pressed "ok" to finish its selection.
* Default behavior is to cast into a String given object selection. * @param selectedObject_p * @return a not null String. */ protected String handleSelection(Object selectedObject_p) { return (String) selectedObject_p; } /** * Set the dialog to open. * @param dialogToOpen_p */ protected void setDialogToOpen(SelectionDialog dialogToOpen_p) { _dialogToOpen = dialogToOpen_p; } /** * Return the provided dialog to open when 'Browse' button is pressed. * @return null if not set. */ protected SelectionDialog getDialogToOpen() { return _dialogToOpen; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/field/WorkspaceFileFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3886 Text-content-md5: dc7e88b4f8d31ae26e3ecc3eca989c39 Text-content-sha1: cc0bd755b23ab8393ba7e3fc55785f9979e8eb30 Content-length: 3931 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.field; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.toolkit.fields.StringBrowserFieldEditor; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog; /** * Implements a field editor that allows the end-user to select an {@link IFile} in the workspace. * @author fournier */ public class WorkspaceFileFieldEditor extends StringBrowserFieldEditor { /** * Container used as root entry to open the filtered resource selection dialog. */ private IContainer _container; /** * Open resource dialog title. */ private String _openResourceDialogTitle; /** * Filter extension. */ private String _filterExtension; /** * Constructor. * @param title_p label of the text widget. * @param openResourceDialogTitle_p label displayed in the open resource dialog. * @param parent_p * @param container_p container used in open resource dialog. * @param filterExtension_p file type filter (ie *.ecore). */ public WorkspaceFileFieldEditor( String title_p, String openResourceDialogTitle_p, Composite parent_p, IContainer container_p, String filterExtension_p ) { super( ICommonConstants.EMPTY_STRING, title_p, parent_p, null ); _openResourceDialogTitle = openResourceDialogTitle_p; _container = container_p; _filterExtension = filterExtension_p; } /** * @see com.thalesgroup.mde.common.ui.toolkit.custom.CStringButtonFieldEditor#changePressed() */ @Override protected String changePressed() { String fileName = null; // Open filtered resource selection dialog. FilteredResourcesSelectionDialog dialog = new FilteredResourcesSelectionDialog(getShell(), false, _container, IResource.FILE); // Set title. dialog.setTitle(_openResourceDialogTitle); // Set initial pattern. dialog.setInitialPattern(_filterExtension); // dialog.setInitialPattern(fileName) // Open it. int result = dialog.open(); // If the end-user select something, handle it. if (result == IDialogConstants.OK_ID) { // Get returned files. Object[] files = dialog.getResult(); if (null != files && files.length > 0) { // We are not in multi selection context. IFile file = (IFile) files[0]; fileName = handleFilePath(file); } } return fileName; } /** * Allow to manage the content of the file path returned when the end-user has selected a resource.
* This implementation returns the full path of given file. * @param file_p * @return */ protected String handleFilePath(IFile file_p) { return file_p.getFullPath().toString(); } /** * Checks whether the text input field contains a valid value or not. * @param force_p true means force to compute the valid state again. * @return true if the field value is valid, and false if invalid. */ public boolean isValid(boolean force_p) { if (force_p) { refreshValidState(); } return super.isValid(); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/DataBindingHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3262 Text-content-md5: 18d8348e3001dff40070d3fc0fd35caf Text-content-sha1: 2050a578c2993b01ab2133f3af5b94631ff5cc85 Content-length: 3307 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.helper; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.core.databinding.observable.value.IValueChangeListener; import org.eclipse.jface.databinding.swt.ISWTObservableValue; import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Control; /** * Data binding helper. * @author Guillaume Brocard */ public class DataBindingHelper { /** * Create data binding between given control text attribute and named property of given object (referred to as the property holder).
* Also register given value change listener for changes on named property. * @param control_p * @param propertyName_p * @param propertyHolder_p * @param listener_p */ public static void bindTextToProperty(Control control_p, String propertyName_p, Object propertyHolder_p, IValueChangeListener listener_p) { // Create data binding. DataBindingContext bindingContext = new DataBindingContext(); IObservableValue observedProperty = BeansObservables.observeValue(propertyHolder_p, propertyName_p); // Set listener, if any. if (null != listener_p) { observedProperty.addValueChangeListener(listener_p); } // Observe text of given control, and bind it. ISWTObservableValue observedText = SWTObservables.observeText(control_p, SWT.Modify); bindingContext.bindValue(observedText, observedProperty, null, null); } /** * Create data binding between given control selection state and named property of given object (referred to as the property holder).
* Also register given value change listener for changes on named property. * @param control_p * @param propertyName_p * @param propertyHolder_p * @param listener_p */ public static void bindControlSelectionToProperty(Control control_p, String propertyName_p, Object propertyHolder_p, IValueChangeListener listener_p) { // Create data binding. DataBindingContext bindingContext = new DataBindingContext(); IObservableValue observedProperty = BeansObservables.observeValue(propertyHolder_p, propertyName_p); // Set listener, if any. if (null != listener_p) { observedProperty.addValueChangeListener(listener_p); } // Observe text of given control, and bind it. ISWTObservableValue observedControl = SWTObservables.observeSelection(control_p); bindingContext.bindValue(observedControl, observedProperty, null, null); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/DialogHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1696 Text-content-md5: c7d2153eb0d14fa2867b897c804d3e9d Text-content-sha1: 88a32d504c556b21cdf9456f1ac171882fd2bd11 Content-length: 1741 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.helper; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; /** * Provides services to easily display dialogs to the end-user. * @author fournier */ public class DialogHelper { /** * Show a confirmation dialog to the end-user. * @return */ public static boolean openDeleteConfirmationDialog(Shell parent_p, Object[] arguments_p) { return openDeleteConfirmationDialog(parent_p, Messages.DeleteElementActionConfirmDialog_Message, arguments_p); } /** * Show a delete confirmation dialog to the end-user using a customized message. * @param parent_p * @param messageToFormat_p * @param arguments_p * @return */ public static boolean openDeleteConfirmationDialog(Shell parent_p, String messageToFormat_p, Object[] arguments_p) { String formatedMessage = MessageFormatHelper.formatMessage(messageToFormat_p, arguments_p); boolean confirmed = MessageDialog.openQuestion(parent_p, Messages.DeleteElementActionConfirmDialog_Title, formatedMessage); return confirmed; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/FieldEditorHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 17665 Text-content-md5: ea4967df588642a28d5cf09f49c3026b Text-content-sha1: 7e922a8a580d6d3f7fb8ffc03a6f17f0ddbe2434 Content-length: 17710 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.helper; import org.osgi.framework.Bundle; import org.eclipse.core.resources.IContainer; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentListener; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.field.ContextElementFieldEditor; import org.eclipse.egf.common.ui.field.DomainFieldEditor; import org.eclipse.egf.common.ui.field.JavaClassFieldEditor; import org.eclipse.egf.common.ui.field.JavaScopeClassFieldEditor; import org.eclipse.egf.common.ui.field.WorkspaceFileFieldEditor; import org.eclipse.egf.common.ui.internal.validators.JavaClassValidator; import org.eclipse.egf.common.ui.toolkit.adapters.BooleanFieldEditorAdapter; import org.eclipse.egf.common.ui.toolkit.fields.CRadioGroupFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.CStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; /** * Helper to deal with field editors used in UI. * @author fournier */ public class FieldEditorHelper { /** * Create the description field editor. * @param parent_p * @param label_p * @param tooltip_p t * @param initialText_p * @param numColumns_p * @param textModificationListener_p listener used to notify modification performed on description field content. */ public static StyledText createDescriptionFieldEditor( Composite parent_p, String label_p, String tooltip_p, String initialText_p, int numColumns_p, IDocumentListener textModificationListener_p, boolean readOnly_p ) { // Create description widget. Composite textComposite = new Composite(parent_p, SWT.NONE); GridLayout gridLayout = new GridLayout(); // The composite only have one column. gridLayout.numColumns = 1; // No margin. gridLayout.marginWidth = 0; gridLayout.marginHeight = 0; // Set the text composite layout. textComposite.setLayout(gridLayout); // Set the text composite grid data. GridData textCompositeLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true); textComposite.setLayoutData(textCompositeLayoutData); textCompositeLayoutData.horizontalSpan = numColumns_p; // Create the description label on left edge. Label descriptionLabel = new Label(textComposite, SWT.LEFT); descriptionLabel.setText(label_p); // Create the text field using jface.text framework. IDocument document = new Document(); // Set initial value. if (null != initialText_p) { document.set(initialText_p); } // Register listener. document.addDocumentListener(textModificationListener_p); // Back to ui stuff. // Create a viewer to display the text. int textViewerStyle = SWT.MULTI | SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER; SourceViewer textViewer = new SourceViewer( textComposite, null, readOnly_p ? textViewerStyle | SWT.READ_ONLY : textViewerStyle ); textViewer.setDocument(document); // Get the created text. StyledText styledText = textViewer.getTextWidget(); styledText.setFont(parent_p.getFont()); // Set its layout data. GridData styledTextLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true); styledText.setLayoutData(styledTextLayoutData); // Force the composite to get an user-friendly size. FormHelper.forceControlSize(textComposite, 60, 8); return styledText; } /** * Create a check box field editor. * @param parent_p parent_p of the underlying widgets. * @param page_p the page where the created field editor is displayed. * @param label_p label of the field editor. * @param labelTooltip_p tooltip of the Label of the created field editor, provides information related to the field. * @param initialValue_p initial value of the check box. * @param horizintalIndent_p * @param verticalIndent_p * @return */ public static BooleanFieldEditorAdapter createCheckBoxFieldEditor( Composite parent_p, DialogPage page_p, String label_p, String labelTooltip_p, boolean initialValue_p, final int horizintalIndent_p, final int verticalIndent_p, final boolean readOnly_p ) { BooleanFieldEditorAdapter checkBoxFieldEditor = new BooleanFieldEditorAdapter( ICommonConstants.EMPTY_STRING, label_p, SWT.LEFT, parent_p ) { /** * @see org.eclipse.jface.preference.BooleanFieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int) */ @Override protected void doFillIntoGrid(Composite parent__p, int numColumns_p) { super.doFillIntoGrid(parent__p, numColumns_p); Button checkBox = getChangeControl(parent__p); // Read Only Mode checkBox.setEnabled(readOnly_p == false); // Get the layout data. GridData gd = (GridData) checkBox.getLayoutData(); // Insert horizontal and vertical values. gd.horizontalIndent = horizintalIndent_p; gd.verticalIndent = verticalIndent_p; } }; // Set the owner page. checkBoxFieldEditor.setPage(page_p); Button checkbox = (Button) checkBoxFieldEditor.getValueControl(); // Set the tooltip checkbox.setToolTipText(labelTooltip_p); // Set the initial value. checkbox.setSelection(initialValue_p); return checkBoxFieldEditor; } /** * Create a group with given parameters. * @param parent_p * @param label_p label displayed by the widget (can be null). * @param style_p * @param numColumns_p value of the horizontal span * @return */ public static Group createGroup( Composite parent_p, String label_p, int style_p, int numColumns_p ) { Group group = new Group(parent_p, style_p); if (null != label_p) { group.setText(label_p); } group.setFont(parent_p.getFont()); GridLayout layout = new GridLayout(); layout.horizontalSpacing = 8; layout.numColumns = numColumns_p; // Set the layout. group.setLayout(layout); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = numColumns_p; // Set the layout data. group.setLayoutData(gd); return group; } /** * Create a string field editor for given parameters. * @param parent_p parent_p of the underlying widgets. * @param page_p the page where the created field editor is displayed. * @param label_p label of the field editor. * @param labelTooltip_p tooltip of the Label of the created field editor, provides information related to the field. * @param textTooltip_p tooltip of the Text of the created field editor, used as an advisor to help the end-user to enter data that match the expected field * format. * @param textLimit_p the maximum number of characters that the field editor is capable of holding, {@link SWT#DEFAULT} means unlimited. * @param fieldEditorValidator_p the field editor validator used when the editor check its state. * @return */ public static ValidatingStringFieldEditor createStringFieldEditor( Composite parent_p, DialogPage page_p, String label_p, String labelTooltip_p, String textTooltip_p, int textLimit_p, IValidator fieldEditorValidator_p, boolean readOnly_p ) { // Create the field editor. ValidatingStringFieldEditor fieldEditor = new ValidatingStringFieldEditor( ICommonConstants.EMPTY_STRING, label_p, CStringFieldEditor.UNLIMITED, CStringFieldEditor.VALIDATE_ON_MODIFICATION, parent_p, readOnly_p ? SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY : SWT.SINGLE | SWT.BORDER ); // Set the owner page. fieldEditor.setPage(page_p); // Set the validator. fieldEditor.setValidator(fieldEditorValidator_p); // Set the label tooltip if (null != labelTooltip_p) { Label label = fieldEditor.getLabel(); label.setToolTipText(labelTooltip_p); } // Set the text tooltip if (null != textTooltip_p) { Text text = fieldEditor.getTextControl(); text.setToolTipText(textTooltip_p); } // Set the text limit if (textLimit_p != SWT.DEFAULT) { fieldEditor.setTextLimit(textLimit_p); } return fieldEditor; } /** * Create a radio group field editor. * @param parent_p * @param page_p the page where the created field editor is displayed. * @param title_p * @param numColumns_p * @param labelAndValues_p * @param readOnly_p * @return */ public static CRadioGroupFieldEditor createRadioGroupFieldEditor( Composite parent_p, String title_p, int numColumns_p, String[][] labelAndValues_p, boolean readOnly_p ) { CRadioGroupFieldEditor group = new CRadioGroupFieldEditor( ICommonConstants.EMPTY_STRING, title_p, numColumns_p, labelAndValues_p, parent_p, true ); // Read Only Mode group.getRadioBoxControl(parent_p).setEnabled(readOnly_p == false); return group; } /** * Create a Java class field editor. * @param parent_p * @param page_p the page where the created field editor is displayed. * @param title_p * @param openTypeDialogTitle_p * @param classLoader_p * @param bundle_p * @param classTypeFilter_p * @return */ public static JavaScopeClassFieldEditor createJavaScopeClassFieldEditor( Composite parent_p, DialogPage page_p, String title_p, String openTypeDialogTitle_p, IJavaProject javaProject_p, Class classTypeFilter_p, final boolean readOnly_p ) { JavaScopeClassFieldEditor fieldEditor = new JavaScopeClassFieldEditor( title_p, openTypeDialogTitle_p, parent_p, javaProject_p, classTypeFilter_p ) { @Override protected void doFillIntoGrid(Composite parent__p, int numColumns_p) { super.doFillIntoGrid(parent__p, numColumns_p); getChangeControl(parent__p).setEnabled(readOnly_p == false); } }; fieldEditor.setPage(page_p); // An empty string is not allowed fieldEditor.setEmptyStringAllowed(false); // Enter directly the class name is not allowed. ((Text) fieldEditor.getValueControl()).setEditable(false); return fieldEditor; } /** * Create a Java class field editor. * @param parent_p * @param page_p the page where the created field editor is displayed. * @param title_p * @param openTypeDialogTitle_p * @param classLoader_p * @param bundle_p * @param classTypeFilter_p * @return */ public static JavaClassFieldEditor createJavaClassFieldEditor( Composite parent_p, DialogPage page_p, String title_p, String openTypeDialogTitle_p, ClassLoader classLoader_p, Bundle bundle_p, Class classTypeFilter_p, final boolean readOnly_p ) { JavaClassFieldEditor fieldEditor = new JavaClassFieldEditor( title_p, openTypeDialogTitle_p, parent_p, classTypeFilter_p ) { @Override protected void doFillIntoGrid(Composite parent__p, int numColumns_p) { super.doFillIntoGrid(parent__p, numColumns_p); getChangeControl(parent__p).setEnabled(readOnly_p == false); } }; initializeJavaClassFieldEditor( page_p, classLoader_p, bundle_p, classTypeFilter_p, fieldEditor ); return fieldEditor; } /** * Create a context element field editor. * @param parent_p * @param page_p the page where the created field editor is displayed. * @param title_p * @param openTypeDialogTitle_p * @param classLoader_p * @param classTypeFilter_p * @return */ public static ContextElementFieldEditor createContextElementFieldEditor( Composite parent_p, DialogPage page_p, String title_p, String openTypeDialogTitle_p, ClassLoader classLoader_p, Bundle bundle_p, Class classTypeFilter_p, final boolean readOnly_p ) { ContextElementFieldEditor fieldEditor = new ContextElementFieldEditor( title_p, openTypeDialogTitle_p, parent_p, classTypeFilter_p ) { @Override protected void doFillIntoGrid(Composite parent__p, int numColumns_p) { super.doFillIntoGrid(parent__p, numColumns_p); getChangeControl(parent__p).setEnabled(readOnly_p == false); } }; initializeJavaClassFieldEditor( page_p, classLoader_p, bundle_p, classTypeFilter_p, fieldEditor ); return fieldEditor; } /** * Initialize a field editor based on {@link JavaClassFieldEditor}. * @param page_p * @param classLoader_p * @param classTypeFilter_p * @param fieldEditor_p */ private static void initializeJavaClassFieldEditor( DialogPage page_p, ClassLoader classLoader_p, Bundle bundle_p, Class classTypeFilter_p, JavaClassFieldEditor fieldEditor_p ) { fieldEditor_p.setPage(page_p); // An empty string is not allowed fieldEditor_p.setEmptyStringAllowed(false); // Enter directly the class name is not allowed. ((Text) fieldEditor_p.getValueControl()).setEditable(false); // Set a validator. fieldEditor_p.setValidator(new JavaClassValidator(classLoader_p, bundle_p, classTypeFilter_p)); } /** * Create a field editor that allows the end-user to select a file located in given container. * @param parent_p * @param title_p * @param openResourceDialogTitle_p * @param container_p * @param filterExtension_p * @return */ public static WorkspaceFileFieldEditor createWorkspaceFileEditor( Composite parent_p, String title_p, String openResourceDialogTitle_p, IContainer container_p, String filterExtension_p, final boolean readOnly_p ) { WorkspaceFileFieldEditor fieldEditor = new WorkspaceFileFieldEditor( title_p, openResourceDialogTitle_p, parent_p, container_p, filterExtension_p ) { @Override protected void doFillIntoGrid(Composite parent__p, int numColumns_p) { super.doFillIntoGrid(parent__p, numColumns_p); getChangeControl(parent__p).setEnabled(readOnly_p == false); } }; // Empty string is not allowed. fieldEditor.setEmptyStringAllowed(false); return fieldEditor; } /** * Create a field editor that allows the end-user to select a domain file located in given container. * @param parent_p * @param title_p * @param openResourceDialogTitle_p * @param container_p * @param filterExtension_p * @return */ public static DomainFieldEditor createDomainFieldEditor( Composite parent_p, String title_p, String openResourceDialogTitle_p, IContainer container_p, String filterExtension_p, final boolean readOnly_p ) { DomainFieldEditor fieldEditor = new DomainFieldEditor( title_p, openResourceDialogTitle_p, parent_p, container_p, filterExtension_p ) { @Override protected void doFillIntoGrid(Composite parent__p, int numColumns_p) { super.doFillIntoGrid(parent__p, numColumns_p); getChangeControl(parent__p).setEnabled(readOnly_p == false); } }; // Empty string is not allowed. fieldEditor.setEmptyStringAllowed(false); // Set domain path Text widget as a non editable widget. ((Text) fieldEditor.getValueControl()).setEditable(false); return fieldEditor; } /** * Layout given field editor on given number of columns. * @param parent_p * @param fieldEditor_p * @param numColumns_p */ public static void layoutFieldEditor(Composite parent_p, FieldEditor fieldEditor_p, int numColumns_p) { // Force parent layout to have given number of columns. ((GridLayout) parent_p.getLayout()).numColumns = numColumns_p; // Ask the type group to layout on given number of columns. fieldEditor_p.fillIntoGrid(parent_p, numColumns_p); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/FormHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9610 Text-content-md5: 6779814b62a86baeb04dc77299396e6b Text-content-sha1: 8dfc24d9cb54e0279457f3b6c3aced77be3dfe5f Content-length: 9655 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.helper; import org.eclipse.egf.common.misc.Couple; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.FontMetrics; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Layout; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.IFormColors; import org.eclipse.ui.forms.events.IHyperlinkListener; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ImageHyperlink; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; /** * UI Forms helper.
* Allows creation of Composites, Layouts and Forms widgets. * @author Guillaume Brocard */ public class FormHelper { /** * Layout usable types. */ public static enum LayoutType {GRID_LAYOUT, TABLEWRAP_LAYOUT} /** * Create a new composite and set the layout using {@link #updateCompositeLayoutWithLayoutType(Composite, org.eclipse.egf.common.ui.helper.FormHelper.LayoutType, int)} method. * @param toolkit_p * @param parent_p * @param numColumns_p * @return */ public static Composite createCompositeWithLayoutType( FormToolkit toolkit_p, Composite parent_p, LayoutType layoutType_p, int numColumns_p, boolean equalWidth_p ) { Composite result = toolkit_p.createComposite(parent_p); updateCompositeLayoutWithLayoutType(result, layoutType_p, numColumns_p, equalWidth_p); return result; } /** * Update given composite with given layout type and given number of columns (if it makes any sense).
* Also set the layout data to {@link #updateControlLayoutDataWithLayoutTypeData(Composite, org.eclipse.egf.common.ui.helper.FormHelper.LayoutType)}. * @param composite_p * @param layoutType_p * @param numColumns_p */ public static Object updateCompositeLayoutWithLayoutType( Composite composite_p, LayoutType layoutType_p, int numColumns_p, boolean equalWidth_p ) { Layout selectedLayout = null; if (LayoutType.GRID_LAYOUT.equals(layoutType_p)) { GridLayout layout = new GridLayout(); layout.numColumns = numColumns_p; layout.makeColumnsEqualWidth = equalWidth_p; selectedLayout = layout; } else if (LayoutType.TABLEWRAP_LAYOUT.equals(layoutType_p)) { TableWrapLayout layout = new TableWrapLayout(); layout.numColumns = numColumns_p; layout.makeColumnsEqualWidth = equalWidth_p; selectedLayout = layout; } // Do not set neither layout nor layout data if layout could not be created. if (null != selectedLayout) { composite_p.setLayout(selectedLayout); updateControlLayoutDataWithLayoutTypeData(composite_p, layoutType_p); } return selectedLayout; } /** * Update given control layout data depending on given layout type.
* Replace layout data is set to fill/grab in both directions, if it makes any sense. * @param control_p */ public static Object updateControlLayoutDataWithLayoutTypeData(Control control_p, LayoutType layoutType_p) { Object layoutData = null; if (LayoutType.GRID_LAYOUT.equals(layoutType_p)) { layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); } else if (LayoutType.TABLEWRAP_LAYOUT.equals(layoutType_p)) { layoutData = new TableWrapData(TableWrapData.FILL_GRAB); } // Do not set layout data if it could not be created. if (null != layoutData) { control_p.setLayoutData(layoutData); } return layoutData; } /** * Create a section with a composite child using given child layout type. * @param toolkit_p * @param parent_p * @param sectionStyle_p * @param layoutType_p * @param childNumColumns_p * @param equalWidth_p * @return */ public static Couple createSectionWithChildComposite( FormToolkit toolkit_p, Composite parent_p, int sectionStyle_p, LayoutType layoutType_p, int childNumColumns_p, boolean equalWidth_p ) { Section resultingSection = toolkit_p.createSection(parent_p, sectionStyle_p); updateControlLayoutDataWithLayoutTypeData(resultingSection, layoutType_p); Composite childComposite = createCompositeWithLayoutType( toolkit_p, resultingSection, layoutType_p, childNumColumns_p, equalWidth_p ); resultingSection.setClient(childComposite); return new Couple(resultingSection, childComposite); } /** * Create a user text widget with preceding label.
* Requires at least a two columns layout so that both the label and the text are displayed on the same line. * @param toolkit_p * @param parent_p * @param labelMessage_p * @param initialText_p * @param editable_p * @return */ public static Couple createLabelAndText( FormToolkit toolkit_p, Composite parent_p, String labelMessage_p, String initialText_p, boolean editable_p ) { // Create label. Label label = toolkit_p.createLabel(parent_p, labelMessage_p, SWT.WRAP); label.setForeground(toolkit_p.getColors().getColor(IFormColors.TITLE)); // Create text. Text text = new Text( parent_p, editable_p ? SWT.BORDER : SWT.BORDER | SWT.READ_ONLY ); text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // Set existing value. if (null != initialText_p) { text.setText(initialText_p); } return new Couple(label, text); } /** * Create a user text widget with preceding label and following button.
* Requires at least a three columns layout so that the label, the text and the button are displayed on the same line. * @param toolkit_p * @param parent_p * @param labelMessage_p * @param buttonLabel_p * @param listener_p * @return */ public static Couple createLabelTextAndButton( FormToolkit toolkit_p, Composite parent_p, String labelMessage_p, String buttonLabel_p, SelectionListener listener_p ) { // Create label and text. Couple labelAndText = createLabelAndText(toolkit_p, parent_p, labelMessage_p, null, true); // Create button. Button button = toolkit_p.createButton(parent_p, buttonLabel_p, SWT.PUSH); // Add button listener. if (null != listener_p) { button.addSelectionListener(listener_p); } return new Couple(labelAndText.getValue(), button); } /** * Create a link with a label description.
* Requires a two columns layout so that both the link and the label are displayed on the same line. * @param toolkit_p * @param parent_p * @param icon_p * @param linkText_p * @param linkRef_p * @param linkDescription_p * @param listener_p */ public static void createLinkWithDescription( FormToolkit toolkit_p, Composite parent_p, Image icon_p, String linkText_p, Object linkRef_p, String linkDescription_p, IHyperlinkListener listener_p ) { ImageHyperlink specificationLink = toolkit_p.createImageHyperlink(parent_p, SWT.WRAP); specificationLink.setText(linkText_p); specificationLink.setImage(icon_p); specificationLink.setHref(linkRef_p); specificationLink.addHyperlinkListener(listener_p); toolkit_p.createLabel(parent_p, linkDescription_p, SWT.WRAP); } /** * Force control size. * @param control_p * @param widthInChars_p The expected width, in number of chars to display. * @param heightInChars_p The expected height, in number of chars to display. */ public static void forceControlSize(Control control_p, int widthInChars_p, int heightInChars_p) { // Preconditions. if ((null == control_p) || (0 >= widthInChars_p) || (0 >= heightInChars_p)) { return; } // Get font metrics. GC gc = new GC(control_p); FontMetrics fontMetrics = gc.getFontMetrics(); gc.dispose(); // Get layout data. Object layoutData = control_p.getLayoutData(); if (layoutData instanceof GridData) { GridData data = (GridData) layoutData; data.widthHint = Dialog.convertWidthInCharsToPixels(fontMetrics, widthInChars_p); data.heightHint = Dialog.convertHeightInCharsToPixels(fontMetrics, heightInChars_p); } else if (layoutData instanceof TableWrapData) { TableWrapData data = (TableWrapData) layoutData; data.heightHint = Dialog.convertHeightInCharsToPixels(fontMetrics, heightInChars_p); } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/MessageFormatHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1171 Text-content-md5: 983ff86a579e252adedb7a7f8321cbdb Text-content-sha1: 646b701ec622a2e42fc9c5422dc67e23fcd15033 Content-length: 1216 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.helper; import org.eclipse.egf.common.helper.StringHelper; /** * Provides services to format messages rendered in UI.
* * @author fournier */ public class MessageFormatHelper { /** * Format given message with given arguments * * @param notFormatedMessage_p * @param arguments_p * @return a formatted message * @since 1.2.0_M2 : use */ public static String formatMessage(String notFormatedMessage_p, Object[] arguments_p) { return StringHelper.formatMessage(notFormatedMessage_p, arguments_p); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1290 Text-content-md5: 2836ca1d305f01f34a7658e78df71065 Text-content-sha1: 2ddddb13b2ef7685e1e15306c4c46cb6971ff3d4 Content-length: 1335 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.helper; import org.eclipse.osgi.util.NLS; /** * I18n support. * @author fournier */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.common.ui.helper.messages"; //$NON-NLS-1$ // Remove operation labels. public static String DeleteElementActionConfirmDialog_Title; public static String DeleteElementActionConfirmDialog_Message; // Workbench helper messages. public static String OpenEditor_ErrorMessage; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/ViewerHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2498 Text-content-md5: 509e5c9101098ae3f77db7f010134e61 Text-content-sha1: f83ead85cad482bdbdd225abd95a09e6ac2ac55d Content-length: 2543 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.helper; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.widgets.Control; /** * @author Guillaume Brocard */ public class ViewerHelper { /** * Refresh in an efficient way the specified viewer completely with information freshly obtained from this viewer's model. * @param viewer_p */ public static void refresh(StructuredViewer viewer_p) { refresh(viewer_p, true); } /** * Refresh in an efficient way the specified viewer completely with information freshly obtained from this viewer's model.
* If updateLabels_p is true then labels for otherwise unaffected elements are updated as well.
* Otherwise, it assumes labels for existing elements are unchanged, and labels are only obtained as needed (for example, for new elements). *

* Calling refresh(viewer, true) has the same effect as refresh(viewer). *

* Note that the implementation may still obtain labels for existing elements even if updateLabels is false. The intent is simply to allow * optimization where possible. * @param updateLabels true to update labels for existing elements, false to only update labels as needed, assuming that labels * for existing elements are unchanged. * @param viewer_p * @param updateLabels_p */ public static void refresh(StructuredViewer viewer_p, boolean updateLabels_p) { // Precondition. if (null == viewer_p) { return; } // Get the related control. Control control = viewer_p.getControl(); try { // Switch off redraw control.setRedraw(false); // Refresh it... viewer_p.refresh(updateLabels_p); } finally { // Finally, redraw again. control.setRedraw(true); } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/WorkbenchHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11603 Text-content-md5: 36828558f8aa02ffda0d18d90f8ee3b4 Text-content-sha1: fd677f6dd4b1af266902119d37535eb05c7c913b Content-length: 11648 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.helper; import java.util.ArrayList; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.egf.common.ui.internal.resource.ExtendedUnmodifiableFile; import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart; import org.eclipse.jdt.ui.JavaUI; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IPartListener; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.FileEditorInput; /** * Provides services to easily deal with workbench stuffs (e.g open an editor).
* Most of the services need to be called within the UI Thread. * @author Guillaume Brocard */ public class WorkbenchHelper { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(WorkbenchHelper.class.getPackage().getName()); /** * Returns the currently active page for the active workbench window.
* Returns null if there is no active workbench page.
* Returns null if called from a non-UI thread. * @return the active workbench page, or null if there is no active workbench page or if called from a non-UI thread */ public static IWorkbenchPage getActiveWorkbenchPage() { IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (activeWorkbenchWindow != null) { return activeWorkbenchWindow.getActivePage(); } return null; } /** * Open file based editor for given file relative path. * @param fileRelativePath_p A path relative to workspace, starting with the project name. * @param editorId_p * @return */ public static IEditorPart openFileEditor(String fileRelativePath_p, String editorId_p, boolean editable_p) { // Preconditions. if (fileRelativePath_p == null || editorId_p == null) { return null; } // Get file depending on 'editability'. IFile file = null; IPath filePath = new Path(fileRelativePath_p); if (editable_p) { file = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath); } else { file = new ExtendedUnmodifiableFile(filePath); } return openEditor(new FileEditorInput(file), editorId_p, PlatformUI.getWorkbench().getDisplay().getActiveShell()); } /** * Open an editor on the given input. * @param editorInput_p * @param editorId_p * @return an open and active editor, or null if an external editor was opened. */ public static IEditorPart openEditor(IEditorInput editorInput_p, String editorId_p, Shell shell_p) { IEditorPart openEditor = null; // Preconditions. if (editorInput_p == null || editorId_p == null) { return openEditor; } try { IWorkbenchPage activeWorkbenchPage = getActiveWorkbenchPage(); if (activeWorkbenchPage != null) { openEditor = activeWorkbenchPage.openEditor(editorInput_p, editorId_p); } else { throw new PartInitException("No active workbench page was found to open an editor"); //$NON-NLS-1$ } } catch (PartInitException exception_p) { StringBuilder loggerMessage = new StringBuilder("WorkbenchHelper.openEditor(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); MessageDialog.openError(shell_p, Messages.OpenEditor_ErrorMessage, exception_p.getMessage()); } return openEditor; } /** * Open file based editor for given file relative path with registered editor as default one. * @param fileRelativePath_p A path relative to workspace, starting with the project name. * @return */ public static IEditorPart openDefaultFileEditor(String fileRelativePath_p, Shell shell_p) { // Preconditions. if (fileRelativePath_p == null) { return null; } // Get the editor registry. IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry(); // Get default editor descriptor for specified file path. IEditorDescriptor defaultEditor = editorRegistry.getDefaultEditor(fileRelativePath_p); if (defaultEditor != null) { return openFileEditor(fileRelativePath_p, defaultEditor.getId(), true); } return null; } /** * Save given editor. * @param editor_p */ public static void saveEditor(IEditorPart editor_p) { if (editor_p.isDirty()) { editor_p.doSave(new NullProgressMonitor()); } } /** * Close file based editors for given file relative path.
* Note that all editors are asked to save content as they are closed. * @param fileRelativePath_p * @return */ public static boolean closeFileEditors(String fileRelativePath_p) { boolean result = false; // Precondition. if (fileRelativePath_p == null) { return result; } IWorkbenchPage activeWorkbenchPage = getActiveWorkbenchPage(); IFile fileToClose = null; try { fileToClose = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(fileRelativePath_p)); } catch (Exception e_p) { StringBuilder loggerMessage = new StringBuilder("WorkbenchHelper.closeFileEditor(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), e_p); } // Preconditions. if (activeWorkbenchPage == null || fileToClose == null) { return result; } // Search for the editors working on this file. result = true; IEditorReference[] editorReferences = activeWorkbenchPage.getEditorReferences(); for (int i = 0; i < editorReferences.length; i++) { IEditorPart editorPart = editorReferences[i].getEditor(false); IEditorInput editorInput = editorPart.getEditorInput(); if (editorInput != null) { IFile file = (IFile) editorInput.getAdapter(IFile.class); if (fileToClose.equals(file)) { // Save content at closure time. result &= closeEditor(editorPart, true); } } } return result; } /** * Close the given editor. The editor must belong to this workbench page. *

* If the editor has unsaved content and save_p is true,
* the user will be given the opportunity to save it. *

* @param editor_p the edit or to close. * @param save_p true to save the editor contents if required (recommended),
* and false to discard any unsaved changes. * @return true if the editor was successfully closed, and false if the editor is still open. */ public static boolean closeEditor(IEditorPart editor_p, boolean save_p) { IWorkbenchPage activeWorkbenchPage = getActiveWorkbenchPage(); if (activeWorkbenchPage != null) { return activeWorkbenchPage.closeEditor(editor_p, save_p); } return false; } /** * Close a view for specified id in the current workbench page. * @param viewId_p */ public static void closeView(String viewId_p) { // Precondition. if (viewId_p == null) { return; } IWorkbenchPage activeWorkbenchPage = WorkbenchHelper.getActiveWorkbenchPage(); IViewPart viewPart = activeWorkbenchPage.findView(viewId_p); if (viewPart != null) { activeWorkbenchPage.hideView(viewPart); } } /** * Open a view for specified id in the current workbench page. * @param viewId_p */ public static void openView(String viewId_p) { // Precondition. if (viewId_p == null) { return; } IWorkbenchPage activeWorkbenchPage = WorkbenchHelper.getActiveWorkbenchPage(); try { activeWorkbenchPage.showView(viewId_p); } catch (PartInitException exception_p) { StringBuilder loggerMessage = new StringBuilder("WorkbenchHelper.openView(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } /** * Return whether or not the view for specified id is open. * @param viewId_p * @return true means open. */ public static boolean isViewOpen(String viewId_p) { // Precondition. if (viewId_p == null) { return false; } IWorkbenchPage activeWorkbenchPage = WorkbenchHelper.getActiveWorkbenchPage(); if (activeWorkbenchPage != null) { return activeWorkbenchPage.findView(viewId_p) != null; } return false; } /** * Add a part listener in the active workbench page. * @param listener_p */ public static void addPartListener(IPartListener listener_p) { // Get the active page IWorkbenchPage activeWorkbenchPage = getActiveWorkbenchPage(); if (activeWorkbenchPage != null) { activeWorkbenchPage.addPartListener(listener_p); } } /** * Get all open editors in the active workbench page for given editor id. * @param editorId_p the editor id, the one use to open the related editor. * @return a not null array. */ public static IEditorReference[] getAllOpenEditors(String editorId_p) { ArrayList openEditors = new ArrayList(0); IWorkbenchPage activePage = getActiveWorkbenchPage(); // Get all open editors in the active page. IEditorReference[] allEditorReferences = activePage.getEditorReferences(); // Loop over all open editors in the active page; add in the resulting list, the ones for which the id is matching the given one. for (IEditorReference editorReference : allEditorReferences) { if (editorId_p.equals(editorReference.getId())) { openEditors.add(editorReference); } } return openEditors.toArray(new IEditorReference[openEditors.size()]); } /** * Get the Package Explorer view.
* Returns null if there is no active workbench page.
* Returns null if called from a non-UI thread.
* Returns null if package explorer is not open. * @return the Package Explorer view, or null if there is no active workbench page or if called from a non-UI thread or if package explorer is * not open. */ public static PackageExplorerPart getPackageExplorerView() { IWorkbenchPage activeWorkbenchPage = WorkbenchHelper.getActiveWorkbenchPage(); if (activeWorkbenchPage != null) { return (PackageExplorerPart) activeWorkbenchPage.findView(JavaUI.ID_PACKAGES); } return null; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/helper/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 748 Text-content-md5: 6e7d0cc0c15baacdadf57274ff88e9b8 Text-content-sha1: b95be8d36371b44237f6ba0eaf96f4f3440436d2 Content-length: 793 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### DeleteElementActionConfirmDialog_Title=Confirm delete DeleteElementActionConfirmDialog_Message=Are you sure you want to delete {0} ''{1}''? OpenEditor_ErrorMessage=Opening an editor Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/field Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/field/FilteredJavaTypeSelectionExtension.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3470 Text-content-md5: 1fe7a9c57fe1edb8c8b6b0349c606601 Text-content-sha1: 3ca565ccc4613239e419aa0577a35768d89ce136 Content-length: 3515 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.internal.field; import org.apache.log4j.Logger; import org.eclipse.core.runtime.Assert; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog; import org.eclipse.jdt.ui.dialogs.ITypeInfoFilterExtension; import org.eclipse.jdt.ui.dialogs.ITypeInfoRequestor; import org.eclipse.jdt.ui.dialogs.TypeSelectionExtension; import org.eclipse.egf.common.constant.ICommonConstants; /** * Filter end-user selection in a {@link FilteredTypesSelectionDialog} according to a Java type. * @author Xavier Maysonnave */ public class FilteredJavaTypeSelectionExtension extends TypeSelectionExtension { /** * Log4j reference logger. */ protected static final Logger __logger = Logger.getLogger(FilteredJavaTypeSelectionExtension.class.getPackage().getName()); /** * classTypeFilter */ protected Class _classTypeFilter; /** * IJavaProject */ protected IJavaProject _javaProject; /** * Constructor. * @param classTypeFilter_p */ public FilteredJavaTypeSelectionExtension(IJavaProject javaProject_p, Class classTypeFilter_p) { Assert.isNotNull(javaProject_p); Assert.isNotNull(classTypeFilter_p); _javaProject = javaProject_p; _classTypeFilter = classTypeFilter_p; } /** * @see org.eclipse.jdt.ui.dialogs.TypeSelectionExtension#getFilterExtension() */ @Override public ITypeInfoFilterExtension getFilterExtension() { return new ITypeInfoFilterExtension() { /** * @see org.eclipse.jdt.ui.dialogs.ITypeInfoFilterExtension#select(org.eclipse.jdt.ui.dialogs.ITypeInfoRequestor) */ public boolean select(ITypeInfoRequestor typeInfoRequestor_p) { // Build the fully qualified class name. StringBuilder fqn = new StringBuilder( typeInfoRequestor_p.getPackageName() ).append( ICommonConstants.DOT_CHARACTER ).append( typeInfoRequestor_p.getTypeName() ); try { IType type = _javaProject.findType(fqn.toString()); if (type != null) { for (String i : type.getSuperInterfaceNames()) { if (_classTypeFilter.getName().equals(i)) { return true; } } } } catch (JavaModelException jme) { return true; } return false; } }; } public static boolean implementInterface(Class clazz, String interfaceName) { if (clazz == null || interfaceName == null) { return false; } for (Class interfaces : clazz.getInterfaces()) { if (interfaceName.equals(interfaces.getName())) { return true; } } return implementInterface(clazz.getSuperclass(), interfaceName); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/field/FilteredTypeSelectionExtension.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3052 Text-content-md5: afa903f6f697801deafed5c1f5e4e153 Text-content-sha1: 92a06850fa7bdb33d103305dff8fce35a685d4d7 Content-length: 3097 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.internal.field; import org.apache.log4j.Logger; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.helper.ClassLoadingHelper; import org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog; import org.eclipse.jdt.ui.dialogs.ITypeInfoFilterExtension; import org.eclipse.jdt.ui.dialogs.ITypeInfoRequestor; import org.eclipse.jdt.ui.dialogs.TypeSelectionExtension; /** * Filter end-user selection in a {@link FilteredTypesSelectionDialog} according to a Java type. * @author fournier * @deprecated */ public class FilteredTypeSelectionExtension extends TypeSelectionExtension { /** * Log4j reference logger. */ protected static final Logger __logger = Logger.getLogger(FilteredTypeSelectionExtension.class.getPackage().getName()); /** * Classloader that is able to load end-user class selection. */ protected ClassLoader _classLoader; /** * Class use to filter end-user selection. */ protected Class _classTypeFilter; /** * Constructor. * @param classTypeFilter_p */ public FilteredTypeSelectionExtension(ClassLoader classLoader_p, Class classTypeFilter_p) { _classLoader = classLoader_p; _classTypeFilter = classTypeFilter_p; } /** * @see org.eclipse.jdt.ui.dialogs.TypeSelectionExtension#getFilterExtension() */ @Override public ITypeInfoFilterExtension getFilterExtension() { return new ITypeInfoFilterExtension() { /** * @see org.eclipse.jdt.ui.dialogs.ITypeInfoFilterExtension#select(org.eclipse.jdt.ui.dialogs.ITypeInfoRequestor) */ public boolean select(ITypeInfoRequestor typeInfoRequestor_p) { boolean result = false; // Build the fully qualified class name. StringBuilder classNameBuilder = new StringBuilder( typeInfoRequestor_p.getPackageName() ).append( ICommonConstants.DOT_CHARACTER ).append( typeInfoRequestor_p.getTypeName() ); // Get the fully qualified class name. String className = classNameBuilder.toString(); Object object = ClassLoadingHelper.instantiate(className, _classLoader); // Check if instantiated object is an instance of the filtered class type. if ((null != object) && _classTypeFilter.isInstance(object)) { // Allow the end-user to finish the dialog, its choice meets the required class type. result = true; } return result; } }; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/helper/UserEnforcedHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3902 Text-content-md5: 37d97f2770c978c9d75eb5a9e4ab1a98 Text-content-sha1: b403916b1a899a964e05a46eafea3eb432eb8061 Content-length: 3947 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.internal.helper; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.egf.common.helper.IUserEnforcedHelper; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; /** * Helper methods enforced by user interaction.
* It should not be overridden nor instantiated.
* It is located here for dependencies issues. * @author Guillaume Brocard */ public class UserEnforcedHelper implements IUserEnforcedHelper { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(UserEnforcedHelper.class.getPackage().getName()); /** * @see org.eclipse.egf.common.helper.IUserEnforcedHelper#makeFileWritable(org.eclipse.core.resources.IFile) */ public IStatus makeFileWritable(final IFile file_p) { // Resulting status. final IStatus[] result = new IStatus[] { Status.CANCEL_STATUS }; // Get display, if any. // Do not create a new one if none, simply ignore it. final Display display = PlatformUI.isWorkbenchRunning() ? PlatformUI.getWorkbench().getDisplay() : null; // Execute through a runnable. Runnable makeFileWritableRunnable = new Runnable() { public void run() { result[0] = makeFileWritable(file_p, display); } }; // Whether it is displaying a user interface dialog or not, the execution is always synchronous. if (null != display) { // Ask user, if needed. display.syncExec(makeFileWritableRunnable); } else { // No way to ask user, execute it. makeFileWritableRunnable.run(); } return result[0]; } /** * @see org.eclipse.egf.common.helper.IUserEnforcedHelper#makeFileWritable(org.eclipse.core.resources.IFile, java.lang.Object) */ public IStatus makeFileWritable(IFile file_p, Object display_p) { IStatus result = Status.CANCEL_STATUS; // Given file must not be null. if (null == file_p) { return result; } // If file does not exist, then it is writable. if (!file_p.exists()) { return Status.OK_STATUS; } // Resulting shell. Shell shell = null; // Given display object must indeed be a display. if (display_p instanceof Display) { // Get shell from display. shell = ((Display) display_p).getActiveShell(); } // If a shell is active, use it to make sure an end-user confirmation is performed (as needed). // Try validate prompt behavior otherwise. Object context = (null == shell) ? IWorkspace.VALIDATE_PROMPT : shell; // Check given file. result = ResourcesPlugin.getWorkspace().validateEdit(new IFile[] { file_p }, context); if (!result.isOK()) { StringBuilder loggerMessage = new StringBuilder("UserEnforcedHelper.makeFileWritable(..) _ "); //$NON-NLS-1$ loggerMessage.append("Could not make ").append(file_p.getFullPath()).append(" writable !"); //$NON-NLS-1$ //$NON-NLS-2$ __logger.error(loggerMessage.toString()); } return result; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/resource Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/resource/ExtendedUnmodifiableFile.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1855 Text-content-md5: 6e6c8f3068d07c816ba78a47f5c223b1 Text-content-sha1: f2155f844d35f45e6c0b3c6cacf1c18e79788c7d Content-length: 1900 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.internal.resource; import java.io.InputStream; import org.eclipse.core.internal.resources.File; import org.eclipse.core.internal.resources.Workspace; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.egf.common.helper.FileHelper; /** * An {@link IFile} implementation that also handles a deployed file (as opposed to the one obtained from the workspace).
* No modification is allowed for such a file. * @author Guillaume Brocard */ public class ExtendedUnmodifiableFile extends File { /** * Constructor. * @param path_p */ public ExtendedUnmodifiableFile(IPath path_p) { super(path_p, (Workspace) ResourcesPlugin.getWorkspace()); } /** * @see org.eclipse.core.internal.resources.File#getContents(boolean) */ @Override public InputStream getContents(boolean force_p) throws CoreException { return FileHelper.readFileAsStream(getFullPath().toString()); } /** * @see org.eclipse.core.internal.resources.Resource#isReadOnly() */ @Override public boolean isReadOnly() { return true; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/validators Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/validators/JavaClassValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2978 Text-content-md5: 575911c55819e7d0054d3c278f3cb0d4 Text-content-sha1: 30f236fadd5c51cc170514ffbfe6163ed8063536 Content-length: 3023 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.internal.validators; import org.osgi.framework.Bundle; import org.eclipse.egf.common.helper.BundleHelper; import org.eclipse.egf.common.helper.ClassLoadingHelper; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; /** * Implements a validator that checks if given fully qualified name is able to instantiated. * @author Guillaume Brocard */ public class JavaClassValidator extends NotEmptyStringValidator { /** * Class loader to check to if given class is not able to instantiated. */ private ClassLoader _classLoader; /** * Bundle to check to if given class is not able to instantiated. */ private Bundle _bundle; /** * Expected class to check against. */ private Class _expectedClassType; /** * Constructor. * @param errorMessage_p * @param classLoader_p * @param bundle_p * @param expectedClassType_p */ public JavaClassValidator( ClassLoader classLoader_p, Bundle bundle_p, Class expectedClassType_p ) { super(Messages.JavaClassValidator_Error_Message_EMPTY_CLASS); _classLoader = classLoader_p; _bundle = bundle_p; _expectedClassType = expectedClassType_p; } /** * @see org.eclipse.egf.common.ui.toolkit.validators.IValidator#isValid(java.lang.Object) */ @Override public String isValid(Object value_p) { String errorMessage = super.isValid(value_p); if (errorMessage == null) { // Check given class is able to instantiated. Object object = null; if (_classLoader != null) { object = ClassLoadingHelper.instantiate((String) value_p, _classLoader); } else if (_bundle != null) { object = BundleHelper.instantiate((String) value_p, _bundle); } // Check if instantiated object is an instance of the expected class type. if (object == null) { errorMessage = Messages.JavaClassValidator_Error_Message_UNABLE_TO_LOAD + value_p; } else { if (_expectedClassType.isInstance(object) == false) { errorMessage = value_p + Messages.JavaClassValidator_Error_Message_INSTANCE_OF + _expectedClassType.getName(); } } } return errorMessage; } /** * Set the expected class type to given one. * @param expectedClassType_p the expectedClassType to set */ public void setExpectedClassType(Class expectedClassType_p) { _expectedClassType = expectedClassType_p; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/validators/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1159 Text-content-md5: e912fb32a4c7f7ea3885d04ed32715b3 Text-content-sha1: aca4742bdfd1ee56541c8061f46e41c5ff019685 Content-length: 1204 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.internal.validators; import org.eclipse.osgi.util.NLS; /** * I18n translation helper. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.common.ui.internal.validators.messages"; //$NON-NLS-1$ public static String JavaClassValidator_Error_Message_EMPTY_CLASS; public static String JavaClassValidator_Error_Message_INSTANCE_OF; public static String JavaClassValidator_Error_Message_UNABLE_TO_LOAD; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/internal/validators/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 622 Text-content-md5: 7960e4a554b5a815a5215816323ceb46 Text-content-sha1: d8c63ed7eaef97fbe885b5d27a780e1bfa29f4bd Content-length: 667 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## JavaClassValidator_Error_Message_EMPTY_CLASS=A Java class must be entered JavaClassValidator_Error_Message_INSTANCE_OF=\ is not an instance of JavaClassValidator_Error_Message_UNABLE_TO_LOAD=Unable to load Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/resource Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/resource/BasicImageRegistry.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4262 Text-content-md5: e23b2882235fb38355240cb5e7c400eb Text-content-sha1: 83e9aeb4bf2f6a5292fc38f90811fef0919cc9d6 Content-length: 4307 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.resource; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; /** * This class is a registry of ({@link ImageDescriptor}, {@link Image}).
* Using this registry avoid to allocate multiple images for the same image descriptor. * @author fournier */ public class BasicImageRegistry { /** * Singleton instance. */ private static BasicImageRegistry __instance = new BasicImageRegistry(); /** * Registry of (ImageDescriptor, Image) Flyweight pattern */ private Map _registry; /** * Private constructor to implement singleton pattern. */ private BasicImageRegistry() { this(PlatformUI.getWorkbench().getDisplay()); } /** * Constructor.
* If using this constructor DO NOT use the {@link #getInstance()} that returns a different instance (singleton). * @param display_p */ public BasicImageRegistry(Display display_p) { _registry = new HashMap(0); // Hook the display to dispose images contained in the registry when the display is disposed. hookDisplayDispose(display_p); } /** * Get the singleton instance of this registry.
* This instance is based on Platform display. * @return a not null instance. */ public static BasicImageRegistry getInstance() { return __instance; } /** * Get an image for its given descriptor. * @param imageDescriptor_p * @return */ public Image getImage(ImageDescriptor imageDescriptor_p) { Image result = null; // Get the related image in the registry. result = _registry.get(imageDescriptor_p); // If returned image is null, create it from given descriptor. if (null == result) { result = imageDescriptor_p.createImage(); // Store it for next usage. _registry.put(imageDescriptor_p, result); } return result; } /** * Remove given image descriptor from the registry. * @param imageDescriptor_p * @return previous value associated with specified image descriptor, or null if there was no mapping for specified image descriptor. A * null return can also indicate that the registry previously associated null with the specified image descriptor. */ public Image remove(ImageDescriptor imageDescriptor_p) { return _registry.remove(imageDescriptor_p); } /** * Hook the display disposed event to be called back when this event is raised.
* The goal is to dispose all images contained in the registry. * @param display */ protected void hookDisplayDispose(Display display) { display.disposeExec(new Runnable() { public void run() { handleDisplayDisposedEvent(); } }); } /** * Handle display disposed event to dispose all images contained in the registry. */ protected void handleDisplayDisposedEvent() { // Get all entries. Iterator entries = _registry.values().iterator(); while (entries.hasNext()) { // Get the current image Image currentImage = entries.next(); // If allocated and not disposed, dispose it to free OS resource. if (null != currentImage && !currentImage.isDisposed()) { currentImage.dispose(); } } // All images are now disposed, reset to null the registry. _registry.clear(); _registry = null; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/adapters Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5674 Text-content-md5: 9c6d67cc37d8ecb9e87dccc1d4061e64 Text-content-sha1: 6f053586c93a3d3f88be4a7a5c3505feecec23ba Content-length: 5719 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.adapters; import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; /** * The boolean field editor adapter. Adapts the existing JFace boolean field editor to reuse it in the UI Toolkit. Using this adapter allows the developper to * have access to the hided features of the field editors. * @author D. GATIBELZA */ public class BooleanFieldEditorAdapter extends BooleanFieldEditor implements IFieldEditor { // The parent composite. private Composite _parent = null; // The validator. private IValidator _validator = null; // The error message. private String _errorMessage = null; /** * @see BooleanFieldEditor#BooleanFieldEditor(String, String, Composite) */ public BooleanFieldEditorAdapter(String name_p, String label_p, Composite parent_p) { super(name_p, label_p, parent_p); _parent = parent_p; } /** * @see BooleanFieldEditor#BooleanFieldEditor(String, String, int, Composite) */ public BooleanFieldEditorAdapter(String name_p, String labelText_p, int style_p, Composite parent_p) { super(name_p, labelText_p, style_p, parent_p); _parent = parent_p; } /** * @see IFieldEditor#getLabel() */ public Label getLabel() { return getLabelControl(); } /** * @see IFieldEditor#getValueControl() */ public Control getValueControl() { return getChangeControl(_parent); } /** * Does nothing for this component type. * @return null value. * @see IFieldEditor#getHelperControl() */ public Control getHelperControl() { return null; } /** * @see IFieldEditor#getErrorMessage() */ public String getErrorMessage() { return _errorMessage; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getFieldName() */ public String getFieldName() { return getPreferenceName(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getFieldPage() */ public DialogPage getFieldPage() { return getPage(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getValidator() */ public IValidator getValidator() { return _validator; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isFocused() */ public boolean isFocused() { Control valueControl = getValueControl(); Control helperControl = getHelperControl(); boolean focused = false; if (null != valueControl) { focused = valueControl.isFocusControl(); } if (null != helperControl) { focused |= helperControl.isFocusControl(); } return focused; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isHelperEnabled() */ public boolean isHelperEnabled() { boolean enabled = false; Control helperControl = getHelperControl(); if (null != helperControl) { enabled = helperControl.isEnabled(); } return enabled; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#defaultLayout() */ public void defaultLayout() { Composite parent = getLabelControl().getParent(); GridLayout layout = (GridLayout) parent.getLayout(); fillIntoGrid(parent, layout.numColumns); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#layout(int) */ public void layout(int numColumns_p) { adjustForNumColumns(numColumns_p); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setFieldPage(org.eclipse.jface.dialogs.DialogPage) */ public void setFieldPage(DialogPage page_p) { setPage(page_p); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setValidator(org.eclipse.egf.common.ui.toolkit.validators.IValidator) */ public void setValidator(IValidator validator_p) { _validator = validator_p; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setHelperEnabled(boolean) */ public void setHelperEnabled(boolean enabled_p) { Control helperControl = getHelperControl(); if (null != helperControl) { helperControl.setEnabled(enabled_p); } } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isValueEnabled() */ public boolean isValueEnabled() { boolean enabled = false; Control valueControl = getValueControl(); if (null != valueControl) { enabled = valueControl.isEnabled(); } return enabled; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setValueEnabled(boolean) */ public void setValueEnabled(boolean enabled_p) { Control valueControl = getValueControl(); if (null != valueControl) { valueControl.setEnabled(enabled_p); } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/adapters/StringButtonFieldEditorAdapter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11278 Text-content-md5: 7cb16f7b40aabdba6462e0d343d52891 Text-content-sha1: 6c24a53ad33c3c1f15d051bd7aecaf45ab473d7d Content-length: 11323 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.adapters; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.jface.preference.StringButtonFieldEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; /** * The string button field editor adapter. The string button field editor * adapter adapts the existing JFace String button field editor to reuse * it in the UI Toolkit. Using this adapter allows the developper to add * decorators or extends the component behavior. * @author D. GATIBELZA */ public abstract class StringButtonFieldEditorAdapter extends StringButtonFieldEditor implements IFieldEditor { // The label control style. protected int _labelStyle = SWT.LEFT; // The value control style. protected int _valueStyle = SWT.NONE; // The parent composite. private Composite _parent; /** * Object used to compute the validation status. */ private IValidator _validator; /** * Constructs the string button field editor with the specified field name and specified label text. Sets the default label control style to {@link SWT#LEFT} * and the default value control to {@link SWT#NONE}. * @param name_p The field name. * @param labelText_p The label text. * @param parent_p The parent control. */ public StringButtonFieldEditorAdapter( String name_p, String labelText_p, Composite parent_p ) { this(name_p, labelText_p, parent_p, SWT.LEFT, SWT.NONE); } /** * Constructs the string button field editor with the specified name, specified text label and applies the specified styles respectively to the label control * and the value control. For the label control style unsupported values are filtered : {@link SWT#SEPARATOR}, {@link SWT#WRAP}. * @param name_p The field name. * @param labelText_p The label text. * @param parent_p The parent control. * @param labelStyle_p The label control style {@link Label}. * @param valueStyle_p The value control style according to the value control type. */ public StringButtonFieldEditorAdapter( String name_p, String labelText_p, Composite parent_p, int labelStyle_p, int valueStyle_p ) { init(name_p, labelText_p, labelStyle_p, valueStyle_p); createControl(parent_p); } /** * @see org.eclipse.jface.preference.StringFieldEditor#doCheckState() */ @Override protected boolean doCheckState() { // Default behavior executes the super method. boolean isValid = super.doCheckState(); if (null != _validator) { // Validate the field editor with provided validator. String errorMessage = _validator.isValid(getStringValue()); // If no error message is returned, the field editor is valid. isValid = (null == errorMessage); // If not valid, set the error message. if (!isValid) { setErrorMessage(errorMessage); } } return isValid; } /** * @see org.eclipse.jface.preference.StringFieldEditor#checkState() */ @Override protected boolean checkState() { boolean result = false; // Keep the previous valid state boolean wasValid = isValid(); // Is an empty string allowed ? boolean emptyStringAllowed = isEmptyStringAllowed(); if (emptyStringAllowed) { result = true; } Text textField = getTextControl(); if (textField == null) { return false; } String txt = textField.getText(); result = (txt.trim().length() > 0) || emptyStringAllowed; // Call hook for subclasses result &= doCheckState(); // Clear error message only if this field editor was not valid and it gets valid now. if (!wasValid && result) { clearErrorMessage(); } // If this field editor is not valid, show the related error message. else if (!result) { String errorMessage = getErrorMessage(); showErrorMessage(errorMessage); } return result; } /** * Initializes the field with the given property name and label. * @param name_p The field name. * @param text_p The label text of the field. * @param labelStyle_p The label style. * @param valueStyle_p The value control style. */ protected void init(String name_p, String text_p, int labelStyle_p, int valueStyle_p) { Assert.isNotNull(name_p); Assert.isNotNull(text_p); // Checks styles. _labelStyle = checkLabelStyle(labelStyle_p); _valueStyle = checkValueStyle(valueStyle_p); // Sets the label text and field name. setLabelText(text_p); setPreferenceName(name_p); } // Checks the label style. Does not allow the SEPARATOR style and the WRAP style. // In case of SWT.NONE style value, it applies a correction and return the default label style value SWT.LEFT. private int checkLabelStyle(int labelStyle_p) { int newStyle = labelStyle_p; if (0 != (SWT.SEPARATOR & newStyle)) { newStyle = newStyle - SWT.SEPARATOR; } if (0 != (SWT.WRAP & newStyle)) { newStyle = newStyle - SWT.WRAP; } if (SWT.NONE == newStyle) { newStyle = SWT.LEFT; } return newStyle; } /** * Checks the style of the value control and updates it.
* WARNING : This default implementation returns the specified style. * @param valueStyle_p The value control style. * @return The updated value control style. */ protected int checkValueStyle(int valueStyle_p) { return valueStyle_p; } /** * Does not remove the horizontal and the vertical margins. * @see org.eclipse.jface.preference.FieldEditor#createControl(org.eclipse.swt.widgets.Composite) */ @Override protected void createControl(Composite parent_p) { _parent = parent_p; GridLayout layout = new GridLayout(); layout.numColumns = getNumberOfControls(); layout.horizontalSpacing = HORIZONTAL_GAP; parent_p.setLayout(layout); doFillIntoGrid(parent_p, layout.numColumns); } /** * @see org.eclipse.jface.preference.StringButtonFieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int) */ @Override protected void doFillIntoGrid(Composite parent_p, int numColumns_p) { super.doFillIntoGrid(parent_p, numColumns_p); } /** * @see org.eclipse.jface.preference.StringButtonFieldEditor#changePressed() */ @Override protected abstract String changePressed(); // /////////////////////////////////// PUBLIC API //////////////////////////////////// /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getLabel() */ public Label getLabel() { return getLabelControl(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getValueControl() */ public Control getValueControl() { return getTextControl(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getHelperControl() */ public Control getHelperControl() { return getChangeControl(_parent); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#defaultLayout() */ public void defaultLayout() { Composite parent = getLabelControl().getParent(); GridLayout layout = (GridLayout) parent.getLayout(); fillIntoGrid(parent, layout.numColumns); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getFieldName() */ public String getFieldName() { return getPreferenceName(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getFieldPage() */ public DialogPage getFieldPage() { return getPage(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getValidator() */ public IValidator getValidator() { return _validator; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isFocused() */ public boolean isFocused() { Control valueControl = getValueControl(); Control helperControl = getHelperControl(); boolean focused = false; if (null != valueControl) { focused = valueControl.isFocusControl(); } if (null != helperControl) { focused |= helperControl.isFocusControl(); } return focused; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isHelperEnabled() */ public boolean isHelperEnabled() { boolean enabled = false; Control helperControl = getHelperControl(); if (null != helperControl) { enabled = helperControl.isEnabled(); } return enabled; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isValueEnabled() */ public boolean isValueEnabled() { boolean enabled = false; Control valueControl = getValueControl(); if (null != valueControl) { enabled = valueControl.isEnabled(); } return enabled; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#layout(int) */ public void layout(int numColumns_p) { adjustForNumColumns(numColumns_p); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setFieldPage(org.eclipse.jface.dialogs.DialogPage) */ public void setFieldPage(DialogPage page_p) { setPage(page_p); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setHelperEnabled(boolean) */ public void setHelperEnabled(boolean enabled_p) { Control helperControl = getHelperControl(); if (null != helperControl) { helperControl.setEnabled(enabled_p); } } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setValidator(org.eclipse.egf.common.ui.toolkit.validators.IValidator) */ public void setValidator(IValidator validator_p) { _validator = validator_p; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setValueEnabled(boolean) */ public void setValueEnabled(boolean enabled_p) { Control valueControl = getValueControl(); if (null != valueControl) { valueControl.setEnabled(enabled_p); } } /** * @see org.eclipse.jface.preference.StringFieldEditor#setFocus() */ @Override public void setFocus() { Control valueControl = getValueControl(); if (null != valueControl) { valueControl.setFocus(); } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/AbstractFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11681 Text-content-md5: 2a7dfd94aefe1584f8680c9f7d5b3b72 Text-content-sha1: 5dfab1c9e7ddf5f18ea93c39e1e10fdb7f96f495 Content-length: 11726 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.fields; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; /** * The field editor. * This implementation of field editor respect the IFieldEditor interface * which opens the old FieldEditor API. * It supports error message management, validator, input behavior and the databinding * (based on the already in place binding system : IPreferenceStore). * @author D. GATIBELZA */ public abstract class AbstractFieldEditor extends FieldEditor implements IFieldEditor { // The label control style. protected int _labelStyle = SWT.LEFT; // The value control style. protected int _valueStyle = SWT.NONE; // The validator. private IValidator _validator = null; // The current error message. private String _errorMessage = null; /** * Constructs the MDE field editor. */ protected AbstractFieldEditor() { // Do nothing. } /** * Constructs the MDE field editor with the specified field name and specified label text. Sets the default label control style to {@link SWT#LEFT} and the * default value control to {@link SWT#NONE}. * @param name_p The field name. * @param labelText_p The label text. * @param parent_p The parent control. */ protected AbstractFieldEditor(String name_p, String labelText_p, Composite parent_p) { this(name_p, labelText_p, parent_p, SWT.LEFT, SWT.NONE); } /** * Constructs the MDE field editor with the specified name, specified text label and applies the specified styles respectively to the label control and the * value control. For the label control style unsupported values are filtered : {@link SWT#SEPARATOR}, {@link SWT#WRAP}. * @param name_p The field name. * @param labelText_p The label text. * @param parent_p The parent control. * @param labelStyle_p The label control style {@link Label}. * @param valueStyle_p The value control style according to the value control type. */ protected AbstractFieldEditor(String name_p, String labelText_p, Composite parent_p, int labelStyle_p, int valueStyle_p) { init(name_p, labelText_p, labelStyle_p, valueStyle_p); createControl(parent_p); } /** * Initializes the field with the given property name and label. * @param name_p The field name. * @param text_p The label text of the field. * @param labelStyle_p The label style. * @param valueStyle_p The value control style. */ protected void init(String name_p, String text_p, int labelStyle_p, int valueStyle_p) { Assert.isNotNull(name_p); Assert.isNotNull(text_p); // Checks styles. _labelStyle = checkLabelStyle(labelStyle_p); _valueStyle = checkValueStyle(valueStyle_p); // Sets the label text and field name. setPreferenceName(name_p); setLabelText(text_p); } // Checks the label style. Does not allow the SEPARATOR style and the WRAP style. // In case of SWT.NONE style value, it applies a correction and return the default label style value SWT.LEFT. private int checkLabelStyle(int labelStyle_p) { int newStyle = labelStyle_p; if (0 != (SWT.SEPARATOR & newStyle)) { newStyle = newStyle - SWT.SEPARATOR; } if (0 != (SWT.WRAP & newStyle)) { newStyle = newStyle - SWT.WRAP; } if (SWT.NONE == newStyle) { newStyle = SWT.LEFT; } return newStyle; } /** * Checks the style of the value control and updates it.
* WARNING : This default implementation returns the specified style. * @param valueStyle_p The value control style. * @return The updated value control style. */ protected int checkValueStyle(int valueStyle_p) { return valueStyle_p; } /** * Does not remove the horizontal and the vertical margins. * @see org.eclipse.jface.preference.FieldEditor#createControl(org.eclipse.swt.widgets.Composite) */ @Override protected void createControl(Composite parent_p) { GridLayout layout = new GridLayout(); layout.numColumns = getNumberOfControls(); layout.horizontalSpacing = HORIZONTAL_GAP; parent_p.setLayout(layout); doFillIntoGrid(parent_p, layout.numColumns); } /** * @see org.eclipse.jface.preference.FieldEditor#getLabelControl(org.eclipse.swt.widgets.Composite) TODO DGA : propager dans les constructeurs le style du * label. */ @Override public Label getLabelControl(Composite parent_p) { Label label = super.getLabelControl(parent_p); GridData gd = new GridData(); gd.horizontalAlignment = SWT.FILL; label.setLayoutData(gd); int alignement = SWT.RIGHT & _labelStyle; if (0 == alignement) { alignement = SWT.CENTER & _labelStyle; } if (0 == alignement) { alignement = SWT.LEFT; } label.setAlignment(alignement); return label; } /** * Sets the error message that will be displayed when and if an error occurs. * @param message_p The error message. */ public void setErrorMessage(String message_p) { _errorMessage = message_p; } /** * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int) */ @Override protected abstract void doFillIntoGrid(Composite parent_p, int numColumns_p); /** * Gets the value from the specified control. * @param control_p The value control. * @return The value. */ protected abstract Object getValue(Control control_p); // /////////////////////////////////// PUBLIC API //////////////////////////////////// /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getLabel() */ public Label getLabel() { return getLabelControl(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getValueControl() */ public abstract Control getValueControl(); /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getHelperControl() */ public abstract Control getHelperControl(); /** * @see IFieldEditor#getErrorMessage() */ public String getErrorMessage() { return _errorMessage; } /** * @see IFieldEditor#getValidator() */ public IValidator getValidator() { return _validator; } /** * @see IFieldEditor#setValidator(IValidator) */ public void setValidator(IValidator validator_p) { _validator = validator_p; } /** * @see org.eclipse.jface.preference.FieldEditor#isValid() */ @Override public boolean isValid() { boolean isValid = true; if (null != _validator) { // Validate the field editor with the provided validator. Control control = getValueControl(); Object value = getValue(control); String oldMessage = _errorMessage; _errorMessage = _validator.isValid(value); // If no error message is returned, the field editor is valid. isValid = (null == _errorMessage); // If no page available, cannot displays the error message. if (null != getPage()) { // If not valid, set the error message. if (!isValid && (null == getPage().getErrorMessage())) { showErrorMessage(_errorMessage); } else if (isValid && (getPage().getErrorMessage() == oldMessage)) { clearErrorMessage(); } } } return isValid; } /** * Hook for subclasses to do specific state checks. *

* The default implementation of this framework method uses the validator to validate the field value.
* If no validator is available, the methods returns true. *

* @return true if the field value is valid, and false if invalid */ protected boolean doCheckState() { return isValid(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getFieldName() */ public String getFieldName() { return getPreferenceName(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#getFieldPage() */ public DialogPage getFieldPage() { return getPage(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setFieldPage(org.eclipse.jface.dialogs.DialogPage) */ public void setFieldPage(DialogPage page_p) { setPage(page_p); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isHelperEnabled() */ public boolean isHelperEnabled() { boolean enabled = false; Control helperControl = getHelperControl(); if (null != helperControl) { enabled = helperControl.isEnabled(); } return enabled; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setHelperEnabled(boolean) */ public void setHelperEnabled(boolean enabled_p) { Control helperControl = getHelperControl(); if (null != helperControl) { helperControl.setEnabled(enabled_p); } } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isValueEnabled() */ public boolean isValueEnabled() { boolean enabled = false; Control valueControl = getValueControl(); if (null != valueControl) { enabled = valueControl.isEnabled(); } return enabled; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#setValueEnabled(boolean) */ public void setValueEnabled(boolean enabled_p) { Control valueControl = getValueControl(); if (null != valueControl) { valueControl.setEnabled(enabled_p); } } /** * @see org.eclipse.jface.preference.FieldEditor#setFocus() */ @Override public void setFocus() { Control valueControl = getValueControl(); if (null != valueControl) { valueControl.setFocus(); } } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#isFocused() */ public boolean isFocused() { Control valueControl = getValueControl(); Control helperControl = getHelperControl(); boolean focused = false; if (null != valueControl) { focused = valueControl.isFocusControl(); } if (null != helperControl) { focused |= helperControl.isFocusControl(); } return focused; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#defaultLayout() */ public void defaultLayout() { Composite parent = getLabelControl().getParent(); GridLayout layout = (GridLayout) parent.getLayout(); fillIntoGrid(parent, layout.numColumns); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor#layout(int) */ public void layout(int numColumns_p) { adjustForNumColumns(numColumns_p); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4627 Text-content-md5: 195a848f2376ef2fd9edb5922b1b8e0f Text-content-sha1: 5b025bae9369d6bf9503123a487ffa277b19dee5 Content-length: 4672 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.fields; import org.eclipse.jface.preference.RadioGroupFieldEditor; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; /** * This implementation customized the one provided by org.eclipse.jface.preference package. * @author fournier */ public class CRadioGroupFieldEditor extends RadioGroupFieldEditor { /** * Value of the selected radio button. */ protected Object _selectedRadioButtonValue; /** * Parent of the radio button group. */ private Composite _parent; /** * Use a group ? */ private boolean _useGroup; /** * Constructor. * @param name_p * @param labelText_p * @param numColumns_p * @param labelAndValues_p * @param parent_p * @param readOnly_p */ public CRadioGroupFieldEditor( String name_p, String labelText_p, int numColumns_p, String[][] labelAndValues_p, Composite parent_p ) { super(name_p, labelText_p, numColumns_p, labelAndValues_p, parent_p); initialize(parent_p, false); } /** * Constructor. * @param name_p * @param labelText_p * @param numColumns_p * @param labelAndValues_p * @param parent_p * @param useGroup_p */ public CRadioGroupFieldEditor( String name_p, String labelText_p, int numColumns_p, String[][] labelAndValues_p, Composite parent_p, boolean useGroup_p ) { super(name_p, labelText_p, numColumns_p, labelAndValues_p, parent_p, useGroup_p); initialize(parent_p, useGroup_p); } /** * Initialize a listener to be aware of selection changes. */ private void initialize(Composite parent_p, boolean useGroup_p) { setPropertyChangeListener( new IPropertyChangeListener() { /** * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ public void propertyChange(PropertyChangeEvent event_p) { _selectedRadioButtonValue = event_p.getNewValue(); } } ); // Store the parent. _parent = parent_p; // Store the use group _useGroup = useGroup_p; } /** * Select a radio value depending on given radio button value. * @param value_p */ public void selectRadioButtonFor(Object value_p) { // Precondition if (null == value_p) { return; } // Get the composite used to store radio buttons. Composite radioButtonGroup = getRadioBoxControl(_parent); // Get contained radio buttons. Control[] buttons = radioButtonGroup.getChildren(); // Loop over contained buttons for (Control control : buttons) { Button radioButton = (Button) control; // Get the related value for current radio button. Object radioButtonValue = radioButton.getData(); if (value_p.equals(radioButtonValue)) { // Select the UI button. radioButton.setSelection(true); // Set the radio button data as the selected radio button data. _selectedRadioButtonValue = radioButtonValue; } else { radioButton.setSelection(false); } } } /** * Return the value of the selected radio button. * @return a not null value. */ public Object getSelectedRadioButton() { return _selectedRadioButtonValue; } /** * @see org.eclipse.jface.preference.RadioGroupFieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int) */ @Override protected void doFillIntoGrid(Composite parent, int numColumns) { if (_useGroup) { Control control = getRadioBoxControl(parent); GridData gd = new GridData(); gd.horizontalAlignment = SWT.FILL; gd.horizontalSpan = numColumns; control.setLayoutData(gd); } else { super.doFillIntoGrid(parent, numColumns); } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 17701 Text-content-md5: b5e1513887532c3fa469f41b87c69416 Text-content-sha1: 37e6bb2de841bff4c8e8f6441cc2297b0b9ee105 Content-length: 17746 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2005-2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM - Initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.fields; import org.apache.log4j.Logger; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Text; /** * The custom string field editor. * The custom string field editor supports the text style. */ public class CStringFieldEditor extends AbstractFieldEditor { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(CStringFieldEditor.class.getPackage().getName()); // Cached valid state. private boolean _isValid = false; // Old text value. private String _oldValue = null; // Width of text field in characters; initially unlimited. private int _widthInChars = UNLIMITED; // Text limit of text field in characters; initially unlimited. private int _textLimit = UNLIMITED; // Indicates whether the empty string is legal. private boolean _emptyStringAllowed = true; // The validation strategy. private int _validateStrategy = VALIDATE_ON_KEY_STROKE; /** * The text field, or null if none. */ protected Text _textField; /** * Validation strategy constant (value 0) indicating that the editor should perform validation after every key stroke (when key is released). * @see #setValidateStrategy */ public static final int VALIDATE_ON_KEY_STROKE = 0; /** * Validation strategy constant (value 1) indicating that the editor should perform validation only when the text widget loses focus. * @see #setValidateStrategy */ public static final int VALIDATE_ON_FOCUS_LOST = 1; /** * Validation strategy constant (value 2) indicating that the editor should perform validation after every change. * @see #setValidateStrategy */ public static final int VALIDATE_ON_MODIFICATION = 2; /** * Text limit constant (value -1) indicating unlimited text limit and width. */ public static int UNLIMITED = -1; /** * Creates a string field editor of unlimited width which supports style. Use the method setTextLimit to limit the text. By default the style * is {@value SWT#SINGLE}|{@value SWT#BORDER}. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor * @param parent_p The parent of the field editor's control. */ public CStringFieldEditor(String name_p, String label_p, Composite parent_p) { this(name_p, label_p, UNLIMITED, parent_p, SWT.SINGLE | SWT.BORDER); } /** * Creates a string field editor of unlimited width which supports style. Use the method setTextLimit to limit the text. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor * @param parent_p The parent of the field editor's control * @param valueStyle_p The text style. * @see Text#Text(Composite, int) */ public CStringFieldEditor(String name_p, String label_p, Composite parent_p, int valueStyle_p) { this(name_p, label_p, UNLIMITED, parent_p, valueStyle_p); } /** * Creates a string field editor which supports style. Use the method setTextLimit to limit the text. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor * @param width_p The width of the text input field in characters, or UNLIMITED for no limit * @param parent_p The parent of the field editor's control * @param valueStyle_p The text style. * @see Text#Text(Composite, int) */ public CStringFieldEditor(String name_p, String label_p, int width_p, Composite parent_p, int valueStyle_p) { this(name_p, label_p, width_p, VALIDATE_ON_KEY_STROKE, parent_p, valueStyle_p); } /** * Creates a string field editor which supports style. Use the method setTextLimit to limit the text. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor * @param width_p The width of the text input field in characters, or UNLIMITED for no limit * @param strategy_p either VALIDATE_ON_KEY_STROKE to perform on the fly checking (the default), or VALIDATE_ON_FOCUS_LOST to * perform validation only after the text has been typed in * @param parent_p The parent of the field editor's control * @param valueStyle_p The text style. * @see Text#Text(Composite, int) */ public CStringFieldEditor(String name_p, String label_p, int width_p, int strategy_p, Composite parent_p, int valueStyle_p) { init(name_p, label_p, SWT.LEFT, valueStyle_p); _widthInChars = width_p; setValidateStrategy(strategy_p); _isValid = false; setErrorMessage(JFaceResources.getString("StringFieldEditor.errorMessage"));//$NON-NLS-1$ createControl(parent_p); } /** * @see FieldEditor#adjustForNumColumns(int) */ @Override protected void adjustForNumColumns(int numColumns_p) { GridData gd = (GridData) _textField.getLayoutData(); gd.horizontalSpan = numColumns_p - 1; // We only grab excess space if we have to // If another field editor has more columns then // we assume it is setting the width. gd.grabExcessHorizontalSpace = gd.horizontalSpan == 1; } /** * Checks whether the text input field contains a valid value or not. * @return true if the field value is valid, and false if invalid */ protected boolean checkState() { boolean result = false; // Keep the previous valid state boolean wasValid = _isValid; if (_emptyStringAllowed) { result = true; } if (_textField == null) { result = false; } String txt = _textField.getText(); result = (txt.trim().length() > 0) || _emptyStringAllowed; // Call hook for subclasses result = result && doCheckState(); // Clear error message only if this field editor was not valid and it gets valid now. if (!wasValid && result) { clearErrorMessage(); } // If this field editor is not valid, show the related error message. else if (!result) { showErrorMessage(getErrorMessage()); } return result; } /** * Fills this field editor's basic controls into the given parent. *

* The string field implementation of this FieldEditor framework method contributes the text field. Subclasses may override but must call * super.doFillIntoGrid. *

*/ @Override protected void doFillIntoGrid(Composite parent_p, int numColumns_p) { getLabelControl(parent_p); _textField = getTextControl(parent_p); GridData gd = new GridData(); gd.horizontalSpan = numColumns_p - 1; if (_widthInChars != UNLIMITED) { GC gc = new GC(_textField); try { Point extent = gc.textExtent("X");//$NON-NLS-1$ gd.widthHint = _widthInChars * extent.x; } finally { gc.dispose(); } } else { gd.horizontalAlignment = SWT.FILL; gd.grabExcessHorizontalSpace = true; } if (0 != (_textField.getStyle() & SWT.MULTI)) { gd.verticalAlignment = SWT.FILL; gd.verticalSpan = 2; gd.grabExcessVerticalSpace = true; } _textField.setLayoutData(gd); } /** * @see FieldEditor#doLoad() */ @Override protected void doLoad() { if (_textField != null) { String value = getPreferenceStore().getString(getPreferenceName()); _textField.setText(null == value ? "" : value); //$NON-NLS-1$ _oldValue = value; } } /** * @see FieldEditor#doLoadDefault() */ @Override protected void doLoadDefault() { if (_textField != null) { String value = getPreferenceStore().getDefaultString(getPreferenceName()); _textField.setText(value); } valueChanged(); } /** * @see FieldEditor#doStore() */ @Override protected void doStore() { getPreferenceStore().setValue(getPreferenceName(), _textField.getText()); } /** * @see FieldEditor#getNumberOfControls() */ @Override public int getNumberOfControls() { return 2; } /** * Returns the field editor's value. * @return the current value */ public String getStringValue() { if (_textField != null) { return _textField.getText(); } return getPreferenceStore().getString(getPreferenceName()); } /** * Returns this field editor's text control. * @return the text control, or null if no text field is created yet */ public Text getTextControl() { return _textField; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.AbstractFieldEditor#checkValueStyle(int) */ @Override protected int checkValueStyle(int valueStyle_p) { int newStyle = valueStyle_p; // Force BORDER style, if not specified. if (0 == (SWT.BORDER & valueStyle_p)) { newStyle |= SWT.BORDER; } // Force SINGLE style (single line), if only BORDER style is applied. if (SWT.BORDER == _valueStyle) { newStyle |= SWT.SINGLE; } return newStyle; } /** * Returns this field editor's text control. *

* The control is created if it does not yet exist *

* @param parent_p The parent * @return the text control */ protected Text getTextControl(Composite parent_p) { if (_textField == null) { _textField = doTextControl(parent_p, _valueStyle); _textField.setFont(parent_p.getFont()); switch (_validateStrategy) { case VALIDATE_ON_KEY_STROKE: _textField.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent event_p) { valueChanged(); } }); break; case VALIDATE_ON_MODIFICATION: _textField.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event_p) { valueChanged(); } }); break; case VALIDATE_ON_FOCUS_LOST: _textField.addKeyListener(new KeyAdapter() { @SuppressWarnings("synthetic-access") @Override public void keyPressed(KeyEvent event_p) { clearErrorMessage(); } }); _textField.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent event_p) { refreshValidState(); } @SuppressWarnings("synthetic-access") @Override public void focusLost(FocusEvent event_p) { valueChanged(); clearErrorMessage(); } }); break; default: StringBuilder loggerMessage = new StringBuilder("CStringFieldEditor.getTextControl(..) _ "); //$NON-NLS-1$ loggerMessage.append("Unknown validate strategy");//$NON-NLS-1$ __logger.error(loggerMessage.toString()); } _textField.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent event_p) { _textField = null; } }); if (_textLimit > 0) {// Only set limits above 0 - see SWT spec _textField.setTextLimit(_textLimit); } } else { checkParent(_textField, parent_p); } return _textField; } /** * Does the text control. * @param parent_p The parent composite. * @param style_p The text style. * @return The text control. */ protected Text doTextControl(Composite parent_p, int style_p) { return new Text(parent_p, style_p); } /** * Returns whether an empty string is a valid value. * @return true if an empty string is a valid value, and false if an empty string is invalid * @see #setEmptyStringAllowed */ public boolean isEmptyStringAllowed() { return _emptyStringAllowed; } /** * @see FieldEditor#isValid() */ @Override public boolean isValid() { return _isValid; } /** * @see FieldEditor#refreshValidState() */ @Override protected void refreshValidState() { _isValid = checkState(); } /** * Sets whether the empty string is a valid value or not. * @param allowed_p true if the empty string is allowed, and false if it is considered invalid */ public void setEmptyStringAllowed(boolean allowed_p) { _emptyStringAllowed = allowed_p; } /** * @see FieldEditor#setFocus() */ @Override public void setFocus() { if (_textField != null) { _textField.setFocus(); } } /** * Sets this field editor's value. * @param value_p The new value, or null meaning the empty string */ public void setStringValue(String value_p) { String value = value_p; if (_textField != null) { if (value == null) { value = "";//$NON-NLS-1$ } _oldValue = _textField.getText(); if (!_oldValue.equals(value)) { _textField.setText(value); valueChanged(); } } } /** * Sets this text field's text limit. * @param limit_p The limit on the number of character in the text input field, or UNLIMITED for no limit */ public void setTextLimit(int limit_p) { _textLimit = limit_p; if (_textField != null) { _textField.setTextLimit(limit_p); } } /** * Sets the strategy for validating the text. *

* Calling this method has no effect after createPartControl is called. Thus this method is really only useful for subclasses to call in their * constructor. However, it has public visibility for backward compatibility. *

* @param value_p either VALIDATE_ON_KEY_STROKE to perform on the fly checking (the default), or VALIDATE_ON_FOCUS_LOST to * perform validation only after the text has been typed in */ public void setValidateStrategy(int value_p) { if (value_p == VALIDATE_ON_FOCUS_LOST || value_p == VALIDATE_ON_KEY_STROKE || (value_p == VALIDATE_ON_MODIFICATION)) { _validateStrategy = value_p; } else { StringBuilder loggerMessage = new StringBuilder("CStringFieldEditor.setValidateStrategy(..) _ "); //$NON-NLS-1$ loggerMessage.append("Validation strategy unknown"); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } } /** * Shows the error message set via setErrorMessage. */ public void showErrorMessage() { showErrorMessage(getErrorMessage()); } /** * Informs this field editor's listener, if it has one, about a change to the value (VALUE property) provided that the old and new values are * different. *

* This hook is not called when the text is initialized (or reset to the default value) from the preference store. *

*/ protected void valueChanged() { setPresentsDefaultValue(false); boolean oldState = _isValid; refreshValidState(); if (_isValid != oldState) { fireStateChanged(IS_VALID, oldState, _isValid); } String newValue = _textField.getText(); if (!newValue.equals(_oldValue)) { fireValueChanged(VALUE, _oldValue, newValue); _oldValue = newValue; } } /** * @see FieldEditor#setEnabled(boolean, Composite) */ @Override public void setEnabled(boolean enabled_p, Composite parent_p) { super.setEnabled(enabled_p, parent_p); getTextControl(parent_p).setEnabled(enabled_p); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.AbstractFieldEditor#getHelperControl() */ @Override public Control getHelperControl() { return null; } /** * @see org.eclipse.egf.common.ui.toolkit.fields.AbstractFieldEditor#getValue(org.eclipse.swt.widgets.Control) */ @Override protected Object getValue(Control control_p) { return _textField.getText(); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.AbstractFieldEditor#getValueControl() */ @Override public Control getValueControl() { return _textField; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3712 Text-content-md5: c532a80a85bea82577e5def472e9de5e Text-content-sha1: 009aff99867230c0e53a45c80eb87807d2ec086e Content-length: 3757 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.fields; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; /** * The field editor interface. * This interface is used to make field editors services public, uniform and extends them. * @author D. GATIBELZA */ public interface IFieldEditor { /** * Gets the field name. * @return The name of this field. */ public String getFieldName(); /** * Gets the label control. * @return The label control or null if it doesn't exist. */ public Label getLabel(); /** * Gets the value control. * @return The value control or null if it doesn't exist. */ public Control getValueControl(); /** * Gets the helper control. * @return The helper control or null if it doesn't exist. */ public Control getHelperControl(); /** * Returns the error message that will be displayed when an error occurs. * @return The error message, or null if none. */ public String getErrorMessage(); /** * Sets the field validator. * @param validator_p The validator. */ public void setValidator(IValidator validator_p); /** * Gets the field validator. * @return The validator. */ public IValidator getValidator(); /** * Returns whether this field contains a valid value. * @return True if the field value is valid else false. */ public boolean isValid(); /** * Sets whether or not the value control in the field is enabled. * @param enabled_p True to enable else false. */ public void setValueEnabled(boolean enabled_p); /** * Sets whether or not the helper control in the field is enabled. * @param enabled_p True to enable else false. */ public void setHelperEnabled(boolean enabled_p); /** * Checks if the value control is enabled. * @return True if the value control is enabled else false. */ public boolean isValueEnabled(); /** * Checks if the helper control is enabled. * @return True if the value control is enabled else false. */ public boolean isHelperEnabled(); /** * Sets the page to be the receiver. * @param page_p The dialog page. */ public void setFieldPage(DialogPage page_p); /** * Gets the page that the field sends messages to. * @return The dialog page. */ public DialogPage getFieldPage(); /** * Sets the focus. */ public void setFocus(); /** * Returns if the current field editor is focused. * @return True if the fiedl editor is focused else false. */ public boolean isFocused(); /** * Layouts the current field editor with the default layout. */ public void defaultLayout(); /** * Layouts the current field editor into the specified number of columns. * @param numColumns_p The number of columns. */ public void layout(int numColumns_p); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1476 Text-content-md5: 0d16ddbe8225af193a92414e5ef71a47 Text-content-sha1: 7dcecd5e27e8b42cbdf9346c4f098ba2ddea0dd8 Content-length: 1521 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.fields; import java.util.MissingResourceException; import java.util.ResourceBundle; /** * The messages handler. * @author D. GATIBELZA */ public class Messages { // The bundle name. private static final String BUNDLE_NAME = "org.eclipse.egf.common.ui.toolkit.fields.messages"; //$NON-NLS-1$ // The resource bundle. private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); // Constructs the messages handler. private Messages() { // Do nothing. } /** * Gets the messages from the specified key. * @param key_p The key. * @return The corresponding messages. */ public static String getString(String key_p) { try { return RESOURCE_BUNDLE.getString(key_p); } catch (MissingResourceException e) { return '!' + key_p + '!'; } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/StringBrowserFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3773 Text-content-md5: 70ea4339fa56358785264519641f7c40 Text-content-sha1: 09785a30ab41ef35f67ec6e2ee7507792c73f2f2 Content-length: 3818 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.fields; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.toolkit.adapters.StringButtonFieldEditorAdapter; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; /** * The string browser field editor. * The string browser field editor is used to select element(s) which are in relation * with the current edited element. * @author D. GATIBELZA */ public class StringBrowserFieldEditor extends StringButtonFieldEditorAdapter { // The selected object. private Object _selectedObject = null; // The browser label provider. private ILabelProvider _labelProvider; /** * Constructs the string browser field editor. * @param name_p The field name. * @param label_p The field label. * @param parent_p The parent composite. * @param labelProvider_p The browser and text field label provider cannot be null. */ public StringBrowserFieldEditor( String name_p, String label_p, Composite parent_p, ILabelProvider labelProvider_p ) { this(name_p, label_p, parent_p, labelProvider_p, SWT.LEFT, SWT.NONE); } /** * Constructs the string browser field editor. * @param name_p The field name. * @param label_p The field label. * @param parent_p The parent composite. * @param labelProvider_p The browser and text field label provider cannot be null. * @param labelStyle_p The label control style. * @param valueStyle_p The value control style. */ public StringBrowserFieldEditor( String name_p, String label_p, Composite parent_p, ILabelProvider labelProvider_p, int labelStyle_p, int valueStyle_p ) { super(name_p, label_p, parent_p, labelStyle_p, valueStyle_p); // Register browser label provider. _labelProvider = labelProvider_p; } /** * @see org.eclipse.jface.preference.StringButtonFieldEditor#getChangeControl(org.eclipse.swt.widgets.Composite) */ @Override protected Button getChangeControl(Composite parent_p) { // Sets the button. setChangeButtonText(Messages.getString("StringBrowserFieldEditor.button.label")); //$NON-NLS-1$ // Calls super implementation. return super.getChangeControl(parent_p); } /** * Gets the current selected object. * @return The current selection. */ public Object getCurrentSelection() { return _selectedObject; } /** * Sets the current selected object. Updates the text field content and the current selection according to the specified object. * @param object_p The selected object. */ public void setCurrentSelection(Object object_p) { _selectedObject = object_p; String label = null; if (null != _labelProvider) { label = _labelProvider.getText(_selectedObject); } if (null != label) { setStringValue(label); } } /** * @see org.eclipse.egf.common.ui.toolkit.adapters.StringButtonFieldEditorAdapter#changePressed() Default behavior returns an empty string. */ @Override protected String changePressed() { return ICommonConstants.EMPTY_STRING; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4719 Text-content-md5: 671c3df23e796971b4f6cac045c52b30 Text-content-sha1: 4e567dbcf1ea78f32a8da8f748634d97271547b7 Content-length: 4764 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.fields; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implements a String field editor that delegated its validation to an {@link IValidator} object if provided. * @author fournier */ public class ValidatingStringFieldEditor extends CStringFieldEditor { /** * Creates a validating string field editor of unlimited width which supports style. Use the method setTextLimit to limit the text. By default the style * is {@value SWT#SINGLE}|{@value SWT#BORDER}. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor. * @param parent_p The parent of the field editor's control. */ public ValidatingStringFieldEditor(String name_p, String label_p, Composite parent_p) { super(name_p, label_p, parent_p); } /** * Creates a validating string field editor of unlimited width which supports style. Use the method setTextLimit to limit the text. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor * @param parent_p The parent of the field editor's control * @param style_p The text style. * @see Text#Text(Composite, int) */ public ValidatingStringFieldEditor(String name_p, String label_p, Composite parent_p, int style_p) { super(name_p, label_p, parent_p, style_p); } /** * Creates a validating string field editor which supports style. Use the method setTextLimit to limit the text. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor * @param width_p The width of the text input field in characters, or UNLIMITED for no limit * @param parent_p The parent of the field editor's control * @param style_p The text style. * @see Text#Text(Composite, int) */ public ValidatingStringFieldEditor(String name_p, String label_p, int width_p, Composite parent_p, int style_p) { super(name_p, label_p, width_p, parent_p, style_p); } /** * Creates a validating string field editor which supports style. Use the method setTextLimit to limit the text. * @param name_p The name of field this field editor works on. * @param label_p The label text of the field editor * @param width_p The width of the text input field in characters, or UNLIMITED for no limit * @param strategy_p either VALIDATE_ON_KEY_STROKE to perform on the fly checking (the default), or VALIDATE_ON_FOCUS_LOST to * perform validation only after the text has been typed in * @param parent_p The parent of the field editor's control * @param style_p The text style. * @see Text#Text(Composite, int) */ public ValidatingStringFieldEditor(String name_p, String label_p, int width_p, int strategy_p, Composite parent_p, int style_p) { super(name_p, label_p, width_p, strategy_p, parent_p, style_p); } /** * @see org.eclipse.egf.common.ui.toolkit.fields.CStringFieldEditor#doCheckState() */ @Override protected boolean doCheckState() { // Default behavior executes the super method. boolean isValid = super.doCheckState(); if (null != getValidator()) { // Validate the field editor with provided validator. String errorMessage = getValidator().isValid(getStringValue()); // If no error message is returned, the field editor is valid. isValid = (null == errorMessage); // If not valid, set the error message. if (!isValid) { setErrorMessage(errorMessage); } } return isValid; } /** * Checks whether the text input field contains a valid value or not. * @param force_p true means force to compute the valid state again. * @return true if the field value is valid, and false if invalid. */ public boolean isValid(boolean force_p) { if (force_p) { refreshValidState(); } return super.isValid(); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/fields/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 612 Text-content-md5: 8af4f0e239eb9a0241bfabda131de657 Text-content-sha1: 08c6e1629c58683d55a878b73df86b661fc096e8 Content-length: 657 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### StringBrowserFieldEditor.button.label=Browse... Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/internal/IToolkitConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 931 Text-content-md5: 5a58eaac72bc5a31730f93fdffcab2fb Text-content-sha1: 61321498a1fd70b1b431070bf6a1f9e6aa015f06 Content-length: 976 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.internal; import org.eclipse.egf.common.constant.ICommonConstants; /** * Common constants used in the toolkit. * @author Guillaume Brocard */ public interface IToolkitConstants { /** * Empty string constant. */ public static final String EMPTY_STRING = ICommonConstants.EMPTY_STRING; } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/internal/StringMatcher.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 13573 Text-content-md5: a079ca99ec29653069729ab2308e49d8 Text-content-sha1: 786898c068f201ce15d80d570502e5ab6013f7cf Content-length: 13618 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2005-2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM - Initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.internal; import java.util.Vector; /** * A string pattern matcher, supporting "*" and "?" wildcards. */ public class StringMatcher { protected String fPattern; protected int fLength; // pattern length protected boolean fIgnoreWildCards; protected boolean fIgnoreCase; protected boolean fHasLeadingStar; protected boolean fHasTrailingStar; protected String fSegments[]; // the given pattern is split into * separated segments /* boundary value beyond which we don't need to search in the text */ protected int fBound = 0; protected static final char fSingleWildCard = '\u0000'; /** * */ public static class Position { int start; // inclusive int end; // exclusive /** * @param start_p * @param end_p */ public Position(int start_p, int end_p) { this.start = start_p; this.end = end_p; } /** * Gets the start index. * @return The start index. */ public int getStart() { return start; } /** * Gets the end index. * @return The end index */ public int getEnd() { return end; } } /** * StringMatcher constructor takes in a String object that is a simple pattern which may contain '*' for 0 and many characters and '?' for exactly one * character. Literal '*' and '?' characters must be escaped in the pattern e.g., "\*" means literal "*", etc. Escaping any other character (including the * escape character itself), just results in that character in the pattern. e.g., "\a" means "a" and "\\" means "\" If invoking the StringMatcher with string * literals in Java, don't forget escape characters are represented by "\\". * @param pattern the pattern to match text against * @param ignoreCase if true, case is ignored * @param ignoreWildCards if true, wild cards and their escape sequences are ignored (everything is taken literally). */ public StringMatcher(String pattern, boolean ignoreCase, boolean ignoreWildCards) { if (pattern == null) { throw new IllegalArgumentException(); } fIgnoreCase = ignoreCase; fIgnoreWildCards = ignoreWildCards; fPattern = pattern; fLength = pattern.length(); if (fIgnoreWildCards) { parseNoWildCards(); } else { parseWildCards(); } } /** * Find the first occurrence of the pattern between startend(exclusive). * @param text the String object to search in * @param start_p the starting index of the search range, inclusive * @param end_p the ending index of the search range, exclusive * @return an StringMatcher.Position object that keeps the starting * (inclusive) and ending positions (exclusive) of the first occurrence of the * pattern in the specified range of the text; return null if not found or subtext * is empty (start==end). A pair of zeros is returned if pattern is empty string * Note that for pattern like "*abc*" with leading and trailing stars, position of "abc" * is returned. For a pattern like"*??*" in text "abcdf", (1,3) is returned */ public StringMatcher.Position find(String text, int start_p, int end_p) { if (text == null) { throw new IllegalArgumentException(); } int start = start_p; int end = end_p; int tlen = text.length(); if (start < 0) { start = 0; } if (end > tlen) { end = tlen; } if (end < 0 || start >= end) { return null; } if (fLength == 0) { return new Position(start, start); } if (fIgnoreWildCards) { int x = posIn(text, start, end); if (x < 0) { return null; } return new Position(x, x + fLength); } int segCount = fSegments.length; if (segCount == 0) { return new Position(start, end); } int curPos = start; int matchStart = -1; int i; for (i = 0; i < segCount && curPos < end; ++i) { String current = fSegments[i]; int nextMatch = regExpPosIn(text, curPos, end, current); if (nextMatch < 0) { return null; } if (i == 0) { matchStart = nextMatch; } curPos = nextMatch + current.length(); } if (i < segCount) { return null; } return new Position(matchStart, curPos); } /** * match the given text with the pattern * @return true if matched otherwise false * @param text a String object */ public boolean match(String text) { if (text == null) { return false; } return match(text, 0, text.length()); } /** * Given the starting (inclusive) and the ending (exclusive) positions in the text, determine if the given substring matches with aPattern * @return true if the specified portion of the text matches the pattern * @param text a String object that contains the substring to match * @param start_p marks the starting position (inclusive) of the substring * @param end_p marks the ending index (exclusive) of the substring */ public boolean match(String text, int start_p, int end_p) { if (text == null) { throw new IllegalArgumentException(); } int start = start_p; int end = end_p; if (start > end) { return false; } if (fIgnoreWildCards) { return (end - start == fLength) && fPattern.regionMatches(fIgnoreCase, 0, text, start, fLength); } int segCount = fSegments.length; if (segCount == 0 && (fHasLeadingStar || fHasTrailingStar)) { return true; } if (start == end) { return fLength == 0; } if (fLength == 0) { return start == end; } int tlen = text.length(); if (start < 0) { start = 0; } if (end > tlen) { end = tlen; } int tCurPos = start; int bound = end - fBound; if (bound < 0) { return false; } int i = 0; String current = fSegments[i]; int segLength = current.length(); /* process first segment */ if (fHasLeadingStar == false) { if (regExpRegionMatches(text, start, current, 0, segLength) == false) { return false; } ++i; tCurPos = tCurPos + segLength; } if (fSegments.length == 1 && fHasLeadingStar == false && fHasTrailingStar == false) { // only one segment to match, no wildcards specified return tCurPos == end; } /* process middle segments */ while (i < segCount) { current = fSegments[i]; int currentMatch; int k = current.indexOf(fSingleWildCard); if (k < 0) { currentMatch = textPosIn(text, tCurPos, end, current); if (currentMatch < 0) { return false; } } else { currentMatch = regExpPosIn(text, tCurPos, end, current); if (currentMatch < 0) { return false; } } tCurPos = currentMatch + current.length(); i++; } /* process final segment */ if (fHasTrailingStar == false && tCurPos != end) { int clen = current.length(); return regExpRegionMatches(text, end - clen, current, 0, clen); } return i == segCount; } /** * This method parses the given pattern into segments seperated by wildcard '*' characters. Since wildcards are not being used in this case, the pattern * consists of a single segment. */ private void parseNoWildCards() { fSegments = new String[1]; fSegments[0] = fPattern; fBound = fLength; } /** * Parses the given pattern into segments separated by wildcard '*' characters. a String object that is a simple regular expression with '*' and/or '?' */ private void parseWildCards() { if (fPattern.startsWith("*")) { //$NON-NLS-1$ fHasLeadingStar = true; } if (fPattern.endsWith("*")) {//$NON-NLS-1$ /* make sure it's not an escaped wildcard */ if (fLength > 1 && fPattern.charAt(fLength - 2) != '\\') { fHasTrailingStar = true; } } Vector temp = new Vector(); int pos = 0; StringBuffer buf = new StringBuffer(); while (pos < fLength) { char c = fPattern.charAt(pos++); switch (c) { case '\\': if (pos >= fLength) { buf.append(c); } else { char next = fPattern.charAt(pos++); /* if it's an escape sequence */ if (next == '*' || next == '?' || next == '\\') { buf.append(next); } else { /* not an escape sequence, just insert literally */ buf.append(c); buf.append(next); } } break; case '*': if (buf.length() > 0) { /* new segment */ temp.addElement(buf.toString()); fBound += buf.length(); buf.setLength(0); } break; case '?': /* append special character representing single match wildcard */ buf.append(fSingleWildCard); break; default: buf.append(c); } } /* add last buffer to segment list */ if (buf.length() > 0) { temp.addElement(buf.toString()); fBound += buf.length(); } fSegments = new String[temp.size()]; temp.copyInto(fSegments); } /** * @param text a string which contains no wildcard * @param start the starting index in the text for search, inclusive * @param end the stopping point of search, exclusive * @return the starting index in the text of the pattern , or -1 if not found */ protected int posIn(String text, int start, int end) {// no wild card in pattern int max = end - fLength; if (fIgnoreCase == false) { int i = text.indexOf(fPattern, start); if (i == -1 || i > max) { return -1; } return i; } for (int i = start; i <= max; ++i) { if (text.regionMatches(true, i, fPattern, 0, fLength)) { return i; } } return -1; } /** * @param text a simple regular expression that may only contain '?'(s) * @param start the starting index in the text for search, inclusive * @param end the stopping point of search, exclusive * @param p a simple regular expression that may contains '?' * @return the starting index in the text of the pattern , or -1 if not found */ protected int regExpPosIn(String text, int start, int end, String p) { int plen = p.length(); int max = end - plen; for (int i = start; i <= max; ++i) { if (regExpRegionMatches(text, i, p, 0, plen)) { return i; } } return -1; } /** * @return boolean * @param text a String to match * @param start int that indicates the starting index of match, inclusive * @param end
int that indicates the ending index of match, exclusive * @param p String, String, a simple regular expression that may contain '?' * @param ignoreCase boolean indicating wether code>p is case sensitive */ protected boolean regExpRegionMatches(String text, int tStart_p, String p, int pStart_p, int plen_p) { int tStart = tStart_p; int pStart = pStart_p; int plen = plen_p; while (plen-- > 0) { char tchar = text.charAt(tStart++); char pchar = p.charAt(pStart++); /* process wild cards */ if (!fIgnoreWildCards) { /* skip single wild cards */ if (pchar == fSingleWildCard) { continue; } } if (pchar == tchar) { continue; } if (fIgnoreCase) { if (Character.toUpperCase(tchar) == Character.toUpperCase(pchar)) { continue; } // comparing after converting to upper case doesn't handle all cases; // also compare after converting to lower case if (Character.toLowerCase(tchar) == Character.toLowerCase(pchar)) { continue; } } return false; } return true; } /** * @param text the string to match * @param start the starting index in the text for search, inclusive * @param end the stopping point of search, exclusive * @param p a pattern string that has no wildcard * @return the starting index in the text of the pattern , or -1 if not found */ protected int textPosIn(String text, int start, int end, String p) { int plen = p.length(); int max = end - plen; if (fIgnoreCase == false) { int i = text.indexOf(p, start); if (i == -1 || i > max) { return -1; } return i; } for (int i = start; i <= max; ++i) { if (text.regionMatches(true, i, p, 0, plen)) { return i; } } return -1; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/internal/UI.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3662 Text-content-md5: 9193ef3ff35f2027a375337a25a123c3 Text-content-sha1: 87635aca41e51d84248d0ab05ac1334f81cbd1cc Content-length: 3707 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2005-2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM - Initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.internal; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.FontMetrics; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; /** * The UI internal tool. * @author D. GATIBELZA */ public abstract class UI { // Initializes the colors disposer. static { Display.getDefault().disposeExec( new Runnable() { public void run() { dispose(); } } ); } /** * The error color (red color). */ public static final Color ERROR_COLOR = Display.getDefault().getSystemColor(SWT.COLOR_RED); /** * The default text color (black color). */ public static final Color DEFAULT_COLOR = Display.getDefault().getSystemColor(SWT.COLOR_BLACK); /** * Disposes the color resources. */ protected static void dispose() { ERROR_COLOR.dispose(); DEFAULT_COLOR.dispose(); } /** * Returns the number of pixels corresponding to the given number of horizontal dialog units. *

* Clients may call this framework method, but should not override it. *

* @param control The control being sized. * @param dlus The number of horizontal dialog units. * @return The number of pixel. */ public static int convertHorizontalDLUsToPixels(Control control, int dlus) { GC gc = new GC(control); gc.setFont(control.getFont()); int averageWidth = gc.getFontMetrics().getAverageCharWidth(); gc.dispose(); double horizontalDialogUnitSize = averageWidth * 0.25; return (int) Math.round(dlus * horizontalDialogUnitSize); } /** * Returns the number of pixels corresponding to the given number of vertical dialog units. *

* Clients may call this framework method, but should not override it. *

* @param control The control being sized. * @param dlus The number of vertical dialog units. * @return the number of pixels */ public static int convertVerticalDLUsToPixels(Control control, int dlus) { GC gc = new GC(control); gc.setFont(control.getFont()); int height = gc.getFontMetrics().getHeight(); gc.dispose(); double verticalDialogUnitSize = height * 0.125; return (int) Math.round(dlus * verticalDialogUnitSize); } /** * Sets the GridData on button to be one that is spaced for the current font. * @param button The button the data is being set on. */ public static void setButtonLayoutData(Button button) { GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); // Compute and store a font metric GC gc = new GC(button); gc.setFont(button.getFont()); FontMetrics fontMetrics = gc.getFontMetrics(); gc.dispose(); int widthHint = org.eclipse.jface.dialogs.Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH); data.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); button.setLayoutData(data); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/validators Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/validators/AbstractValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1665 Text-content-md5: 5b7394b946cb0254a17ab156d6133e87 Text-content-sha1: 4c4ab567916a4aefe2f761d1dc3e4819f93d71cf Content-length: 1710 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.validators; /** * The abstract implementation of the IValidator interface. * @author fournier */ public abstract class AbstractValidator implements IValidator { /** * Returned formatted message when isValid method returned false. */ private String _errorMessage; /** * Constructs the abstract implementation of the validator.. *

* It is the responsibility of the caller to fully format the message. *

* @param errorMessage_p The message displayed when {@link #isValid(Object)} returned false. */ protected AbstractValidator(String errorMessage_p) { _errorMessage = errorMessage_p; } /** * Returns the error message. * @return a not null string. */ protected String getErrorMessage() { return _errorMessage; } /** * Set the error message to given one. * @param errorMessage_p the errorMessage to set */ protected void setErrorMessage(String errorMessage_p) { _errorMessage = errorMessage_p; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/validators/CompoundValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2390 Text-content-md5: 0530b260ad1442df3651b26607e05292 Text-content-sha1: 4799f0b21d4451502833f40aa87ef55ddc41ea44 Content-length: 2435 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.validators; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Implements a compound validator that contains other validators.
* The validation is done in applying all contained validators.
* Overall validation is stopped as soon as a contained validator returns an error message. * @author Guillaume Brocard */ public class CompoundValidator extends AbstractValidator { /** * Validators involved in validation process. */ List _validators; /** * Constructor.
* Construct an empty compound validator. */ public CompoundValidator() { super(null); _validators = new ArrayList(0); } /** * Constructor.
* Construct a compound validator with given validator as first one. * @param validator_p */ public CompoundValidator(IValidator validator_p) { this(); addValidator(validator_p); } /** * Add given validator into the list of {@link IValidator} tested when {@link #isValid(Object)} method is called. * @param validator_p */ public void addValidator(IValidator validator_p) { _validators.add(validator_p); } /** * Validate given value against all contained validators. * @see IValidator#isValid(java.lang.Object) */ public String isValid(Object value_p) { String errorMessage = null; Iterator validators = _validators.iterator(); // Iterate over all contained validators, stop as soon as an error is encountered. while (validators.hasNext() && (null == errorMessage)) { IValidator currentValidator = validators.next(); errorMessage = currentValidator.isValid(value_p); } return errorMessage; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/validators/IValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1385 Text-content-md5: fb334c5a12d48d107a5be245baaee3c6 Text-content-sha1: 0dad1b2767d825ac9e4a4036ce6f517765bf17be Content-length: 1430 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.validators; /** * An interface for validating any UI data input. *

* This interface should be implemented by classes that wish to act as UI data input validators. *

* @author fournier */ public interface IValidator { /** * Returns a string indicating whether the given value is valid; null means valid, and non-null means invalid, with the result * being the error message to display to the end-user. *

* It is the responsibility of the implementor to fully format the message before returning it. *

* @param value the value to be validated * @return the error message, or null indicating that the value is valid. */ public String isValid(Object value); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1864 Text-content-md5: b94c2a3003ab36b788fafee8719ed973 Text-content-sha1: 033ec5dec513f67b300a78e81359e59bb79ee4a4 Content-length: 1909 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.common.ui.toolkit.validators; import org.apache.log4j.Logger; /** * Implements a validator that checks if given value is not an empty string. * @author fournier */ public class NotEmptyStringValidator extends AbstractValidator { // Log4j reference logger. private static final Logger __logger = Logger.getLogger(NotEmptyStringValidator.class.getPackage().getName()); /** * Constructs the not empty string validator. * @param errorMessage_p The message displayed when {@link #isValid(Object)} returned false. */ public NotEmptyStringValidator(String errorMessage_p) { super(errorMessage_p); } /** * @see org.eclipse.egf.common.ui.toolkit.validators.IValidator#isValid(java.lang.Object) */ public String isValid(Object value_p) { String result = getErrorMessage(); try { // Value must be a string here. String stringValue = (String) value_p; // Test that the string is not empty. if (stringValue != null && stringValue.trim().length() > 0) { // Returning null indicates that the value is valid. result = null; } } catch (ClassCastException exception_p) { StringBuilder loggerMessage = new StringBuilder("NotEmptyStringValidator.isValid(..) _ "); //$NON-NLS-1$ __logger.error(loggerMessage.toString(), exception_p); } return result; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2257 Text-content-md5: 4a88b2c5811189ea88e2dccc4b43956f Text-content-sha1: 0dd9dfc1b69eb1a653321a67fcd061dda06fcb60 Content-length: 2302 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.validators; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Implements a validator that checks if given value matches a regular expression. * @author D. GATIBELZA */ public class RegExpValidator extends AbstractValidator { /** * The regular expression to match. */ private Pattern _regExpPattern; /** * Constructs the regular expression validator. * @param errorMessage_p the error message displayed when given value do not match the regular expression. * @param regularExpression_p the regular expression to match. */ public RegExpValidator(String errorMessage_p, String regularExpression_p) { super(errorMessage_p); _regExpPattern = Pattern.compile(regularExpression_p); } /** * Return the regular expression to match. * @return The regular expression pattern. */ public Pattern getPattern() { return _regExpPattern; } /** * @see org.eclipse.egf.common.ui.toolkit.validators.IValidator#isValid(Object) */ public String isValid(Object value_p) { boolean isValid = false; // Precondition : given object must be a string. if (value_p instanceof String) { String value = (String) value_p; if (value.length() > 0) { // Create a matcher for given value. Matcher matcher = _regExpPattern.matcher(value); // Does it match the regular expression ? isValid = matcher.matches(); } } // If given value is not valid, returns the error message; otherwise null that means 'valid'. return (!isValid) ? getErrorMessage() : null; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/validators/RegExpValidatorFactory.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5571 Text-content-md5: 5cde83000570a8cba15f47c7c132f3cd Text-content-sha1: 92f9289dc883b13bc77d5827f679d111b58186f0 Content-length: 5616 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.validators; /** * The regular expression validators factory. * @author D. GATIBELZA */ public abstract class RegExpValidatorFactory { // Id of the validator created by this validators factory. private final String _id; /** * Creates a new regular expression validator with the given identifier. * @param validatorId_p The identifier of the validator factory. */ protected RegExpValidatorFactory(String validatorId_p) { _id = validatorId_p; } /** * Creates a new standard regular expression validator. * @param errorMessage_p The error message. * @return The regular expression validator. */ public abstract RegExpValidator create(String errorMessage_p); /** * Gets the identifier of this validator factory. * @return The identifier of this validator factory. */ public String getId() { return _id; } /** * The validator which allows only digits. */ public static final RegExpValidatorFactory ONLY_DIGITS = new RegExpValidatorFactory("onlyDigits") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, "\\d*"); //$NON-NLS-1$ } }; /** * The validator which allows only lower case characters. */ public static final RegExpValidatorFactory ONLY_LOWER_CASE = new RegExpValidatorFactory("onlyLowerCase") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, "\\p{Lower}"); //$NON-NLS-1$ } }; /** * The validator which allows only upper case characters. */ public static final RegExpValidatorFactory ONLY_UPPER_CASE = new RegExpValidatorFactory("onlyUpperCase") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, "\\{Upper}"); //$NON-NLS-1$ } }; /** * The validator which doesn't allow numeric start. */ public static final RegExpValidatorFactory NOT_NUMERIC_START = new RegExpValidatorFactory("notNumericStart") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, "\\D+(.| )+"); //$NON-NLS-1$ } }; /** * The validator which doesn't allow punctuation characters (One of ! " # $ % & ' ( ) * + , - . / : ; < => ? @ [ \ ] ^ _ ` { | } ~). */ public static final RegExpValidatorFactory NO_PUNCTUATION = new RegExpValidatorFactory("noPunctuation") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, "[^\\p{Punct}]*"); //$NON-NLS-1$ } }; /*** * The validator which doesn't allow space characters (One of [ ] \t \n \x0B \f \r). */ public static final RegExpValidatorFactory NO_SPACE = new RegExpValidatorFactory("noSpace") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, "[^\\s]*"); //$NON-NLS-1$ } }; /** * The IP digit validator is used to validate each digit of an IP Address. each digit must respect */ public static final RegExpValidatorFactory IP_DIGIT = new RegExpValidatorFactory("ipDigit") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, "[1]{0,1}\\d{0,2}|[2][0-5]{0,2}"); //$NON-NLS-1$ } }; /** * The not empty validator doesn't allow empty strings. */ public static final RegExpValidatorFactory NOT_EMPTY = new RegExpValidatorFactory("notEmpty") { //$NON-NLS-1$ /** * @see org.eclipse.egf.common.ui.toolkit.validators.RegExpValidatorFactory#create(java.lang.String) */ @Override public RegExpValidator create(String errorMessage_p) { return new RegExpValidator(errorMessage_p, ".+"); //$NON-NLS-1$ } }; } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3261 Text-content-md5: 8173d8003f510327f833f2b0cec70f38 Text-content-sha1: 40af977a52aa989e2afbc2069c4567c07922251c Content-length: 3306 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.viewers; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.Viewer; /** * Base class to implement content provider.
* This implementation handles input changes.
* Algorithm of the inputChanged method :
* *
 * if (null == oldInput) && (null != newInput) then we call handleElementAdded method with newInput as argument.
 * if (null != oldInput) && (null == newInput) then we call handleElementRemoved method with oldInput as argument.
 * if (newInput == oldInput) && (null != newInput) then we call handleElementUpdated method with both inputs as arguments.
 * 
* * @author fournier */ public abstract class AbstractStructuredContentProvider implements IStructuredContentProvider { /** * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ public void inputChanged(Viewer viewer_p, Object oldInput_p, Object newInput_p) { handleViewer(viewer_p); // Handle the case : elements are removed. if ((null != oldInput_p) && (null == newInput_p)) { handleElementRemoved(viewer_p, oldInput_p); } // Handle the case : elements are added. else if ((null == oldInput_p) && (null != newInput_p)) { handleElementAdded(viewer_p, newInput_p); } // Handle the case : elements are updated. else if ((oldInput_p == newInput_p) && (null != newInput_p)) { handleElementUpdated(viewer_p, oldInput_p, newInput_p); } } /** * Give an opportunity to handle the viewer when {@link #inputChanged(Viewer, Object, Object)} is called. * @param viewer_p The viewer. */ protected abstract void handleViewer(Viewer viewer_p); /** * Called when elements are updated in the viewer. * @param viewer_p The viewer. * @param oldInput_p The old input value. * @param newInput_p The new input value. */ protected abstract void handleElementUpdated(Viewer viewer_p, Object oldInput_p, Object newInput_p); /** * Called when elements are added in the viewer. * @param viewer_p The viewer. * @param addedElements_p The elements which are added to this viewer. */ protected abstract void handleElementAdded(Viewer viewer_p, Object addedElements_p); /** * Called when elements are removed from the viewer. * @param viewer_p The viewer. * @param removedElements_p The elements which are removed from this viewer. */ protected abstract void handleElementRemoved(Viewer viewer_p, Object removedElements_p); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 32068 Text-content-md5: 6fddead29ca8ba07914330cc11ff6bdb Text-content-sha1: bccd3a44a516b56f5c126d589f54d28a291c087e Content-length: 32113 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.viewers; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.egf.common.ui.toolkit.internal.UI; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.ContentViewer; import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; /** * Base class to implement a transfer viewer that allows the end-user to transfer objects between a left {@link StructuredViewer} and a right * {@link StructuredViewer}.
* This viewer provides the end-user with different buttons to add, add all, remove and remove all objects from a viewer to another one.
* Theses different buttons can be displayed or not, depending on style provided in the constructor. The enable state of theses buttons can be controlled by * {@link SelectionChangedHandler}.
* Under the viewers, a status text field is displayed to provide contextual information related to viewers' selection. This status field can be displayed or * not, depending on style provided in the constructor.
*

* Implementors must have to provide {@link IContentProvider} and {@link ILabelProvider}. * @author D. GATIBELZA */ public abstract class AbstractTransferViewer extends Viewer { // The logger. private static Logger _logger = Logger.getLogger(AbstractTransferViewer.class.getPackage().getName()); /** * Style constant for displaying the status text field. */ public static final int STATUS_TEXT_FIELD = 1 << 1; /** * Style constant for displaying the 'addAll' button. */ public static final int ADD_ALL_BUTTON = 1 << 2; /** * Style constant for displaying the 'addSelected' button. */ public static final int ADD_SELECTED_BUTTON = 1 << 3; /** * Style constant for displaying the 'removeSelected' button. */ public static final int REMOVE_SELECTED_BUTTON = 1 << 4; /** * Style constant for displaying the 'removeAll' button. */ public static final int REMOVE_ALL_BUTTON = 1 << 5; /** * Style constant for having only one selection available in both viewers.
* Hence, select an element in the left viewer can deselect previous selection is the right viewer. */ public static final int SINGLE_SELECTION_VIEWER = 1 << 6; /** * Style constant for displaying all default buttons. */ public static final int ALL_BUTTONS = ADD_ALL_BUTTON | ADD_SELECTED_BUTTON | REMOVE_SELECTED_BUTTON | REMOVE_ALL_BUTTON; /** * Style constant for displaying all default widgets. */ public static final int ALL_WIDGETS = STATUS_TEXT_FIELD | ALL_BUTTONS; // Style field. private int _style; // Composite that host every widgets and viewers. private Composite _composite; // The bottom status control. private Text _statusBar; // Buttons. private Composite _buttonsPanel; private Button _addAllBtn; private Button _addSelectedBtn; private Button _removeSelectedBtn; private Button _removeAllBtn; // Left structured viewer. protected StructuredViewer _leftViewer; private int _leftViewerStyleBits; // Right structured viewer. protected StructuredViewer _rightViewer; private int _rightViewerStyleBits; // Listener registered on each button. It performs the action due to the end-user click. private SelectionListener _buttonClickedListener; // The listener is registered on both viewers and listens to selection changes. private ISelectionChangedListener _viewerSelectionChangedListener; // List of selection handler used to manage buttons states, those handlers are applied independently for a new selection event coming from both viewers. private List _selectionChangedHandlersForBothViewers; // List of selection handler used to manage buttons states, those handlers are applied for a new selection event coming from the left viewer. private List _selectionChangedHandlersForLeftViewer; // List of selection handler used to manage buttons states, those handlers are applied for a new selection event coming from the right viewer. private List _selectionChangedHandlersForRightViewer; /** * Constructs the abstract implementation of the transfer viewers. * @param parent_p The parent composite. * @param style_p The style constant is used to determine which widgets are displayed.
* {@link #ADD_ALL_BUTTON}, {@link #ADD_SELECTED_BUTTON}, {@link #REMOVE_SELECTED_BUTTON}, {@link #REMOVE_ALL_BUTTON}, {@link #ALL_WIDGETS}, * {@link #ALL_BUTTONS}.
* If {@link SWT#NONE} is used, style is automatically set to {@link #ALL_WIDGETS}. * @param leftViewerStyleBits_p style bits constant used for the left viewer. * @param rightViewerStyleBits_p style bits constant used for the right viewer. */ protected AbstractTransferViewer(Composite parent_p, int style_p, int leftViewerStyleBits_p, int rightViewerStyleBits_p) { // Store the style of this viewer. if (SWT.NONE == style_p) { _style = ALL_WIDGETS; } else { _style = style_p; } // Initialize the selection changed handlers. _selectionChangedHandlersForBothViewers = new ArrayList(0); _selectionChangedHandlersForLeftViewer = new ArrayList(0); _selectionChangedHandlersForRightViewer = new ArrayList(0); // Store the left viewer style. _leftViewerStyleBits = leftViewerStyleBits_p; // Store the right viewer style. _rightViewerStyleBits = rightViewerStyleBits_p; // Finally, create the viewer. createViewer(parent_p); } // Create the contained viewers. private void createViewer(Composite parent_p) { createInternalComposite(parent_p); // Initialization of the common listeners. initializeListeners(); // Create the left viewer. createLeftViewer(_composite); // The middle buttons area. createButtonArea(_composite); // Create the right viewer. createRightViewer(_composite); // Create the status text field. createStatusTextField(_composite); } // Create the composite that hosts all widgets and viewers. private void createInternalComposite(Composite parent_p) { _composite = new Composite(parent_p, SWT.NONE); // Install a layout manager, all widgets are displayed on 3 columns. _composite.setLayout(new GridLayout(3, false)); // Set its layout. GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); _composite.setLayoutData(gridData); } // Create the left viewer. private void createLeftViewer(Composite parent_p) { // If the left viewer is not already set, delegate its creation. if (null == _leftViewer) { // Create the left viewer from delegated method. _leftViewer = doLeftViewer(parent_p); } // Layout it. layoutViewer(_leftViewer, Messages.getString("AbstractTransferViewer.list.available.tooltip")); //$NON-NLS-1$ } // Create the right viewer. private void createRightViewer(Composite parent_p) { // If the right viewer is not already set, delegate its creation. if (null == _rightViewer) { // Create the right viewer from delegated method. _rightViewer = doRightViewer(parent_p); } layoutViewer(_rightViewer, Messages.getString("AbstractTransferViewer.list.selected.tooltip")); //$NON-NLS-1$ } /** * Create the button area. * @param parent_p The parent composite. */ protected void createButtonArea(Composite parent_p) { // The panel. _buttonsPanel = new Composite(parent_p, SWT.NONE); GridData gdData = new GridData(); gdData.widthHint = UI.convertHorizontalDLUsToPixels(_buttonsPanel, IDialogConstants.BUTTON_WIDTH); gdData.verticalAlignment = GridData.CENTER; gdData.grabExcessVerticalSpace = true; _buttonsPanel.setLayoutData(gdData); // Sets the panel layout. GridLayout buttonsLayout = new GridLayout(1, true); _buttonsPanel.setLayout(buttonsLayout); // Adds buttons according to the style. if ((ADD_ALL_BUTTON & _style) != 0) { _addAllBtn = createButton(_buttonsPanel, ">>", Messages.getString("AbstractTransferViewer.addallelements.tooltip")); //$NON-NLS-1$ //$NON-NLS-2$ } if ((ADD_SELECTED_BUTTON & _style) != 0) { _addSelectedBtn = createButton(_buttonsPanel, ">", Messages.getString("AbstractTransferViewer.addselectedelements.tooltip")); //$NON-NLS-1$ //$NON-NLS-2$ } if ((REMOVE_SELECTED_BUTTON & _style) != 0) { _removeSelectedBtn = createButton(_buttonsPanel, "<", Messages.getString("AbstractTransferViewer.removeselectedelements.tooltip")); //$NON-NLS-1$ //$NON-NLS-2$ } if ((REMOVE_ALL_BUTTON & _style) != 0) { _removeAllBtn = createButton(_buttonsPanel, "<<", Messages.getString("AbstractTransferViewer.removeallelements.tooltip")); //$NON-NLS-1$ //$NON-NLS-2$ } } // Create the status text field according to the style. private void createStatusTextField(Composite parent_p) { // Adds the status text field, if the style constant is set. if ((STATUS_TEXT_FIELD & _style) != 0) { _statusBar = new Text(parent_p, SWT.READ_ONLY | SWT.BORDER); _statusBar.setEditable(false); GridData gdData = new GridData(); gdData.horizontalAlignment = SWT.FILL; gdData.grabExcessHorizontalSpace = true; gdData.horizontalSpan = 3; _statusBar.setLayoutData(gdData); } } // Initialize the different listeners used within this viewer component. private void initializeListeners() { // Called when the end-user clicks on a button. _buttonClickedListener = new SelectionAdapter() { /** * @see SelectionAdapter#widgetSelected(SelectionEvent) */ @SuppressWarnings("synthetic-access") @Override public void widgetSelected(SelectionEvent event_p) { Widget button = event_p.widget; handleButtonClicked(button); } }; // Called when the selection changed in both left and right viewers. _viewerSelectionChangedListener = new ISelectionChangedListener() { /** * @see ISelectionChangedListener#selectionChanged(SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event_p) { // Handle the viewers selection mode. handleViewersSelectionMode(event_p); // Handle the selection itself. ISelection selection = event_p.getSelection(); if (!selection.isEmpty()) { // Update the buttons state according to the selection. updateButtons(selection, event_p.getSelectionProvider()); // Gets the last element of the current selection. IStructuredSelection structSelection = (IStructuredSelection) selection; Object lastSelected = structSelection.toList().get(structSelection.size() - 1); // Updates the status line. ContentViewer source = (ContentViewer) event_p.getSource(); ILabelProvider labelProvider = (ILabelProvider) source.getLabelProvider(); updateStatusLine(labelProvider.getText(lastSelected)); } } }; // Called when the internal composite is layout. _composite.addControlListener(new ControlAdapter() { /** * @see org.eclipse.swt.events.ControlAdapter#controlResized(org.eclipse.swt.events.ControlEvent) */ @Override public void controlResized(ControlEvent event_p) { Control leftControl = _leftViewer.getControl(); Point leftViewerSize = leftControl.computeSize(SWT.DEFAULT, SWT.DEFAULT); Control rightControl = _rightViewer.getControl(); Point rightViewerSize = rightControl.computeSize(SWT.DEFAULT, SWT.DEFAULT); int width = Math.max(leftViewerSize.x, rightViewerSize.x); GridData gd = (GridData) leftControl.getLayoutData(); gd.widthHint = width; gd = (GridData) rightControl.getLayoutData(); gd.widthHint = width; } }); } // Layouts the specified viewer. private void layoutViewer(StructuredViewer viewer_p, String tooltip_p) { // Precondition. if (null == viewer_p) { return; } // Improve performances. viewer_p.setUseHashlookup(true); // Updates viewer control. Control control = viewer_p.getControl(); control.setToolTipText(tooltip_p); viewer_p.addSelectionChangedListener(_viewerSelectionChangedListener); // Sets the viewer layout data. GridData gdData = new GridData(); gdData.horizontalAlignment = SWT.FILL; gdData.verticalAlignment = SWT.FILL; gdData.grabExcessHorizontalSpace = true; gdData.grabExcessVerticalSpace = true; control.setLayoutData(gdData); } // Creates and layout a single button. private Button createButton(Composite parent_p, String text_p, String tooltip_p) { Button button = new Button(parent_p, SWT.CENTER); GridData gdData = new GridData(); gdData.horizontalAlignment = SWT.FILL; gdData.grabExcessHorizontalSpace = true; button.setLayoutData(gdData); button.setText(text_p); button.setToolTipText(tooltip_p); button.addSelectionListener(_buttonClickedListener); return button; } // Handle button click. It performs changes between viewers according to the selected button given as argument. // This method is not intended to be overridden. // To manage the buttons differently, please override doHandle'ButtonName' methods (e.g doHanldeAddAllButton). private void handleButtonClicked(Widget button_p) { boolean somethingWasDone = false; if (button_p == _addAllBtn) { somethingWasDone = doHandleAddAllButton(); } else if (button_p == _addSelectedBtn) { somethingWasDone = doHandleAddSelectedButton(); } else if (button_p == _removeSelectedBtn) { somethingWasDone = doHandleRemoveSelectedButton(); } else if (button_p == _removeAllBtn) { somethingWasDone = doHandleRemoveAllButton(); } else { _logger.warn("Unsupported source button :" + button_p); //$NON-NLS-1$ } // Layout the the composite because objects are transfered from a viewer to the other one. if (somethingWasDone) { doLayout(); } } /** * Layouts the transfer viewer control. */ protected void doLayout() { _composite.layout(); } /** * Handle the "Add all" button click. * @return True if a change occurs else false. */ protected boolean doHandleAddAllButton() { boolean changed = false; Object input = _leftViewer.getInput(); if (null != input) { changed = true; _leftViewer.setInput(null); _rightViewer.setInput(input); } return changed; } /** * Handle the "Add selected" button click. * @return True if a change occurs else false. */ protected boolean doHandleAddSelectedButton() { boolean changed = false; ISelection leftSelection = _leftViewer.getSelection(); if (!leftSelection.isEmpty()) { changed = true; IStructuredSelection structuredSelection = (IStructuredSelection) leftSelection; Object[] elements = structuredSelection.toArray(); _leftViewer.getContentProvider().inputChanged(_leftViewer, elements, null); _rightViewer.getContentProvider().inputChanged(_rightViewer, null, elements); } return changed; } /** * Handle the "Remove selected" button click. * @return True if a change occurs else false. */ protected boolean doHandleRemoveSelectedButton() { boolean changed = false; ISelection rightSelection = _rightViewer.getSelection(); if (!rightSelection.isEmpty()) { changed = true; IStructuredSelection structuredSelection = (IStructuredSelection) rightSelection; Object[] elements = structuredSelection.toArray(); _leftViewer.getContentProvider().inputChanged(_leftViewer, null, elements); _rightViewer.getContentProvider().inputChanged(_rightViewer, elements, null); } return changed; } /** * Handle the "Remove all" button click. * @return True if a change occurs else false. */ protected boolean doHandleRemoveAllButton() { boolean changed = false; Object input = _rightViewer.getInput(); if (null != input) { changed = true; _rightViewer.setInput(null); _leftViewer.setInput(input); } return changed; } /** * Update the status text field. * @param text_p The text field. */ protected void updateStatusLine(String text_p) { if (null != _statusBar) { _statusBar.setText(text_p); } } /** * Update buttons through provided selection changed handlers. * @param selection_p The selection. * @param selectionProvider_p The selection provider. */ protected void updateButtons(ISelection selection_p, ISelectionProvider selectionProvider_p) { List handlersForSelectionProvider = null; // Get the selection changed handlers for appropriate viewer : the one that the selection is coming from. if (selectionProvider_p == _leftViewer) { handlersForSelectionProvider = _selectionChangedHandlersForLeftViewer; } else if (selectionProvider_p == _rightViewer) { handlersForSelectionProvider = _selectionChangedHandlersForRightViewer; } // Notify selection changed handlers if at least one is registered for the selection provider. notifySelectionChangedHandler(selection_p, handlersForSelectionProvider); // Notify selection changed handlers if at least one is registered for both viewers. notifySelectionChangedHandler(selection_p, _selectionChangedHandlersForBothViewers); } /** * Notify given list of selection changed handler with specified selection. * @param selection_p The selection. * @param handlers_p The selection handlers. */ private void notifySelectionChangedHandler(ISelection selection_p, List handlers_p) { if (null != handlers_p) { for (SelectionChangedHandler handler : handlers_p) { handler.handleSelection(selection_p); } } } /** * Handle viewers selection mode depending on the style provided at construction time.
* If style is set to {@link #SINGLE_SELECTION_VIEWER}, the selection is revealed in only one viewer ie the selection in the other viewer is unset. * @param event_p The selection changed event. */ protected void handleViewersSelectionMode(SelectionChangedEvent event_p) { // If single selection viewer is set, handle the new given selection only if this one is not empty. // Indeed, the call to 'disableSelectionViewer.setSelection(StructuredSelection.EMPTY)' is reentrant. if (0 != (_style & SINGLE_SELECTION_VIEWER) && !event_p.getSelection().isEmpty()) { // It must be one of the two viewers : left or right. ISelectionProvider selectionProvider = event_p.getSelectionProvider(); // If the originator of the new selection is the left viewer, disable the selection in the right viewer. StructuredViewer disableSelectionViewer = null; Button buttonDrivenByOppositeViewer = null; if (selectionProvider == _leftViewer) { disableSelectionViewer = _rightViewer; // Selection is coming from the left viewer, the button linked to the opposite viewer is 'removeSelectedBtn'. buttonDrivenByOppositeViewer = _removeSelectedBtn; } // If the originator of the new selection is the left viewer, disable the selection in the right viewer. else if (selectionProvider == _rightViewer) { disableSelectionViewer = _leftViewer; // Selection is coming from the right viewer, the button linked to the opposite viewer is 'addSelectedBtn'. buttonDrivenByOppositeViewer = _addSelectedBtn; } // Disable the button driven by the opposite viewer. if (null != buttonDrivenByOppositeViewer) { buttonDrivenByOppositeViewer.setEnabled(false); } // Disable the selection on the appropriate viewer if it has a non empty selection. if (!disableSelectionViewer.getSelection().isEmpty()) { disableSelectionViewer.setSelection(StructuredSelection.EMPTY); } } } /** * Does the right viewer. * @param composite_p This composite. * @return The right viewer. */ protected abstract StructuredViewer doRightViewer(Composite composite_p); /** * Does the left viewer. * @param composite_p This composite. * @return The left composite. */ protected abstract StructuredViewer doLeftViewer(Composite composite_p); // ////////////////////// ---- Public API ---- //////////////////////// /** * Set a selection changed handler used to compute enable state of given button. * @param handler_p The selection changed handler. * @param buttonStyleConstant_p The button style. */ public void setSelectionChangedHandler(SelectionChangedHandler handler_p, int buttonStyleConstant_p) { // Register the given selection changed handler according to style constant. if ((null != _addAllBtn) && (ADD_ALL_BUTTON & buttonStyleConstant_p) != 0) { handler_p.addControl(_addAllBtn); _selectionChangedHandlersForBothViewers.add(handler_p); } if ((null != _removeAllBtn) && (REMOVE_ALL_BUTTON & buttonStyleConstant_p) != 0) { handler_p.addControl(_removeAllBtn); _selectionChangedHandlersForBothViewers.add(handler_p); } if ((null != _addSelectedBtn) && (ADD_SELECTED_BUTTON & buttonStyleConstant_p) != 0) { handler_p.addControl(_addSelectedBtn); _selectionChangedHandlersForLeftViewer.add(handler_p); } if ((null != _removeSelectedBtn) && (REMOVE_SELECTED_BUTTON & buttonStyleConstant_p) != 0) { handler_p.addControl(_removeSelectedBtn); _selectionChangedHandlersForRightViewer.add(handler_p); } } /** * Gets the left content provider. * @return The left content provider or null. */ public IContentProvider getLeftContentProvider() { IContentProvider provider = null; if (null != _leftViewer) { provider = _leftViewer.getContentProvider(); } return provider; } /** * Gets the left viewer input. * @return The left viewer input or null. */ public Object getLeftInput() { Object object = null; if (null != _leftViewer) { object = _leftViewer.getInput(); } return object; } /** * Gets the left viewer. * @return The left viewer. */ public StructuredViewer getLeftViewer() { return _leftViewer; } /** * Gets the label provider for the left viewer. * @return The label provider or null. */ public IBaseLabelProvider getLeftLabelProvider() { IBaseLabelProvider provider = null; if (null != _leftViewer) { provider = _leftViewer.getLabelProvider(); } return provider; } /** * Sets the content provider for the left viewer. * @param provider_p The content provider. */ public void setLeftContentProvider(IContentProvider provider_p) { _leftViewer.setContentProvider(provider_p); } /** * Sets the left viewer input. * @param input_p The input to set. */ public void setLeftInput(Object input_p) { _leftViewer.setInput(input_p); } /** * Sets the label provider for the left viewer. * @param provider_p The label provider. */ public void setLeftLabelProvider(ILabelProvider provider_p) { _leftViewer.setLabelProvider(provider_p); } /** * Gets the right content provider. * @return the right content provider or null. */ public IContentProvider getRightContentProvider() { IContentProvider provider = null; if (null != _rightViewer) { provider = _rightViewer.getContentProvider(); } return provider; } /** * Gets the right viewer input. * @return The right viewer input or null. */ public Object getRightInput() { Object object = null; if (null != _rightViewer) { object = _rightViewer.getInput(); } return object; } /** * Gets the right viewer. * @return the right viewer. */ public StructuredViewer getRightViewer() { return _rightViewer; } /** * Gets the label provider for the right viewer. * @return The label provider or null. */ public IBaseLabelProvider getRightLabelProvider() { IBaseLabelProvider provider = null; if (null != _rightViewer) { provider = _rightViewer.getLabelProvider(); } return provider; } /** * Sets the content provider for the right viewer. * @param provider_p The content provider */ public void setRightContentProvider(IContentProvider provider_p) { _rightViewer.setContentProvider(provider_p); } /** * Sets the right viewer input. * @param input_p The input. */ public void setRightInput(Object input_p) { _rightViewer.setInput(input_p); } /** * Sets the label provider for the right viewer. * @param provider_p The label provider. */ public void setRightLabelProvider(ILabelProvider provider_p) { _rightViewer.setLabelProvider(provider_p); } /** * @see Widget#dispose() */ public void dispose() { // Dispose the composite that hosts everything. if (null != _composite && !_composite.isDisposed()) { _composite.dispose(); _composite = null; } _buttonClickedListener = null; _addAllBtn = null; _addSelectedBtn = null; _removeSelectedBtn = null; _removeAllBtn = null; if (null != _leftViewer) { _leftViewer.removeSelectionChangedListener(_viewerSelectionChangedListener); } if (null != _rightViewer) { _rightViewer.removeSelectionChangedListener(_viewerSelectionChangedListener); } _viewerSelectionChangedListener = null; } /** * Gets the viewer control. * @return The viewer control. */ @Override public Control getControl() { return _composite; } /** * Does nothing. Use the {@link #getLeftInput()} and {@link #getRightInput()} methods instead of this one. */ @Override public Object getInput() { // Do nothing. return null; } /** * Do nothing. * @return null * @see org.eclipse.jface.viewers.Viewer#getSelection() */ @Override public ISelection getSelection() { return null; } /** * @see org.eclipse.jface.viewers.Viewer#refresh() */ @Override public void refresh() { _leftViewer.refresh(); _rightViewer.refresh(); } /** * Does nothing. Use the {@link #setLeftInput(Object)} and {@link #setRightInput(Object)} methods instead of this one. */ @Override public void setInput(Object input_p) { // Do nothing. } /** * Do nothing. * @see org.eclipse.jface.viewers.Viewer#setSelection(org.eclipse.jface.viewers.ISelection, boolean) */ @Override public void setSelection(ISelection selection_p, boolean reveal_p) { // Do nothing. } /** * Returns the style bit constant used for the left viewer. * @return The left viewer style bits. */ protected int getLeftViewerStyleBits() { return _leftViewerStyleBits; } /** * Returns the style bit constant used for the right viewer. * @return The right viewer style bits. */ protected int getRightViewerStyleBits() { return _rightViewerStyleBits; } /** * Sets the specified buttons enabled or not. The style supports OR'ed defined button style constants. * @param buttonStyle_p The button style. * @param enable_p True to enable button(s) else false. * @see #ADD_ALL_BUTTON * @see #ADD_SELECTED_BUTTON * @see #REMOVE_SELECTED_BUTTON * @see #REMOVE_ALL_BUTTON */ public void setButtonEnabled(int buttonStyle_p, boolean enable_p) { if (0 != (buttonStyle_p & ADD_ALL_BUTTON)) { _addAllBtn.setEnabled(enable_p); } if (0 != (buttonStyle_p & ADD_SELECTED_BUTTON)) { _addSelectedBtn.setEnabled(enable_p); } if (0 != (buttonStyle_p & REMOVE_SELECTED_BUTTON)) { _removeSelectedBtn.setEnabled(enable_p); } if (0 != (buttonStyle_p & REMOVE_ALL_BUTTON)) { _removeAllBtn.setEnabled(enable_p); } } /** * Checks is the specified button is enabled or not. The style does not support OR'ed defined button style constants. * @param buttonStyle_p The button style. * @return True if the specified button is enabled else false. * @see #ADD_ALL_BUTTON * @see #ADD_SELECTED_BUTTON * @see #REMOVE_SELECTED_BUTTON * @see #REMOVE_ALL_BUTTON */ public boolean isButtonEnabled(int buttonStyle_p) { boolean enabled = true; switch (buttonStyle_p) { case ADD_ALL_BUTTON: { enabled = _addAllBtn.isEnabled(); break; } case ADD_SELECTED_BUTTON: { enabled = _addSelectedBtn.isEnabled(); break; } case REMOVE_SELECTED_BUTTON: { enabled = _removeSelectedBtn.isEnabled(); break; } case REMOVE_ALL_BUTTON: { enabled = _removeAllBtn.isEnabled(); break; } } return enabled; } /** * Return the buttons container. * @return a not null {@link Composite}. */ public Composite getButtonsContainer() { return _buttonsPanel; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/DefaultListContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4046 Text-content-md5: c93b0db828346d010ca916728f492e28 Text-content-sha1: c0b0c97d685c7f8be26d940166137447d38e02fb Content-length: 4091 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.viewers; import java.util.Collection; import org.eclipse.jface.viewers.AbstractListViewer; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.Viewer; /** * The default list content provider. * @author D. GATIBELZA */ public class DefaultListContentProvider extends AbstractStructuredContentProvider { /** * Constructs the default list content provider. */ public DefaultListContentProvider() { // Do nothing. } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementAdded(org.eclipse.jface.viewers.Viewer, java.lang.Object) */ @SuppressWarnings("unchecked") @Override protected void handleElementAdded(Viewer viewer_p, Object addedElements_p) { AbstractListViewer abstractListViewer = (AbstractListViewer) viewer_p; if (addedElements_p instanceof Object[]) { Object[] array = (Object[]) addedElements_p; abstractListViewer.add(array); } else if (addedElements_p instanceof Collection) { Collection collection = (Collection) addedElements_p; Object[] array = collection.toArray(); abstractListViewer.add(array); } else { abstractListViewer.add(addedElements_p); } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementRemoved(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @SuppressWarnings("unchecked") @Override protected void handleElementRemoved(Viewer viewer_p, Object removedElements_p) { AbstractListViewer abstractListViewer = (AbstractListViewer) viewer_p; if (removedElements_p instanceof Object[]) { Object[] array = (Object[]) removedElements_p; abstractListViewer.remove(array); } else if (removedElements_p instanceof Collection) { Collection collection = (Collection) removedElements_p; Object[] array = collection.toArray(); abstractListViewer.remove(array); } else { abstractListViewer.remove(removedElements_p); } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementUpdated(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ @Override protected void handleElementUpdated(Viewer viewer_p, Object oldInput_p, Object newInput_p) { ((AbstractListViewer) viewer_p).refresh(oldInput_p); } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleViewer(org.eclipse.jface.viewers.Viewer) */ @Override protected void handleViewer(Viewer viewer_p) { if (!(viewer_p instanceof AbstractListViewer)) { throw new IllegalArgumentException("Viewer must be an instance of AbstractListViewer"); //$NON-NLS-1$ } } /** * @see IStructuredContentProvider#getElements(Object) */ @SuppressWarnings("unchecked") public Object[] getElements(Object inputElement_p) { if (inputElement_p instanceof Object[]) { return (Object[]) inputElement_p; } if (inputElement_p instanceof Collection) { return ((Collection) inputElement_p).toArray(); } return new Object[0]; } /** * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/DefaultTableContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3878 Text-content-md5: 26284aeea525187357fbb804afc20ff3 Text-content-sha1: 8e3ff366baee8f6aa14a3101023dac05b24cb9ed Content-length: 3923 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.viewers; import java.util.Collection; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; /** * The default table content provider. * @author D. GATIBELZA */ public class DefaultTableContentProvider extends AbstractStructuredContentProvider { /** * Constructs the default table content provider. */ public DefaultTableContentProvider() { // Do nothing. } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementAdded(org.eclipse.jface.viewers.Viewer, java.lang.Object) */ @SuppressWarnings("unchecked") @Override protected void handleElementAdded(Viewer viewer_p, Object addedElements_p) { TableViewer tableViewer = (TableViewer) viewer_p; if (addedElements_p instanceof Object[]) { Object[] array = (Object[]) addedElements_p; tableViewer.add(array); } else if (addedElements_p instanceof Collection) { Collection collection = (Collection) addedElements_p; tableViewer.add(collection.toArray()); } else { tableViewer.add(addedElements_p); } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementRemoved(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @SuppressWarnings("unchecked") @Override protected void handleElementRemoved(Viewer viewer_p, Object removedElements_p) { TableViewer tableViewer = (TableViewer) viewer_p; if (removedElements_p instanceof Object[]) { Object[] array = (Object[]) removedElements_p; tableViewer.remove(array); } else if (removedElements_p instanceof Collection) { Collection collection = (Collection) removedElements_p; tableViewer.remove(collection.toArray()); } else { tableViewer.remove(removedElements_p); } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementUpdated(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ @Override protected void handleElementUpdated(Viewer viewer_p, Object oldInput_p, Object newInput_p) { ((TableViewer) viewer_p).refresh(newInput_p); } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleViewer(org.eclipse.jface.viewers.Viewer) */ @Override protected void handleViewer(Viewer viewer_p) { if (!(viewer_p instanceof TableViewer)) { throw new IllegalArgumentException("Viewer must be an instance of TableViewer"); //$NON-NLS-1$ } } /** * @see IStructuredContentProvider#getElements(Object) */ @SuppressWarnings("unchecked") public Object[] getElements(Object inputElement_p) { if (inputElement_p instanceof Object[]) { return (Object[]) inputElement_p; } if (inputElement_p instanceof Collection) { return ((Collection) inputElement_p).toArray(); } return new Object[0]; } /** * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1528 Text-content-md5: 8c81f4221b98abd5126d7186a7cbccb6 Text-content-sha1: b9e2226ddd2406308043acdf5565dc4717a22e6b Content-length: 1573 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.viewers; import java.util.MissingResourceException; import java.util.ResourceBundle; /** * The message handler for the viewers package. * @author D. GATIBELZA */ public class Messages { // The bundle name. private static final String BUNDLE_NAME = "org.eclipse.egf.common.ui.toolkit.viewers.messages"; //$NON-NLS-1$ // The resource bundle. private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); // Constructs the message handler. private Messages() { // Do nothing. } /** * Gets the string corresponding from the specified key. * @param key_p The key. * @return The string corresponding to the given key.. */ public static String getString(String key_p) { try { return RESOURCE_BUNDLE.getString(key_p); } catch (MissingResourceException e) { return '!' + key_p + '!'; } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/TransferListViewer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3272 Text-content-md5: 6df961d5d8aa0e998ab40b5eb7774160 Text-content-sha1: ff6cced4d78cb685a2a75b0ed1dc9e4990627349 Content-length: 3317 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.viewers; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; /** * Implementation of an {@link AbstractTransferViewer} where both left and right viewers are {@link ListViewer}.
* Implementors must have to provide {@link IContentProvider} and {@link ILabelProvider} according to {@link ListViewer}. * @author D. GATIBELZA */ public class TransferListViewer extends AbstractTransferViewer { /** * Default list viewer style bits constant. */ private final static int DEFAULT_LIST_VIEWER_STYLE = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER; /** * Constructs the transfer list viewer. ListViewers used as left and right viewers are instantiated with default {@link ListViewer} style bits. * @param parent_p parent composite of this viewer. * @param style_p style of this viewer. */ public TransferListViewer(Composite parent_p, int style_p) { this(parent_p, style_p, DEFAULT_LIST_VIEWER_STYLE, DEFAULT_LIST_VIEWER_STYLE); } /** * Constructs the transfer list viewer. * @param parent_p parent composite of this viewer. * @param style_p style of this viewer. * @param leftViewerStyleBits_p style bits used for the left list viewer. * @param rightViewerStyleBits_p style bits used for the right list viewer. */ public TransferListViewer(Composite parent_p, int style_p, int leftViewerStyleBits_p, int rightViewerStyleBits_p) { super(parent_p, style_p, leftViewerStyleBits_p, rightViewerStyleBits_p); DefaultListContentProvider provider = new DefaultListContentProvider(); setLeftContentProvider(provider); setRightContentProvider(provider); LabelProvider labelProvider = new LabelProvider(); setLeftLabelProvider(labelProvider); setRightLabelProvider(labelProvider); } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractTransferViewer#doLeftViewer(org.eclipse.swt.widgets.Composite) */ @Override protected StructuredViewer doLeftViewer(Composite parent_p) { return new ListViewer(parent_p, getLeftViewerStyleBits()); } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractTransferViewer#doRightViewer(org.eclipse.swt.widgets.Composite) */ @Override protected StructuredViewer doRightViewer(Composite parent_p) { return new ListViewer(parent_p, getRightViewerStyleBits()); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/TransferTreeViewer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2825 Text-content-md5: 45bc98c767db9406850e2271e2cbcc5c Text-content-sha1: e8aa0cd36cd069f053593b805b473f974010525f Content-length: 2870 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.viewers; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; /** * Implementation of an {@link AbstractTransferViewer} where both left and right viewers are {@link TreeViewer}.
* Implementors must have to provide {@link ITreeContentProvider} and {@link ILabelProvider} according to {@link TreeViewer}. * @author D. GATIBELZA */ public class TransferTreeViewer extends AbstractTransferViewer { /** * Default TreeViewer style bits constant. */ private final static int DEFAULT_TREE_VIEWER_STYLE = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER; /** * Constructs the transfer tree viewer. TreeViewers used as left and right viewers are instantiated with default {@link TreeViewer} style bits. * @param parent_p parent composite of this viewer. * @param style_p style of this viewer. */ public TransferTreeViewer(Composite parent_p, int style_p) { this(parent_p, style_p, DEFAULT_TREE_VIEWER_STYLE, DEFAULT_TREE_VIEWER_STYLE); } /** * Constructs the transfer tree viewer. * @param parent_p parent composite of this viewer. * @param style_p style of this viewer. * @param leftViewerStyleBits_p style bits used for the left tree viewer. * @param rightViewerStyleBits_p style bits used for the right tree viewer. */ public TransferTreeViewer(Composite parent_p, int style_p, int leftViewerStyleBits_p, int rightViewerStyleBits_p) { super(parent_p, style_p, leftViewerStyleBits_p, rightViewerStyleBits_p); } /** * @see AbstractTransferViewer#doLeftViewer(AbstractTransferViewer) */ @Override protected StructuredViewer doLeftViewer(Composite parent_p) { return new TreeViewer(parent_p, getLeftViewerStyleBits()); } /** * @see AbstractTransferViewer#doRightViewer(AbstractTransferViewer) */ @Override protected StructuredViewer doRightViewer(Composite parent_p) { return new TreeViewer(parent_p, getRightViewerStyleBits()); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 990 Text-content-md5: 0d6efc77cd2a8f5c700824c6cc71624a Text-content-sha1: 723f2f6f78f63b78572b099c25d03158de95b764 Content-length: 1035 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### AbstractTransferViewer.addallelements.tooltip=Add all elements. AbstractTransferViewer.list.available.tooltip=Available elements. AbstractTransferViewer.list.selected.tooltip=Selected elements AbstractTransferViewer.addselectedelements.tooltip=Add selected element(s). AbstractTransferViewer.removeselectedelements.tooltip=Remove selected element(s). AbstractTransferViewer.removeallelements.tooltip=Remove all elements. Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/widgets Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/widgets/handler Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2302 Text-content-md5: 8e338e7b79823eea15e724ef9a102845 Text-content-sha1: 458ed72367af3253e09e5ca70d5f9211a9c5c137 Content-length: 2347 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.toolkit.widgets.handler; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Control; /** * A selection changed handler set the enable state to the managed control list according to a selection.
* Client must override {@link #doHandleSelection(ISelection)}, to provide the rule which really computes the enable state depending on the given selection. * @author fournier */ public abstract class SelectionChangedHandler { /** * Control that the selection changed handler computes the state enable value for. */ private List _controls; /** * Add a control in the list of managed controls. * @param control_p The control. */ public void addControl(Control control_p) { // Lazy pattern creation. if (null == _controls) { _controls = new ArrayList(1); } _controls.add(control_p); } /** * Handle selection and recompute the enable state of all managed controls. * @param selection_p The selection. */ public void handleSelection(ISelection selection_p) { // Delegate the enable computation to class that overrides this class. boolean enabled = doHandleSelection(selection_p); // Set the enable state to the control. for (Control control : _controls) { control.setEnabled(enabled); } } /** * Handle selection to enable or disable the managed controls. * @param selection_p The selection. * @return True means enable, false means disable. */ protected abstract boolean doHandleSelection(ISelection selection_p); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/AbstractTooltipLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5470 Text-content-md5: 54a3fb63241b6ccbd1e8659bcaffd359 Text-content-sha1: 9c9c96ff14ea901014d2be3abe62ab9ad17e2199 Content-length: 5515 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import org.eclipse.jface.viewers.CellLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; /** * Base class to implement label providers with tooltip support to use in JFace viewers. * @author Guillaume Brocard */ public abstract class AbstractTooltipLabelProvider extends CellLabelProvider implements ILabelProvider { /** * The time in milliseconds the tool tip is shown for. */ protected static final int TOOLTIP_TIME_DISPLAYED = 7000; /** * The time in milliseconds until the tool tip is displayed. */ protected static final int DISPLAY_DELAY_TIME = 2000; /** * Time in milliseconds the tool tip is shown for. */ private int _tooltipTimeDisplayed; /** * Rime in milliseconds until the tool tip is displayed. */ private int _tooltipDisplayDelayTime; /** * Label provider used to get text and image for given object. */ private ILabelProvider _labelProvider; /** * Constructor. * @param labelProvider_p label provider that provides the text and the image for given element. * @param tooltipTimeDisplayed_p time in milliseconds the tool tip is shown for. * @param tooltipDisplayDelayTime_p time in milliseconds until the tool tip is displayed. */ protected AbstractTooltipLabelProvider(ILabelProvider labelProvider_p, int tooltipTimeDisplayed_p, int tooltipDisplayDelayTime_p) { _labelProvider = labelProvider_p; _tooltipTimeDisplayed = tooltipTimeDisplayed_p; _tooltipDisplayDelayTime = tooltipDisplayDelayTime_p; } /** * Constructor. * @param labelProvider_p label provider that provides the text and the image for given element. * @param tooltipTimeDisplayed_p time in milliseconds the tool tip is shown for. * @param tooltipDisplayDelayTime_p time in milliseconds until the tool tip is displayed. */ protected AbstractTooltipLabelProvider(ILabelProvider labelProvider_p) { this(labelProvider_p, TOOLTIP_TIME_DISPLAYED, DISPLAY_DELAY_TIME); } /** * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipText(java.lang.Object) */ @Override public abstract String getToolTipText(Object element_p); /** * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipShift(java.lang.Object) */ @Override public Point getToolTipShift(Object object_p) { return new Point(5, 5); } /** * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipDisplayDelayTime(java.lang.Object) */ @Override public int getToolTipDisplayDelayTime(Object object_p) { return _tooltipDisplayDelayTime; } /** * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipTimeDisplayed(java.lang.Object) */ @Override public int getToolTipTimeDisplayed(Object object_p) { return _tooltipTimeDisplayed; } /** * @see org.eclipse.jface.viewers.CellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell) */ @Override public void update(ViewerCell viewer_p) { Object element = viewer_p.getElement(); viewer_p.setText(getText(element)); viewer_p.setImage(getImage(element)); } /** * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) */ public Image getImage(Object element_p) { return _labelProvider.getImage(element_p); } /** * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ public String getText(Object element_p) { return _labelProvider.getText(element_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener) */ @Override public void addListener(ILabelProviderListener listener_p) { super.addListener(listener_p); _labelProvider.addListener(listener_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ @Override public void dispose() { super.dispose(); _labelProvider.dispose(); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String) */ @Override public boolean isLabelProperty(Object element_p, String property_p) { return super.isLabelProperty(element_p, property_p) && _labelProvider.isLabelProperty(element_p, property_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener) */ @Override public void removeListener(ILabelProviderListener listener_p) { super.removeListener(listener_p); _labelProvider.removeListener(listener_p); } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/AbstractViewerWithButtons.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11629 Text-content-md5: 2e9b82ca3208f1dbc300ab0b0224785e Text-content-sha1: 1518c0a63cdacf06ec712257f09a4658629c4418 Content-length: 11674 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; /** * Base class to implement a viewer with buttons located on the right side(e.g to change list elements order). * @author Guillaume Brocard */ public abstract class AbstractViewerWithButtons { /** * Buttons located on the right side of this viewer. */ private Button[] _buttons; /** * Button data related to created buttons on the right side of this viewer. */ protected ButtonData[] _buttonData; /** * Composite that hosts the viewer and the composite that contains the buttons. */ private Composite _composite; /** * The decorated viewer. */ protected StructuredViewer _decoratedViewer; /** * Listener called when a button is clicked. */ private IButtonClickedListener _buttonClickedListener; /** * Selection listener used to update buttons according selection changes. */ private ISelectionChangedListener _viewerSelectionChangedListener; /** * Default constructor.
* Need to call {@link #init(Composite)} explicitly in implementation. */ protected AbstractViewerWithButtons() { // Does nothing. } /** * Constructor with no information on buttons.
* Calls {@link #getButtonData()} to resolve buttons information. * @param parent_p */ protected AbstractViewerWithButtons(Composite parent_p) { init(parent_p); } /** * Initialize viewer content. * @param parent_p */ protected void init(Composite parent_p) { // Create the internal composite. _composite = createInternalComposite(parent_p); // Create the decorated viewer. _decoratedViewer = createViewer(_composite); // Called when the selection changes in the viewer. _viewerSelectionChangedListener = new ISelectionChangedListener() { /** * @see ISelectionChangedListener#selectionChanged(SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event_p) { // Handle the selection itself. ISelection selection = event_p.getSelection(); // Precondition: the selection must not be empty. if (selection.isEmpty()) { return; } updateButtons(selection); } }; // Add the selection listener on the created viewer. _decoratedViewer.addSelectionChangedListener(_viewerSelectionChangedListener); // Get button data. createButtons(_composite, createButtonData()); } /** * Is viewer editable ? * If not, buttons are disabled. * @return */ protected boolean isEditable() { return true; } /** * Update the buttons enablement property. * @param selection_p */ protected void updateButtons(ISelection selection_p) { // Loop over each one to handle the new selection. for (ButtonData buttonData : _buttonData) { SelectionChangedHandler selectionChangedHandler = buttonData.getSelectionChangedHandler(); if (null != selectionChangedHandler) { selectionChangedHandler.handleSelection(selection_p); } } } /** * Create button data, that is an array of {@link ButtonData}, descriptors for buttons to create. * @return must not return null or an empty array. */ protected abstract ButtonData[] createButtonData(); /** * Create a viewer which is decorated with buttons on the right side. * @param composite_p */ protected abstract StructuredViewer createViewer(Composite composite_p); /** * Create the composite that hosts all widgets and viewer. * @param parent_p */ private Composite createInternalComposite(Composite parent_p) { Composite composite = new Composite(parent_p, SWT.NONE); // Install a layout manager, all widgets are displayed on 2 columns. composite.setLayout(new GridLayout(2, false)); // Set its layout. GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); composite.setLayoutData(gridData); return composite; } /** * Create buttons if provided. * @param parent_p * @param buttonData_p */ private void createButtons(Composite parent_p, ButtonData[] buttonData_p) { // Preconditions. if ((null == buttonData_p) || (buttonData_p.length == 0)) { return; } // Create a button container. Composite buttonContainer = new Composite(parent_p, SWT.NONE); // Set button composite activation. buttonContainer.setEnabled(isEditable()); // create its layout. GridLayout layout = new GridLayout(1, false); layout.marginWidth = layout.marginHeight = 0; // Set the created layout. buttonContainer.setLayout(layout); // Create and set its layout data. GridData gridData = new GridData(SWT.RIGHT, SWT.CENTER, false, true); buttonContainer.setLayoutData(gridData); // Create the buttons. _buttonData = buttonData_p; _buttons = new Button[buttonData_p.length]; SelectionAdapter listener = new SelectionAdapter() { /** * @see org.eclipse.swt.events.SelectionAdapter#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent) */ @Override public void widgetDefaultSelected(SelectionEvent e_p) { buttonSelected(e_p); } /** * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) */ @Override public void widgetSelected(SelectionEvent e_p) { buttonSelected(e_p); } private void buttonSelected(SelectionEvent e) { AbstractViewerWithButtons.this.buttonSelected((Button) e.widget, e.widget.getData()); } }; // Loop over given label for (int i = 0; i < buttonData_p.length; i++) { ButtonData buttonData = buttonData_p[i]; String label = buttonData.getLabel(); int style = buttonData.getStyle(); if (null != label) { Button button = createButton(buttonContainer, label, style); button.addSelectionListener(listener); // Set user data. button.setData(buttonData.getData()); // Add the created button to the selection changed handler if any. SelectionChangedHandler handler = buttonData.getSelectionChangedHandler(); if (null != handler) { handler.addControl(button); } _buttons[i] = button; } else { createEmptySpace(buttonContainer, 1); } } } /** * Called when a button is selected. * @param selectedButton_p * @param data_p user data */ protected void buttonSelected(Button selectedButton_p, Object data_p) { // Notify the listener if any. if (null != _buttonClickedListener) { _buttonClickedListener.buttonClicked(selectedButton_p, data_p); } // Update buttons state. ISelection selection = _decoratedViewer.getSelection(); updateButtons(selection); } /** * Create a button. * @param parent_p * @param label_p * @param style_p * @return a not null {@link Button} */ protected Button createButton(Composite parent_p, String label_p, int style_p) { Button button = new Button(parent_p, SWT.PUSH | style_p); // at least, PUSH is set. button.setText(label_p); GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false); button.setLayoutData(gridData); return button; } /** * Create an empty space. * @param parent_p * @param span_p * @return */ protected Label createEmptySpace(Composite parent_p, int span_p) { Label label = new Label(parent_p, SWT.NULL); GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, true);// new GridData(GridData.VERTICAL_ALIGN_BEGINNING); gridData.horizontalSpan = span_p; gridData.widthHint = 0; gridData.heightHint = 0; label.setLayoutData(gridData); return label; } /** * Return the decorated viewer. * @return the decoratedViewer */ public StructuredViewer getDecoratedViewer() { return _decoratedViewer; } /** * Set the listener that is called when a button is clicked. * @param buttonClickedListener_p. */ public void setButtonClickedListener(IButtonClickedListener buttonClickedListener_p) { _buttonClickedListener = buttonClickedListener_p; } /** * Button data.
* Facade to a button creation for this viewer.
* Label and style are mandatory to create a new widget.
* The given user data is set to the created button widget, if not null. * @author Guillaume Brocard */ public class ButtonData { /** * The button label. */ private String _label; /** * The button style. */ private int _style; /** * The user data, set as data for corresponding button. */ private Object _data; /** * Handler called when the selection changes inside the viewer hosted by the {@link AbstractViewerWithButtons}. */ private SelectionChangedHandler _selectionChangedHandler; /** * Button data constructor. * @param label_p The label of the future button. * @param style_p The style of the future button. * @param data_p The user data of the future button, can be null. * @param selectionChangedHandler_p The selection changed handler called when selection changes in the {@link AbstractViewerWithButtons}. */ public ButtonData(String label_p, int style_p, Object data_p, SelectionChangedHandler selectionChangedHandler_p) { _label = label_p; _style = style_p; _data = data_p; _selectionChangedHandler = selectionChangedHandler_p; } /** * Get button label. * @return */ protected String getLabel() { return _label; } /** * Get button style. * @return */ protected int getStyle() { return _style; } /** * Get user data. * @return */ protected Object getData() { return _data; } /** * Get the selection changed handler. * @return */ protected SelectionChangedHandler getSelectionChangedHandler() { return _selectionChangedHandler; } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/DefaultTreeNode.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1896 Text-content-md5: ce84105df9d8ff8b43b81ad4a3b81d03 Text-content-sha1: acbc9ec4b024eae88a48fca58120f1047a38a079 Content-length: 1941 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; /** * A default abstract implementation of the tree node.
* Parent node is as specified at construction time.
* By default assumes that there is no child, thus returns null to {@link #getChildren()} implementation. * @author t007626 */ public abstract class DefaultTreeNode implements ITreeNode { /** * Parent tree node. */ private ITreeNode _parent; /** * Constructor. * @param parent_p */ public DefaultTreeNode(ITreeNode parent_p) { _parent = parent_p; } /** * @see org.eclipse.egf.common.ui.viewers.ITreeNode#getChildren() */ public ITreeNode[] getChildren() { return null; } /** * @see org.eclipse.egf.common.ui.viewers.ITreeNode#getParent() */ public ITreeNode getParent() { return _parent; } /** * @see org.eclipse.egf.common.ui.viewers.ITreeNode#hasChildren() */ public boolean hasChildren() { return true; } /** * @see org.eclipse.egf.common.ui.viewers.ITreeNode#isHandling(java.lang.Object) */ public boolean isHandling(Object element_p) { return false; } /** * @see org.eclipse.egf.common.ui.viewers.ITreeNode#comparisonPriority() */ public int comparisonPriority() { return 0; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/IButtonClickedListener.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1213 Text-content-md5: 57b992d2901956691ceca5443c42a4f2 Text-content-sha1: 3476da000968231b422630264cae8f4fd77f4275 Content-length: 1258 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import org.eclipse.swt.widgets.Button; /** * Classes which implement this interface provide methods
* that deal with the event that is generated when a button, located in AbstractViewerWithButtons viewer, is clicked. * @see AbstractViewerWithButtons * @author Guillaume Brocard */ public interface IButtonClickedListener { /** * Sent when a button in {@link AbstractViewerWithButtons} is clicked. * @param clickedButton_p the clicked button. * @param data_p the button's user data. */ public void buttonClicked(Button clickedButton_p, Object data_p); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/IContentHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1009 Text-content-md5: e2bd04e7acb8f3c04b529ca739bfee05 Text-content-sha1: 7c991f2a0481f6fd7b6976af70326a32dc458505 Content-length: 1054 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; /** * Viewer content handler.
* Allows to handle displayed elements life-cycle. * @author Guillaume Brocard */ public interface IContentHandler { /** * Create a new element. * @return */ public Object createNewElement(); /** * Remove given element from handled ones. * @param element_p */ public void removeElement(Object element_p); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/IOrderedContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1350 Text-content-md5: da1778b77631ac642465a3144f97968b Text-content-sha1: 4d8fcd566370096dc4666b63d7b098c50a074d4f Content-length: 1395 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import org.eclipse.jface.viewers.IStructuredContentProvider; /** * Classes which implement this interface provide a method
* that allows to swap content elements to be stored in a specific order. * @author Guillaume Brocard */ public interface IOrderedContentProvider extends IStructuredContentProvider { /** * Swap elements according to given element positions.
* Element at elementPosition1_p is moved to elementPosition2_p and
* Element at elementPosition2_p is moved to elementPosition1_p. * @param elementPosition1_p * @param elementPosition2_p */ public void swap(int elementPosition1_p, int elementPosition2_p); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/ITreeNode.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1513 Text-content-md5: 049f393668365df87a0dde04a6a26d50 Text-content-sha1: 8c1c4e079879a8c9d17d316189de4d1fcfe48439 Content-length: 1558 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; /** * A default tree node interface for tree viewers.
* Forces the use of tree nodes all along the tree. * @author Guillaume Brocard */ public interface ITreeNode { /** * Get children nodes. * @return null if none. */ ITreeNode[] getChildren(); /** * Get parent node. * @return null if none. */ ITreeNode getParent(); /** * Has current node any children ? * @return true if so, false otherwise. */ boolean hasChildren(); /** * Is node handling/representing given element ? * @param element_p * @return */ boolean isHandling(Object element_p); /** * An integer value that represents the priority of this kind of node.
* Should always be the same for objects of the same implementation of {@link ITreeNode}. * @return 0 stands for neutral priority. */ int comparisonPriority(); } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1323 Text-content-md5: faae67b77e9cb866dbeed71e5c566beb Text-content-sha1: 4f0bfa02a32bea2c6ddd6a1a026300cef7d8be55 Content-length: 1368 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import org.eclipse.osgi.util.NLS; /** * I18n support. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.common.ui.viewers.messages"; //$NON-NLS-1$ public static String OrderedListViewerWithAddAndRemove_AddButton_Label; public static String OrderedListViewerWithAddAndRemove_RemoveButton_Label; public static String SortedListViewer_DownButton_Title; public static String SortedListViewer_UpButton_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/OrderedListViewer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9174 Text-content-md5: 3ded940e58715ac60986d4af6bee4480 Text-content-sha1: 09beb1bb3e793f413bc22da6627334f6c90a795c Content-length: 9219 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import java.util.ArrayList; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Table; /** * A concrete viewer based on an SWT List control with 2 buttons on the right side to move up (or down) elements in the list. * @author Guillaume Brocard */ public class OrderedListViewer extends AbstractViewerWithButtons { /** * Constant that defines the 'Up' button data. */ private static final Object UP_BUTTON_DATA = new Object(); /** * Constant that defines the 'Down' button data. */ private static final Object DOWN_BUTTON_DATA = new Object(); /** * Button labels. */ private static String[] __buttonsLabels = { Messages.SortedListViewer_UpButton_Title, Messages.SortedListViewer_DownButton_Title }; /** * Button styles. */ private static int[] __buttonsStyles = { SWT.PUSH, SWT.PUSH }; /** * Default Viewer style bits constant: SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER. */ private final static int DEFAULT_LIST_VIEWER_STYLE = SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER; /** * Selection changed handler used to control the up button. */ private SelectionChangedHandler _selectionChangedHandlerForUpButton; /** * Selection changed handler used to control the down button. */ private SelectionChangedHandler _selectionChangedHandlerForDownButton; /** * Constructor. * @param parent_p */ public OrderedListViewer(Composite parent_p) { super(parent_p); // Set the button clicked listener. setButtonClickedListener(new IButtonClickedListener() { /** * @see org.eclipse.egf.common.ui.viewers.IButtonClickedListener#buttonClicked(org.eclipse.swt.widgets.Button, Object) */ @SuppressWarnings("synthetic-access") public void buttonClicked(Button clickedButton_p, Object data_p) { // Get the selected element. StructuredViewer decoratedViewer = getDecoratedViewer(); ISelection selection = decoratedViewer.getSelection(); if (UP_BUTTON_DATA.equals(data_p) || DOWN_BUTTON_DATA.equals(data_p)) { // Precondition : selection must not be empty. if (selection.isEmpty()) { return; } // Get the position of the selected element. int selectionElementIndex = getSelectionIndex(); // The 'element to swap with' position. int elementToSwapWithIndex = 0; // If button is either up or down one, go for a swap. if (UP_BUTTON_DATA.equals(data_p)) { elementToSwapWithIndex = selectionElementIndex - 1; } else if (DOWN_BUTTON_DATA.equals(data_p)) { elementToSwapWithIndex = selectionElementIndex + 1; } // Get the content provider. IContentProvider contentProvider = decoratedViewer.getContentProvider(); if (contentProvider instanceof IOrderedContentProvider) { // Swap elements. ((IOrderedContentProvider) contentProvider).swap(selectionElementIndex, elementToSwapWithIndex); } } else { delegateButtonClicked(clickedButton_p, data_p); } } }); } /** * Delegate button clicked event, if default listener implementation ain't enough.
* This implementation does nothing. Should be implemented by subclasses. * @param clickedButton_p * @param data_p */ protected void delegateButtonClicked(Button clickedButton_p, Object data_p) { // Nothing to do. } /** * Initialize selection changed handlers to either enable or disable the up and down buttons. */ private void initializeSelectionChangedHandlers() { _selectionChangedHandlerForUpButton = new SelectionChangedHandler() { /** * @see org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler#doHandleSelection(org.eclipse.jface.viewers.ISelection) */ @Override protected boolean doHandleSelection(ISelection selection_p) { boolean result = false; // Get the selected index. int selectionIndex = getSelectionIndex(); // Disable the up button when the first element is selected. result = (0 == selectionIndex) ? false : true; return result; } }; _selectionChangedHandlerForDownButton = new SelectionChangedHandler() { /** * @see org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler#doHandleSelection(org.eclipse.jface.viewers.ISelection) */ @Override protected boolean doHandleSelection(ISelection selection_p) { boolean result = false; // Get the selected index. int selectionIndex = getSelectionIndex(); // Disable the down button when the last element is selected. result = (getElementCount() - 1 == selectionIndex) ? false : true; return result; } }; } /** * Returns the zero-relative index of the element which is currently selected in the viewer. * @return */ protected int getSelectionIndex() { int selectionIndex = -1; Control control = getUnderlyingViewerControl(); if (control instanceof List) { List list = (List) control; selectionIndex = list.getSelectionIndex(); } else if (control instanceof Table) { Table table = (Table) control; selectionIndex = table.getSelectionIndex(); } return selectionIndex; } /** * Return the number of element contained in the viewer. * @return */ protected int getElementCount() { int itemCount = -1; Control control = getUnderlyingViewerControl(); if (control instanceof List) { List list = (List) control; itemCount = list.getItemCount(); } else if (control instanceof Table) { Table table = (Table) control; itemCount = table.getItemCount(); } return itemCount; } /** * Return the underlying control used by the current viewer. {@link #createViewer(Composite)}. * @return */ protected Control getUnderlyingViewerControl() { return getDecoratedViewer().getControl(); } /** * @see org.eclipse.egf.common.ui.viewers.AbstractViewerWithButtons#getButtonData() */ @Override protected ButtonData[] createButtonData() { // Initialize selection handlers. initializeSelectionChangedHandlers(); // Create extra button data. java.util.List buttonData = createExtraButtonData(); // Create the needed data used to create the UI buttons. buttonData.add(new ButtonData(__buttonsLabels[0], __buttonsStyles[0], UP_BUTTON_DATA, _selectionChangedHandlerForUpButton)); buttonData.add(new ButtonData(__buttonsLabels[1], __buttonsStyles[1], DOWN_BUTTON_DATA, _selectionChangedHandlerForDownButton)); return buttonData.toArray(new ButtonData[buttonData.size()]); } /** * Create extra button data, if needed, before up and down are added.
* Subclasses must call super when overriding this method.
* Default implementation provides with an empty, but not null, list of {@link ButtonData}. * @return */ protected java.util.List createExtraButtonData() { return new ArrayList(0); } /** * Default viewer is {@link TableViewer} with one column (to support labels and icons). * @see org.eclipse.egf.common.ui.viewers.AbstractViewerWithButtons#createViewer(org.eclipse.swt.widgets.Composite) */ @Override protected StructuredViewer createViewer(Composite composite_p) { TableViewer listViewer = new TableViewer(composite_p, DEFAULT_LIST_VIEWER_STYLE); // Get its control. Control control = listViewer.getControl(); // Create and set its layout data. GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); control.setLayoutData(gridData); return listViewer; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/OrderedListViewerWithAddAndRemove.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4030 Text-content-md5: ecefa64a29991df7a0779fcdac7c0146 Text-content-sha1: 0ac1ef0e118a4ecfbf0be82f6d3015e4d3f7772b Content-length: 4075 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import java.util.List; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; /** * Ordered list viewer, with add and remove button handles. * @author Guillaume Brocard */ public abstract class OrderedListViewerWithAddAndRemove extends OrderedListViewer { /** * Add button data. Attached to the add button at creation time. */ private static final Object ADD_BUTTON_DATA = new Object(); /** * Remove button data. Attached to the remove button at creation time. */ private static final Object REMOVE_BUTTON_DATA = new Object(); /** * Constructor. * @param parent_p */ public OrderedListViewerWithAddAndRemove(Composite parent_p) { super(parent_p); } /** * @see org.eclipse.egf.common.ui.viewers.OrderedListViewer#createExtraButtonData() */ @Override protected List createExtraButtonData() { List result = super.createExtraButtonData(); result.add(new ButtonData(Messages.OrderedListViewerWithAddAndRemove_AddButton_Label, SWT.PUSH, ADD_BUTTON_DATA, createAddButtonHandler())); result.add(new ButtonData(Messages.OrderedListViewerWithAddAndRemove_RemoveButton_Label, SWT.PUSH, REMOVE_BUTTON_DATA, createRemoveButtonHandler())); return result; } /** * Create add button handler.
* This implementation returns null. * @return null */ protected SelectionChangedHandler createAddButtonHandler() { // Default implementation returns null. return null; } /** * Create remove button handler.
* This implementation returns null. * @return null */ protected SelectionChangedHandler createRemoveButtonHandler() { // Default implementation returns null. return null; } /** * Get content handler instance.
* Implementor is advised to return the same reference each time this method is called. * @return A not null instance of {@link IContentHandler}. */ protected abstract IContentHandler getContentHandler(); /** * @see org.eclipse.egf.common.ui.viewers.OrderedListViewer#delegateButtonClicked(org.eclipse.swt.widgets.Button, java.lang.Object) */ @Override protected void delegateButtonClicked(Button clickedButton_p, Object data_p) { IContentProvider contentProvider = getDecoratedViewer().getContentProvider(); IContentHandler contentHandler = getContentHandler(); if (ADD_BUTTON_DATA.equals(data_p)) { Object objectToAdd = (null != contentHandler) ? contentHandler.createNewElement() : null; contentProvider.inputChanged(getDecoratedViewer(), null, objectToAdd); } else if (REMOVE_BUTTON_DATA.equals(data_p)) { ISelection selection = getDecoratedViewer().getSelection(); Object objectToRemove = (selection instanceof IStructuredSelection) ? ((IStructuredSelection) selection).getFirstElement() : null; if (null != contentHandler) { contentHandler.removeElement(objectToRemove); } contentProvider.inputChanged(getDecoratedViewer(), objectToRemove, null); } } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/ViewerWithAddAndRemove.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2460 Text-content-md5: a50641e5702eb92ae5d53fb8c62f1161 Text-content-sha1: c09eff0a88ec1ad05b93b5dedc0f1762b0dd02c4 Content-length: 2505 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.common.ui.viewers; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; /** * A viewer skeleton with add and remove buttons at the right side. * @author Guillaume Brocard */ public abstract class ViewerWithAddAndRemove extends AbstractViewerWithButtons { /** * Add button data. */ public static final String ADD_BUTTON_DATA = "LV_ADD"; //$NON-NLS-1$ /** * Remove button data. */ public static final String REMOVE_BUTTON_DATA = "LV_REMOVE"; //$NON-NLS-1$ /** * Default constructor.
* Need to call {@link #init(Composite)} explicitly. */ protected ViewerWithAddAndRemove() { super(); } /** * Constructor. * @param parent_p */ protected ViewerWithAddAndRemove(Composite parent_p) { super(parent_p); } /** * @see org.eclipse.egf.common.ui.viewers.AbstractViewerWithButtons#createButtonData() */ @Override protected ButtonData[] createButtonData() { // Add and remove button. return new ButtonData[] { new ButtonData(Messages.OrderedListViewerWithAddAndRemove_AddButton_Label, SWT.PUSH, ADD_BUTTON_DATA, createAddHandler()), new ButtonData(Messages.OrderedListViewerWithAddAndRemove_RemoveButton_Label, SWT.PUSH, REMOVE_BUTTON_DATA, createRemoveHandler()) }; } /** * Create add button handler. * @return Default implementation returns null, meaning button is always enabled. */ protected SelectionChangedHandler createAddHandler() { return null; } /** * Create remove button handler. * @return Default implementation returns null, meaning button is always enabled. */ protected SelectionChangedHandler createRemoveHandler() { return null; } } Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 755 Text-content-md5: d8d52e80d9266a555a5b000b2ab429ef Text-content-sha1: f7bbeec35f8682475dd952eea743b0a2643ed04b Content-length: 800 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### SortedListViewer_UpButton_Title=Up SortedListViewer_DownButton_Title=Down OrderedListViewerWithAddAndRemove_AddButton_Label=Add OrderedListViewerWithAddAndRemove_RemoveButton_Label=Remove Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/wizard Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/wizard/page Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.common.ui/src/org/eclipse/egf/common/ui/wizard/page/AbstractWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6109 Text-content-md5: 4a639e818add5be717dd67864ec6ff1e Text-content-sha1: 080505ab63bf63c7e9ca05006274ad690d90c671 Content-length: 6154 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2007, 2009 La Carotte Et Le Baton. * 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: * La Carotte Et Le Baton - initial API and implementation */ package org.eclipse.egf.common.ui.wizard.page; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; /** * Base class to implement wizard pages. * @author Guillaume Brocard */ public abstract class AbstractWizardPage extends WizardPage { /** * Cache the value of complete status for this page. */ private boolean _computeCompleteStatus; /** * Determines whether or not the complete status has to be computed. */ private boolean _completeStatus; /** * Constructor. * @param pageName_p */ public AbstractWizardPage(String pageName_p) { super(pageName_p); initialize(); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public AbstractWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); initialize(); } /** * Initialize fields. */ protected void initialize() { // At startup, we want to compute the 'complete status'. _computeCompleteStatus = true; } /** * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent_p) { // Configure page title and description. setTitle(getPageTitle()); setDescription(getPageDescription()); // Create parent composite. Composite content = createComposite(parent_p, getContentNumColumn()); // Initialize dialog units. initializeDialogUnits(content); // Create page content createPageArea(content); // Update buttons bar. updateButtons(); // Compute the preferred size of the content Point size = content.computeSize(SWT.DEFAULT, SWT.DEFAULT); // Modify the layout data of the content's parent. GridData gridData = (GridData) parent_p.getLayoutData(); // Set the height hint of the max between current value and the new // one based on the created content. gridData.heightHint = Math.max(size.y + 10, gridData.heightHint); // Set the Help system if provided on the wizard page content composite. // We have to register the help context id and to implement the performHelp method. String helpContextId = getHelpContextId(); if (helpContextId != null) { PlatformUI.getWorkbench().getHelpSystem().setHelp(content, helpContextId); } } /** * Handle page read only mode. */ protected abstract boolean isReadOnly(); /** * Update page buttons according data status. */ final public void updateButtons() { // Something has changed, mark the flag to recompute the complete status. _computeCompleteStatus = true; setPageComplete(computeCompleteStatus()); } /** * @see org.eclipse.jface.wizard.WizardPage#isPageComplete() */ @Override public boolean isPageComplete() { return computeCompleteStatus(); } /** * Check conditions to get the page completed * @return true the page is complete; false otherwise. */ protected abstract boolean getCompleteStatus(); /** * Create the page content. * @param parent_p */ protected abstract void createPageArea(Composite parent_p); /** * Handle the layout of this page. * @param parent_p */ protected void handlePageLayout(Composite parent_p) { // Do nothing. } /** * Get the number of columns to be displayed in the content.
* @return Default implementation return 2 columns. */ protected int getContentNumColumn() { return 2; } /** * Get the page title. * @return */ protected abstract String getPageTitle(); /** * Get the page description. * @return */ protected abstract String getPageDescription(); /** * Return the Help context id if any.
* Default implementation returns null. * @return null or an help context id. */ protected String getHelpContextId() { return null; } /** * Compute the complete status. */ private boolean computeCompleteStatus() { // If something has changed, recompute the complete status; otherwise return the cached value. if (_computeCompleteStatus) { _completeStatus = getCompleteStatus(); // Complete status is up-to-date. mark the flag that no computation is needed until a change is made. _computeCompleteStatus = false; } return _completeStatus; } /** * Create a default composite to host page widgets. * @param parent_p * @param numColumns_p * @return */ private Composite createComposite(Composite parent_p, int numColumns_p) { Composite composite = new Composite(parent_p, SWT.NULL); GridLayout layout = new GridLayout(); layout.numColumns = numColumns_p; composite.setLayout(layout); setControl(composite); return composite; } /** * @see org.eclipse.jface.dialogs.DialogPage#performHelp() */ @Override public void performHelp() { // This method is called when the wizard dialog shell is the receiver of the SWT 'Help' event. String helpContextId = getHelpContextId(); // If provided, show the current page help. if (helpContextId != null) { PlatformUI.getWorkbench().getHelpSystem().displayHelp(helpContextId); } } } Node-path: plugins/org.eclipse.egf.console/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 374 Text-content-md5: 911717b9d08ea50d6c596c1f43830080 Text-content-sha1: 00e1f1bc150986effc780aa7408f83a5747113fd Content-length: 419 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.console/.options Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 64 Text-content-md5: 067e70e16a5679936ddfd856165d3879 Text-content-sha1: e8c81abbf215a66017a4fe58ddd9d5e7e729afe0 Content-length: 109 K 13 svn:mime-type V 10 text/plain PROPS-END # Prints debug information org.eclipse.egf.console/debug=true Node-path: plugins/org.eclipse.egf.console/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 684 Text-content-md5: c3beaae295cc1319d76f913c0554dfd2 Text-content-sha1: d0b5013740650c314c9617d5741211f35875786c Content-length: 729 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.console org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.console/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: a4e6115c8dcdb4a8fbf0b3308e69c2e2 Text-content-sha1: 7bc6e403012bc1194d12e508b65f294c03b07542 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:57 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.console/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 886 Text-content-md5: 34450d9bf074284d26e658a8c5008502 Text-content-sha1: 85994b46ae5ca9ea6f84d6e912266300873dbb23 Content-length: 931 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.console; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.egf.console.EGFConsolePlugin Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: com.ibm.icu;visibility:=reexport, org.eclipse.emf.edit, org.eclipse.emf.common, org.eclipse.emf.common.ui, org.eclipse.ui.ide, org.eclipse.jface.text, org.eclipse.ui.console;visibility:=reexport, org.eclipse.core.runtime, org.eclipse.core.resources, org.eclipse.ui.editors, org.eclipse.egf.common.ui Export-Package: org.eclipse.egf.console, org.eclipse.egf.console.internal, org.eclipse.egf.console.l10n, org.eclipse.egf.console.preferences, org.eclipse.egf.console.util Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.console/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.console/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/ColorManager.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1829 Text-content-md5: 0ea5dbe841c80be2320b9b50bbb1c495 Text-content-sha1: be32b17f3982f7cff848ba588fb5e7f288d84249 Content-length: 1888 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1W$org/eclipse/egf/console/ColorManagerjava/lang/ObjectfgColorManager&Lorg/eclipse/egf/console/ColorManager; fColorTableLjava/util/Map; SignatureOLjava/util/Map;()VCode  java/util/HashMap  (I)V  LineNumberTableLocalVariableTablethis getDefault(()Lorg/eclipse/egf/console/ColorManager;   getColor@(Lorg/eclipse/swt/graphics/RGB;)Lorg/eclipse/swt/graphics/Color; "$# java/util/Map %&get&(Ljava/lang/Object;)Ljava/lang/Object;(org/eclipse/swt/graphics/Color *,+org/eclipse/swt/widgets/Display -. getCurrent#()Lorg/eclipse/swt/widgets/Display; '0 1B(Lorg/eclipse/swt/graphics/Device;Lorg/eclipse/swt/graphics/RGB;)V "3 45put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;rgbLorg/eclipse/swt/graphics/RGB;color Lorg/eclipse/swt/graphics/Color;dispose "< =>values()Ljava/util/Collection; @BAjava/util/Collection CDiterator()Ljava/util/Iterator; FHGjava/util/Iterator IJnext()Ljava/lang/Object; 'L : FN OPhasNext()ZeLjava/util/Iterator;LocalVariableTypeTable6Ljava/util/Iterator; SourceFileColorManager.java!     D**Y !#   < Y&')  z,*+!'M,'Y)+/M*+,2W,-./0*2 ,,6789:  ~(*;?L+E'K+M6787':(QRS QTUV Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/Console$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 933 Text-content-md5: 6a0ef59b0448f318f66f9f5cabee2163 Text-content-sha1: e8eb0b99de09907d2c5d08b020c5b82e67cdfe45 Content-length: 992 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10!org/eclipse/egf/console/Console$1java/lang/Objectjava/lang/Runnablethis$0!Lorg/eclipse/egf/console/Console;$(Lorg/eclipse/egf/console/Console;)VCode    ()VLineNumberTableLocalVariableTablethis#Lorg/eclipse/egf/console/Console$1;run )org/eclipse/jface/resource/JFaceResources getFontRegistry+()Lorg/eclipse/jface/resource/FontRegistry; 'org/eclipse/jface/resource/FontRegistry ! addListener3(Lorg/eclipse/jface/util/IPropertyChangeListener;)V #%$org/eclipse/egf/console/Console &initializeStreams #( )dump SourceFile Console.javaEnclosingMethod .init InnerClasses   8 *+ *    O* * "* '  *+,#-/  Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/Console$MyLifecycle.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1371 Text-content-md5: 279a7f610bab188fc67f03a821290501 Text-content-sha1: dc1965f1a96b66773e919c2b146b9d14a2a6e6ee Content-length: 1430 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1:+org/eclipse/egf/console/Console$MyLifecyclejava/lang/Object'org/eclipse/ui/console/IConsoleListenerthis$0!Lorg/eclipse/egf/console/Console;$(Lorg/eclipse/egf/console/Console;)VCode    ()VLineNumberTableLocalVariableTablethis-Lorg/eclipse/egf/console/Console$MyLifecycle; consolesAdded%([Lorg/eclipse/ui/console/IConsole;)V org/eclipse/egf/console/Console initconsoles"[Lorg/eclipse/ui/console/IConsole;iIconsole!Lorg/eclipse/ui/console/IConsole;consolesRemoved $&%$org/eclipse/ui/console/ConsolePlugin '( getDefault(()Lorg/eclipse/ui/console/ConsolePlugin; $* +,getConsoleManager*()Lorg/eclipse/ui/console/IConsoleManager; .0/&org/eclipse/ui/console/IConsoleManager 12removeConsoleListener,(Lorg/eclipse/ui/console/IConsoleListener;)V 4 5dispose SourceFile Console.java InnerClasses MyLifecycle!  4 *+ *h   ~"=+2N-* * +kl mnk!q*""  !" .=%+2N-* #)*-* 3+۱tu vwx$t-{*..+  !678 9 Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/Console.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 13384 Text-content-md5: eda042e02f09266f3f0a43b8206d1935 Text-content-sha1: 85e8b35ef007e25e2d1343c3f76813bb90138dc0 Content-length: 13443 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1org/eclipse/egf/console/Console%org/eclipse/ui/console/MessageConsole.org/eclipse/jface/util/IPropertyChangeListener _debugColor Lorg/eclipse/swt/graphics/Color; _errorColor _infoColor _warningColor _debugStream-Lorg/eclipse/ui/console/MessageConsoleStream; _errorStream _infoStream_warningStream_showOnMessageZ _document2Lorg/eclipse/egf/console/internal/ConsoleDocument;_consoleManager(Lorg/eclipse/ui/console/IConsoleManager; TIME_FORMATLcom/ibm/icu/text/DateFormat;_visible _initializedNESTINGLjava/lang/String; ConstantValue ()VCode$!com/ibm/icu/text/SimpleDateFormat &(',org/eclipse/egf/console/l10n/ConsoleMessages )Console_resultTimeFormat #+ ,-(Ljava/lang/String;)V/'(took 'm:ss.SSS')') 1 3java/lang/RuntimeExceptionLineNumberTableLocalVariableTableformateLjava/lang/RuntimeException; &: ; EGF_Console =?>(org/eclipse/egf/console/EGFConsolePlugin @A getDefault,()Lorg/eclipse/egf/console/EGFConsolePlugin;Ceview16/console_view.gif =E FGgetImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; I ,JA(Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V L  N PEGF R S-setType =U VWgetPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore;Y.org.eclipse.egf.console.internal.showOnMessage []\-org/eclipse/jface/preference/IPreferenceStore ^_ getBoolean(Ljava/lang/String;)Z a c0org/eclipse/egf/console/internal/ConsoleDocument be ,! g  ikj$org/eclipse/ui/console/ConsolePlugin @l(()Lorg/eclipse/ui/console/ConsolePlugin; in opgetConsoleManager*()Lorg/eclipse/ui/console/IConsoleManager; r  [t uvaddPropertyChangeListener3(Lorg/eclipse/jface/util/IPropertyChangeListener;)Vthis!Lorg/eclipse/egf/console/Console;getDebugStream/()Lorg/eclipse/ui/console/MessageConsoleStream; | getErrorStream    getInfoStream   getWarningStream   logDebug  (Ljava/lang/String;I)Vline  !bringConsoleToFront   appendLine(ILjava/lang/String;I)VnestingIlogError   logThrowable*(Ljava/lang/String;Ljava/lang/Throwable;)V  +(Ljava/lang/String;Ljava/lang/Throwable;I)Vmessage throwableLjava/lang/Throwable; = newErrorStatusK(Ljava/lang/String;Ljava/lang/Throwable;)Lorg/eclipse/core/runtime/IStatus;   logStatus&(Lorg/eclipse/core/runtime/IStatus;I)V%(Lorg/eclipse/core/runtime/IStatus;)Vstatus"Lorg/eclipse/core/runtime/IStatus;   outputStatus  org/eclipse/core/runtime/IStatus  getSeverity()I & Console_see_your_log_filelogInfo   logWarning  org/eclipse/ui/console/IConsole &org/eclipse/ui/console/IConsoleManager  addConsoles%([Lorg/eclipse/ui/console/IConsole;)V showConsoleView$(Lorg/eclipse/ui/console/IConsole;)Vinit  !  !initLimitOutput  !initWrapSetting = getWorkbenchDisplay#()Lorg/eclipse/swt/widgets/Display;!org/eclipse/egf/console/Console$1 ,$(Lorg/eclipse/egf/console/Console;)V org/eclipse/swt/widgets/Display  asyncExec(Ljava/lang/Runnable;)V%org.eclipse.egf.console.internal.wrap&org.eclipse.egf.console.internal.width [ getInt(Ljava/lang/String;)I  setConsoleWidth(I)Vstore/Lorg/eclipse/jface/preference/IPreferenceStore;,org.eclipse.egf.console.internal.limitOutput-org.eclipse.egf.console.internal.lowWaterMark.org.eclipse.egf.console.internal.highWaterMark   setWaterMarks(II)VlowWater highWaterinitializeStreams  znewMessageStream+org.eclipse.egf.console.internal.debugColor   createColorU(Lorg/eclipse/swt/widgets/Display;Ljava/lang/String;)Lorg/eclipse/swt/graphics/Color;    +org/eclipse/ui/console/MessageConsoleStream   setColor#(Lorg/eclipse/swt/graphics/Color;)V +org.eclipse.egf.console.internal.errorColor  1org.eclipse.egf.console.internal.informationColor  -org.eclipse.egf.console.internal.warningColor   org/eclipse/ui/PlatformUI  getWorkbench()Lorg/eclipse/ui/IWorkbench; ! org/eclipse/ui/IWorkbench "#getThemeManager'()Lorg/eclipse/ui/themes/IThemeManager; %'&#org/eclipse/ui/themes/IThemeManager ()getCurrentTheme ()Lorg/eclipse/ui/themes/ITheme; +-,org/eclipse/ui/themes/ITheme ./getFontRegistry+()Lorg/eclipse/jface/resource/FontRegistry;1%org.eclipse.egf.console.internal.font 354'org/eclipse/jface/resource/FontRegistry 67get3(Ljava/lang/String;)Lorg/eclipse/swt/graphics/Font; 9 :;setFont"(Lorg/eclipse/swt/graphics/Font;)VfLorg/eclipse/swt/graphics/Font;dump b@ ABgetLinesA()[Lorg/eclipse/egf/console/internal/ConsoleDocument$ConsoleLine; DFELorg/eclipse/egf/console/internal/ConsoleDocument$ConsoleLine;Vjava/lang/StringBuffer Ue UY Z[append,(Ljava/lang/String;)Ljava/lang/StringBuffer; ] ^! showConsole ` yz Ub cdtoString()Ljava/lang/String; f g-println i }z k z m z bo pappendConsoleLinetypebufferLjava/lang/StringBuffer; u vwshow(Z)Vdispose z-{)org/eclipse/jface/resource/JFaceResources 3} ~vremoveListenershutdown  x! org/eclipse/swt/graphics/Color [ vremovePropertyChangeListener  outputStatusMessage   isMultiStatus()Z   getChildren%()[Lorg/eclipse/core/runtime/IStatus;   getException()Ljava/lang/Throwable;+java/lang/reflect/InvocationTargetException  getTargetException&org/eclipse/core/runtime/CoreException   getStatus$()Lorg/eclipse/core/runtime/IStatus;children#[Lorg/eclipse/core/runtime/IStatus;  d getMessage java/lang/String dtrim  length bjava/lang/Throwable  equals(Ljava/lang/Object;)Z  messageLineForStatus6(Lorg/eclipse/core/runtime/IStatus;)Ljava/lang/String;propertyChange/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V *org/eclipse/jface/util/PropertyChangeEvent d getProperty z 7getFont0org.eclipse.egf.console.internal.backgroundColor = getPreferenceColor4(Ljava/lang/String;)Lorg/eclipse/swt/graphics/Color;    setBackground   getNewValue()Ljava/lang/Object; java/lang/Boolean valueOf'(Ljava/lang/String;)Ljava/lang/Boolean;   booleanValueevent,Lorg/eclipse/jface/util/PropertyChangeEvent;propertynewColorvalueLjava/lang/Object; &  Console_error org/eclipse/osgi/util/NLS bind9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; & Console_warning &  Console_info 0org/eclipse/jface/preference/PreferenceConverter getColora(Lorg/eclipse/jface/preference/IPreferenceStore;Ljava/lang/String;)Lorg/eclipse/swt/graphics/RGB;  ,B(Lorg/eclipse/swt/graphics/Device;Lorg/eclipse/swt/graphics/RGB;)Vdisplay!Lorg/eclipse/swt/widgets/Display; preferencergbLorg/eclipse/swt/graphics/RGB; ]/org/eclipse/egf/console/internal/ConsoleFactoryshowNoMatterWhat SourceFile Console.java InnerClasses+org/eclipse/egf/console/Console$MyLifecycle MyLifecycle ConsoleLine!       " !"t#Y%*KL#Y.*K*0 24TUXZ45  66 78,!"R*9<BDH*K*M*OQ*<TXZ`*bYdf*hmq<T*s4& ^a0;EQ5 Rwxyz"/*{45 wx}z"/*~45 wxz"/*45 wxz"/*45 wx-"?*+4 5wx"]*`**+4 5 wx-"?*+4 5wx"]*`**+4 5 wx"J*+,4 5 wx"Z*<+,4  5*wx"?*+4 5wx"z(*`**+++ *4 '5 (wx((-"?*+4 5wx"]*`**+4 5 wx-"?*+4 5wx"J*+4 5 wx!"Y#*K*qY*S*q*4"5 #wx!"U***θѻY*׶ڱ4 5 wx!"k'<TL+Z*+*4!&5'wx !"4<TL+Z+=+>* *4$ - 3 5*4wx-$ !"I*fYL*M**{**~*******{*** *~*********$*02M*,8*M+ç+ÿ4N&.;FT_mx !#$%(5wx <=>!"J*fYL*K*f?M>,2:*CHK,*fN+ç+ÿCFFHF4* +, -./01.:2A+I45*Jwx-QR$ST"ɻUYW:6XW*`**\*fY:*Kyr3I_,XW*_aeO,XW*hae9,XW*jae#,XW*lae *f,nçÿ74f7 898 ;'<+>/?7@>A\CcDoErGyHIKLMOPRT?W5>wxq rs S^!"4*t4 Z[5 wxx!"f*fYL*Ky*|+ç+ÿ4kl mko5 wx!"I** ** ** ** *<T*4. wx y{| ~'.5<H5 Iwx"+*++%+N6*-2`-+1+>*+`"+*+`4: !,6BTp|54wxS" UYWN6 -XW+++!+{++f-+XW+*-a$+*-a *-aUYWN6 -XW`+E-*+XW+*-a$+*-a *-a4f6H]hr 5> wx  rs SS"eU+M*K, , *Χ,, , *˧,$*N*{-**-, %* N*~-**-,%*N*-**-],%*N*-**-1,0*08,Ķ*<Ķƶ,X++N-*-Ѷ׵`*-Ҷ׵`4)  %.7@GPZbiq{ #,18IT5RUwxUPZ1#"j+Y+S+Y+S+Y+S+4 !+BLc5jwxj"a<T,NY+-4   5*wx vw"g# *`*K  *q*4 "5#wx#Db Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/EGFConsolePlugin.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2032 Text-content-md5: acbcb180719f653967670a30da0605af Text-content-sha1: b132d5ba6c04475c469188e5af7a5ee79e9fd577 Content-length: 2091 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1R(org/eclipse/egf/console/EGFConsolePlugin7org/eclipse/egf/common/ui/activator/AbstractUIActivator__plugin*Lorg/eclipse/egf/console/EGFConsolePlugin;_console!Lorg/eclipse/egf/console/Console;()VCode  LineNumberTableLocalVariableTablethisgetPreferenceColor4(Ljava/lang/String;)Lorg/eclipse/swt/graphics/Color; $org/eclipse/egf/console/ColorManager  getDefault(()Lorg/eclipse/egf/console/ColorManager;  ,()Lorg/eclipse/egf/console/EGFConsolePlugin;  getPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore; !#"0org/eclipse/jface/preference/PreferenceConverter $%getColora(Lorg/eclipse/jface/preference/IPreferenceStore;Ljava/lang/String;)Lorg/eclipse/swt/graphics/RGB; ' $(@(Lorg/eclipse/swt/graphics/RGB;)Lorg/eclipse/swt/graphics/Color;typeLjava/lang/String; getConsole#()Lorg/eclipse/egf/console/Console; . /,getInnerConsole 1 start%(Lorg/osgi/framework/BundleContext;)V Exceptions6java/lang/Exception 8 23 : <org/eclipse/egf/console/Console ; ?$Errors occurred starting the console A BClog+(ILjava/lang/String;Ljava/lang/Throwable;)VEjava/lang/RuntimeExceptioncontext"Lorg/osgi/framework/BundleContext;eLjava/lang/RuntimeException;stop L M dispose O J3 SourceFileEGFConsolePlugin.java!   3*  &'  E+ &*)* +, '-1/, /*05 2345 {!*+7*9*;Y=0 M*>,@ D>? ABD F !!FGHIJ345 PK9*+NNO PQFG  $9YPQ Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsoleDocument$ConsoleLine.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 676 Text-content-md5: 8f371fb9c2b53256698844253ca304e0 Text-content-sha1: c56987d54f921d82f59333d8853565c0f8fc19d3 Content-length: 735 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#(Ljava/lang/String;II)VCode  ()V      LineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/console/internal/ConsoleDocument$ConsoleLine;linetypenesting SourceFileConsoleDocument.java InnerClasses!0org/eclipse/egf/console/internal/ConsoleDocument ConsoleLine!   l* *+**23 456*  " Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsoleDocument.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1846 Text-content-md5: 6ca9485eee8c1587e1402a8d54a1b82e Text-content-sha1: 21416d62fc7010046c09abdcac9c606677ad5857 Content-length: 1905 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1I0org/eclipse/egf/console/internal/ConsoleDocumentjava/lang/ObjectDEBUGI ConstantValueERRORINFOWARNING DELIMITER _lineTypes[I_lines[Ljava/lang/String; _lineNestings _writeIndex _readIndex BUFFER_SIZE()VCode     " LineNumberTableLocalVariableTablethis2Lorg/eclipse/egf/console/internal/ConsoleDocument;clear )  + appendConsoleLine(ILjava/lang/String;I)V/java/lang/String 1 typelineLjava/lang/String;nestinggetLinesA()[Lorg/eclipse/egf/console/internal/ConsoleDocument$ConsoleLine; 9 :;isEmpty()Z=.+Sȡ=++#* cd f%g*h/iKjUkWh`n$*b%&%=AB*8C,4D:;9**!#r$ %&EFG <H Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsoleFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1921 Text-content-md5: dd6b55e7884de59dbeffda1c1544e454 Text-content-sha1: c74682d33c0e2d908a2c3991f284e57126686f45 Content-length: 1980 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1U/org/eclipse/egf/console/internal/ConsoleFactoryjava/lang/Object&org/eclipse/ui/console/IConsoleFactory()VCode  LineNumberTableLocalVariableTablethis1Lorg/eclipse/egf/console/internal/ConsoleFactory; openConsole   showConsole (org/eclipse/egf/console/EGFConsolePlugin  getConsole#()Lorg/eclipse/egf/console/Console; $org/eclipse/ui/console/ConsolePlugin  getDefault(()Lorg/eclipse/ui/console/ConsolePlugin; ! "#getConsoleManager*()Lorg/eclipse/ui/console/IConsoleManager; %'&&org/eclipse/ui/console/IConsoleManager () getConsoles$()[Lorg/eclipse/ui/console/IConsole;+org/eclipse/ui/console/IConsole %- ./ addConsoles%([Lorg/eclipse/ui/console/IConsole;)V %1 23showConsoleView$(Lorg/eclipse/ui/console/IConsole;)Vconsole!Lorg/eclipse/egf/console/Console;manager(Lorg/eclipse/ui/console/IConsoleManager;existing"[Lorg/eclipse/ui/console/IConsole;existsZiI closeConsole %@ A/removeConsolesC+org/eclipse/egf/console/Console$MyLifecycle E FGgetClass()Ljava/lang/Class; BI J$(Lorg/eclipse/egf/console/Console;)V %L MNaddConsoleListener,(Lorg/eclipse/ui/console/IConsoleListener;)V SourceFileConsoleFactory.java InnerClassesSorg/eclipse/egf/console/Console MyLifecycle! 3*    2    LK*F L+$M>6*,2>,+*Y*S,+*0 6 #$%&'()&*((2-6.D0K2 4H45<675893:;<= > ~6 KL+)**Y+S? BY+YDWHK 56 7895; /67 +45OPQ BRT Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsoleLineNotifier$URIHyperlink.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1526 Text-content-md5: 0784062467dc53b6c097ffa975650962 Text-content-sha1: 66afd7694ac24b6cc7cbcd0350c3c949dbccda49 Content-length: 1585 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1;Aorg/eclipse/egf/console/internal/ConsoleLineNotifier$URIHyperlinkjava/lang/Object!org/eclipse/ui/console/IHyperlink_uri!Lorg/eclipse/emf/common/util/URI;$(Lorg/eclipse/emf/common/util/URI;)VCode  ()V  LineNumberTableLocalVariableTablethisCLorg/eclipse/egf/console/internal/ConsoleLineNotifier$URIHyperlink;uri linkEntered linkExited linkActivated (org/eclipse/egf/console/util/ConsoleUtil  openEditor?(Lorg/eclipse/emf/common/util/URI;)Lorg/eclipse/ui/IEditorPart; 2org/eclipse/emf/edit/domain/IEditingDomainProvider " #$setSelectionToViewer@(Lorg/eclipse/ui/IEditorPart;Lorg/eclipse/emf/common/util/URI;)V &('(org/eclipse/egf/console/EGFConsolePlugin )* getDefault,()Lorg/eclipse/egf/console/EGFConsolePlugin; &, -.log(Ljava/lang/Throwable;)V0 org/eclipse/ui/PartInitExceptionpartLorg/eclipse/ui/IEditorPart;e"Lorg/eclipse/ui/PartInitException; SourceFileConsoleLineNotifier.java InnerClasses94org/eclipse/egf/console/internal/ConsoleLineNotifier URIHyperlink   F * *+    +  +  .*)*L+++*! L%++"%/%&- .12&34567 8: Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsoleLineNotifier.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2933 Text-content-md5: e2cf63a1caf33f05abc6cdad76567899 Text-content-sha1: aaf2f922219199b43360777a54eb1216aa0cd4d1 Content-length: 2992 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 14org/eclipse/egf/console/internal/ConsoleLineNotifierjava/lang/Object,org/eclipse/ui/console/IPatternMatchListener_console!Lorg/eclipse/egf/console/Console;()VCode   LineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/console/internal/ConsoleLineNotifier;connect'(Lorg/eclipse/ui/console/TextConsole;)Vorg/eclipse/egf/console/Consoleconsole$Lorg/eclipse/ui/console/TextConsole; disconnect matchFound-(Lorg/eclipse/ui/console/PatternMatchEvent;)V  (org/eclipse/ui/console/PatternMatchEvent !" getOffset()I $ %" getLength ' () getDocument$()Lorg/eclipse/jface/text/IDocument; +-, org/eclipse/jface/text/IDocument ./get(II)Ljava/lang/String;1 platform:/ 354java/lang/String 67indexOf(Ljava/lang/String;)I 9 :; buildLink)(Ljava/lang/String;IILjava/lang/String;)V=plugin:/?+org/eclipse/jface/text/BadLocationExceptionevent*Lorg/eclipse/ui/console/PatternMatchEvent;offsetIlengthtextLjava/lang/String;indexIjava/util/StringTokenizerK HM N'(Ljava/lang/String;Ljava/lang/String;)V HP QR nextToken()Ljava/lang/String; 3T UV startsWith(Ljava/lang/String;)ZXAorg/eclipse/egf/console/internal/ConsoleLineNotifier$URIHyperlink Z\[org/eclipse/emf/common/util/URI ]^ createURI5(Ljava/lang/String;)Lorg/eclipse/emf/common/util/URI; W` a$(Lorg/eclipse/emf/common/util/URI;)V 3c D" e fg addHyperlink((Lorg/eclipse/ui/console/IHyperlink;II)V Hi jkhasMoreElements()Zmjava/lang/Exceptiontype tokenizerLjava/util/StringTokenizer; elementNamelinkCLorg/eclipse/egf/console/internal/ConsoleLineNotifier$URIHyperlink; getPatternv.*\r(\n?)|.*\ngetCompilerFlagsgetLineQualifierz\n|\r SourceFileConsoleLineNotifier.java InnerClasses URIHyperlink!  < * *%* %   L+ *+013!  4* 9:  P+=+#>*&*:026*08<26*<8M3N>4MN>6 AB CF#G)H3I4M=NCOMPNROU>PP@AIBC DDC4EF#+GC:;   W+26HY+JL:5O:S$WYY_:*`bdhɧ:HTlIQTl. YZ[\](^6_H`I[TcVf\ WWEFWBCWDCWnFLGC@op+qF6rstR -ul w" ,s xR -yz {|} W~ Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsolePageParticipant.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1744 Text-content-md5: 0a76b8e08684a27e0a70a6504194435f Text-content-sha1: b2419aed1ca67ec1b82e44931c9931d0749a3139 Content-length: 1803 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1B7org/eclipse/egf/console/internal/ConsolePageParticipantjava/lang/Object.org/eclipse/ui/console/IConsolePageParticipantconsoleRemoveAction6Lorg/eclipse/egf/console/internal/ConsoleRemoveAction;()VCode  LineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/console/internal/ConsolePageParticipant;initK(Lorg/eclipse/ui/part/IPageBookViewPage;Lorg/eclipse/ui/console/IConsole;)V4org/eclipse/egf/console/internal/ConsoleRemoveAction    %org/eclipse/ui/part/IPageBookViewPage getSite!()Lorg/eclipse/ui/part/IPageSite; "!org/eclipse/ui/part/IPageSite #$ getActionBars()Lorg/eclipse/ui/IActionBars; &('org/eclipse/ui/IActionBars )*getToolBarManager,()Lorg/eclipse/jface/action/IToolBarManager;, launchGroup .0/(org/eclipse/jface/action/IToolBarManager 12 appendToGroup7(Ljava/lang/String;Lorg/eclipse/jface/action/IAction;)Vpage'Lorg/eclipse/ui/part/IPageBookViewPage;console!Lorg/eclipse/ui/console/IConsole;barsLorg/eclipse/ui/IActionBars;dispose activated deactivated getAdapter%(Ljava/lang/Class;)Ljava/lang/Object;adapterLjava/lang/Class; SourceFileConsolePageParticipant.java!  /*   })*Y+N-%+*- (*))34)56789  4* !" :  +& ;  +* <= 6.>?@A Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsolePreferenceInitializer$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1512 Text-content-md5: 2c05780b9154dacafb085aac4af9d2bb Text-content-sha1: 253182d12d91571df5ab8e97b51e1c22324e8e0d Content-length: 1571 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1:?org/eclipse/egf/console/internal/ConsolePreferenceInitializer$1java/lang/Objectjava/lang/Runnablethis$0?Lorg/eclipse/egf/console/internal/ConsolePreferenceInitializer; val$prefs/Lorg/eclipse/jface/preference/IPreferenceStore; val$display!Lorg/eclipse/swt/widgets/Display;(Lorg/eclipse/egf/console/internal/ConsolePreferenceInitializer;Lorg/eclipse/jface/preference/IPreferenceStore;Lorg/eclipse/swt/widgets/Display;)VCode      ()VLineNumberTableLocalVariableTablethisALorg/eclipse/egf/console/internal/ConsolePreferenceInitializer$1;run0org.eclipse.egf.console.internal.backgroundColor !#"org/eclipse/swt/widgets/Display $%getSystemColor#(I)Lorg/eclipse/swt/graphics/Color; ')(org/eclipse/swt/graphics/Color *+getRGB ()Lorg/eclipse/swt/graphics/RGB; -/.0org/eclipse/jface/preference/PreferenceConverter 01 setDefaultb(Lorg/eclipse/jface/preference/IPreferenceStore;Ljava/lang/String;Lorg/eclipse/swt/graphics/RGB;)V SourceFile!ConsolePreferenceInitializer.javaEnclosingMethod6=org/eclipse/egf/console/internal/ConsolePreferenceInitializer 8initializeDefaultPreferences InnerClasses    B*+*,*-* B \** &,"EFG H GIDK 234579  Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsolePreferenceInitializer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2760 Text-content-md5: 67c5f5824ec71edc7cb072925a58bba9 Text-content-sha1: c1d6de26f5a91d8baa70e73ddb37984dfb3f6bb6 Content-length: 2819 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1r=org/eclipse/egf/console/internal/ConsolePreferenceInitializerBorg/eclipse/core/runtime/preferences/AbstractPreferenceInitializer()VCode  LineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/console/internal/ConsolePreferenceInitializer;initializeDefaultPreferences (org/eclipse/egf/console/EGFConsolePlugin  getDefault,()Lorg/eclipse/egf/console/EGFConsolePlugin;  getPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore;+org.eclipse.egf.console.internal.errorColororg/eclipse/swt/graphics/RGB  (III)V !#"0org/eclipse/jface/preference/PreferenceConverter $% setDefaultb(Lorg/eclipse/jface/preference/IPreferenceStore;Ljava/lang/String;Lorg/eclipse/swt/graphics/RGB;)V'-org.eclipse.egf.console.internal.warningColor)1org.eclipse.egf.console.internal.informationColor++org.eclipse.egf.console.internal.debugColor-.org.eclipse.egf.console.internal.showOnMessage /10-org/eclipse/jface/preference/IPreferenceStore $2(Ljava/lang/String;Z)V4%org.eclipse.egf.console.internal.wrap6&org.eclipse.egf.console.internal.width /8 $9(Ljava/lang/String;I)V;,org.eclipse.egf.console.internal.limitOutput=-org.eclipse.egf.console.internal.lowWaterMark?.org.eclipse.egf.console.internal.highWaterMark B CDgetWorkbenchDisplay#()Lorg/eclipse/swt/widgets/Display; FHGjava/lang/Thread IJ currentThread()Ljava/lang/Thread; LNMorg/eclipse/swt/widgets/Display OJ getThread QSRjava/lang/Object TUequals(Ljava/lang/Object;)ZW0org.eclipse.egf.console.internal.backgroundColor LY Z[getSystemColor#(I)Lorg/eclipse/swt/graphics/Color; ]_^org/eclipse/swt/graphics/Color `agetRGB ()Lorg/eclipse/swt/graphics/RGB;c?org/eclipse/egf/console/internal/ConsolePreferenceInitializer$1 be f(Lorg/eclipse/egf/console/internal/ConsolePreferenceInitializer;Lorg/eclipse/jface/preference/IPreferenceStore;Lorg/eclipse/swt/widgets/Display;)V Lh ij asyncExec(Ljava/lang/Runnable;)Vprefs/Lorg/eclipse/jface/preference/IPreferenceStore;display!Lorg/eclipse/swt/widgets/Display; SourceFile!ConsolePreferenceInitializer.java InnerClasses!3*  !  ]L+Y +&Yd +(Y +*Y +,.+3.+5ܹ7+:.+< 7+>@7AM,0E,KP+V,X\ ,bY*+,dg f*+,,->.N/W0`1k2t34678:;<=<>9ABAP  kl2mnopq b Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/ConsoleRemoveAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1189 Text-content-md5: f7296f668eb60e8bffe29355cb716b0d Text-content-sha1: a961e9fb653f2679b4f311ac986bf713ec7c50f7 Content-length: 1248 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 194org/eclipse/egf/console/internal/ConsoleRemoveActionorg/eclipse/jface/action/Action_idLjava/lang/String; ConstantValue 4org.eclipse.egf.console.internal.ConsoleRemoveAction()VCode ,org/eclipse/egf/console/l10n/ConsoleMessages  Console_close  (Ljava/lang/String;)V (org/eclipse/egf/console/EGFConsolePlugin  getDefault,()Lorg/eclipse/egf/console/EGFConsolePlugin;dlcl16/close_console.gif   getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; " #$setDisabledImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)V&elcl16/close_console.gif ( )$setImageDescriptor + ,setIdLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/console/internal/ConsoleRemoveAction;run 354/org/eclipse/egf/console/internal/ConsoleFactory 6  closeConsole SourceFileConsoleRemoveAction.java!  `&* *!*%'**-%. &/01  22- "#. /078 Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/internal/IEGFConsoleConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1454 Text-content-md5: 8e71b3b6309dd45ceecd55f0895d40c0 Text-content-sha1: 4cfcf26392b35264449d1edaf0ca4ce2f6d0cec6 Content-length: 1513 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 165org/eclipse/egf/console/internal/IEGFConsoleConstantsjava/lang/ObjectIMG_SEARCH_CONSOLELjava/lang/String; ConstantValue eview16/console_view.gifIMG_DISABLED_CLOSE_CONSOLE dlcl16/close_console.gifIMG_ENABLED_CLOSE_CONSOLEelcl16/close_console.gif CONSOLE_WRAP%org.eclipse.egf.console.internal.wrap CONSOLE_WIDTH&org.eclipse.egf.console.internal.widthCONSOLE_ERROR_COLOR+org.eclipse.egf.console.internal.errorColorCONSOLE_WARNING_COLOR-org.eclipse.egf.console.internal.warningColorCONSOLE_INFO_COLOR1org.eclipse.egf.console.internal.informationColorCONSOLE_DEBUG_COLOR!+org.eclipse.egf.console.internal.debugColorCONSOLE_SHOW_ON_MESSAGE$.org.eclipse.egf.console.internal.showOnMessageCONSOLE_LIMIT_OUTPUT',org.eclipse.egf.console.internal.limitOutputCONSOLE_LOW_WATER_MARK*-org.eclipse.egf.console.internal.lowWaterMarkCONSOLE_HIGH_WATER_MARK-.org.eclipse.egf.console.internal.highWaterMarkCONSOLE_BACKGROUND_COLOR00org.eclipse.egf.console.internal.backgroundColor CONSOLE_FONT3%org.eclipse.egf.console.internal.font SourceFileIEGFConsoleConstants.java    "#%&()+,./1245 Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/l10n Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/l10n/ConsoleMessages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1384 Text-content-md5: 5c11c721604259636274ff532611ea8e Text-content-sha1: ddbb41ded3fbea184b034bea846c3eb8fe7243e8 Content-length: 1443 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10,org/eclipse/egf/console/l10n/ConsoleMessagesjava/lang/Object BUNDLE_NAMELjava/lang/String; ConstantValue %org.eclipse.egf.console.l10n.messagesConsolePreferencePage_ErrorConsolePreferencePage_Warning!ConsolePreferencePage_InformationConsolePreferencePage_DebugConsolePreferencePage_General#ConsolePreferencePage_ShowOnMessage!ConsolePreferencePage_limitOutput#ConsolePreferencePage_highWaterMarkConsolePreferencePage_Wrap_text+ConsolePreferencePage_Maximum_Console_width)ConsolePreferencePage_Error_Console_width)ConsolePreferencePage_Console_buffer_size%ConsolePreferencePage_BackgroundColorConsole_resultTimeFormat Console_close Console_error Console_infoConsole_warningConsole_see_your_log_file EGF_Console()VCode "$#org/eclipse/osgi/util/NLS %&initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable + )this.Lorg/eclipse/egf/console/l10n/ConsoleMessages; SourceFileConsoleMessages.java!                     ,!' () /**'( ,-./ Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/l10n/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 1455 Text-content-md5: c69e38f79eef5045cb8a39b93bc94776 Text-content-sha1: 8de617988aa2574e4bf799724c3cfccdb0f9c6a7 Content-length: 1465 PROPS-END ## # Copyright (c) 2000, 2009 IBM Corporation and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # IBM Corporation - initial API and implementation # Thales Corporate Services S.A.S ## ConsolePreferencePage_General=EGF Console Settings: ConsolePreferencePage_Error=Error Message ConsolePreferencePage_Warning=Warning Message ConsolePreferencePage_Information=Information Message ConsolePreferencePage_Debug=Debug Message ConsolePreferencePage_ShowOnMessage=&Show on Message ConsolePreferencePage_limitOutput=&Limit Output ConsolePreferencePage_highWaterMark=&Buffer Size (Characters): ConsolePreferencePage_Wrap_text=Fixed &width ConsolePreferencePage_Maximum_Console_width=&Maximum character width: ConsolePreferencePage_Error_Console_width=Character width must be between 80 and Integer.MAX_VALUE - 1. ConsolePreferencePage_Console_buffer_size=Buffer size must be between 1000 and Integer.MAX_VALUE - 1. ConsolePreferencePage_BackgroundColor=Back&ground color: Console_resultTimeFormat='(took 'm:ss.SSS')' Console_close=Close Console_error=Error: {0} Console_info=Info: {0} Console_warning=Warning: {0} Console_see_your_log_file=See your Log file for further details. EGF_Console=EGF Console Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/preferences Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/preferences/BooleanFieldEditor2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 871 Text-content-md5: 0ccb6cab38ffdd46048722a666fa4b30 Text-content-sha1: ec06ad4021185053a2305b49a816939ac4163c16 Content-length: 930 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 17org/eclipse/egf/console/preferences/BooleanFieldEditor2/org/eclipse/jface/preference/BooleanFieldEditor_changeControl Lorg/eclipse/swt/widgets/Button;K(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;)VCode  LineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/console/preferences/BooleanFieldEditor2;nameLjava/lang/String; labelTextstyleIparent#Lorg/eclipse/swt/widgets/Composite;getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button;     SourceFileBooleanFieldEditor2.java! ` *+,   ! 4      Q* **+* ()+  Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/preferences/EGFPreferencePage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 890 Text-content-md5: c7f1addca1de10649236e7ec1f27c7ed Text-content-sha1: 774a28ee3dd47983532104e2f135ae2c643ff164 Content-length: 949 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1"7org/eclipse/egf/console/preferences/EGFPreferencePage$1'org/eclipse/swt/events/SelectionAdapterthis$07Lorg/eclipse/egf/console/preferences/EGFPreferencePage;:(Lorg/eclipse/egf/console/preferences/EGFPreferencePage;)VCode    ()VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/console/preferences/EGFPreferencePage$1;widgetSelected*(Lorg/eclipse/swt/events/SelectionEvent;)V 5org/eclipse/egf/console/preferences/EGFPreferencePage updateWidthEditore'Lorg/eclipse/swt/events/SelectionEvent; SourceFileEGFPreferencePage.javaEnclosingMethod createFieldEditors InnerClasses  8 *+ *     @*  !  Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/preferences/EGFPreferencePage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 895 Text-content-md5: a8c2f8092a0e28306f8d30f312584c61 Text-content-sha1: ce6475ca6a2062422964e3a0001b5e5564712d21 Content-length: 954 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1"7org/eclipse/egf/console/preferences/EGFPreferencePage$2'org/eclipse/swt/events/SelectionAdapterthis$07Lorg/eclipse/egf/console/preferences/EGFPreferencePage;:(Lorg/eclipse/egf/console/preferences/EGFPreferencePage;)VCode    ()VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/console/preferences/EGFPreferencePage$2;widgetSelected*(Lorg/eclipse/swt/events/SelectionEvent;)V 5org/eclipse/egf/console/preferences/EGFPreferencePage updateBufferSizeEditore'Lorg/eclipse/swt/events/SelectionEvent; SourceFileEGFPreferencePage.javaEnclosingMethod createFieldEditors InnerClasses  8 *+ *     @*  !  Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/preferences/EGFPreferencePage$ConsoleIntegerFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1216 Text-content-md5: 39caa17fb8f551c8159b3960bba91961 Text-content-sha1: 1b01e6f8114fddd3af7d3c96f205bff4ca24dcc8 Content-length: 1275 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)Oorg/eclipse/egf/console/preferences/EGFPreferencePage$ConsoleIntegerFieldEditor/org/eclipse/jface/preference/IntegerFieldEditorthis$07Lorg/eclipse/egf/console/preferences/EGFPreferencePage;(Lorg/eclipse/egf/console/preferences/EGFPreferencePage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VCode    J(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)VLineNumberTableLocalVariableTablethisQLorg/eclipse/egf/console/preferences/EGFPreferencePage$ConsoleIntegerFieldEditor;nameLjava/lang/String; labelTextparent#Lorg/eclipse/swt/widgets/Composite;refreshValidState()V  clearErrorMessage  5org/eclipse/egf/console/preferences/EGFPreferencePage !"canClearErrorMessage()Z $  SourceFileEGFPreferencePage.java InnerClassesConsoleIntegerFieldEditor! Z*+ *,-  ?>* 3* FG  A* *#O PR %&' ( Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/preferences/EGFPreferencePage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7037 Text-content-md5: 736d4d84155f7158dd71ff420a08dfe2 Text-content-sha1: 01e2d19235110ec591243171cf464bc74e186a20 Content-length: 7096 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&5org/eclipse/egf/console/preferences/EGFPreferencePage6org/eclipse/jface/preference/FieldEditorPreferencePage'org/eclipse/ui/IWorkbenchPreferencePage _wrapEditor9Lorg/eclipse/egf/console/preferences/BooleanFieldEditor2; _widthEditorQLorg/eclipse/egf/console/preferences/EGFPreferencePage$ConsoleIntegerFieldEditor;_debugColorEditor/Lorg/eclipse/jface/preference/ColorFieldEditor;_errorColorEditor_infoColorEditor_warningColorEditor_backgroundColorEditor_showOnMessage_restrictOutput_highWaterMark()VCode  (I)V    ! ,org/eclipse/egf/console/l10n/ConsoleMessages "#ConsolePreferencePage_GeneralLjava/lang/String; % &'setDescription(Ljava/lang/String;)V )+*(org/eclipse/egf/console/EGFConsolePlugin ,- getDefault,()Lorg/eclipse/egf/console/EGFConsolePlugin; )/ 01getPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore; 3 45setPreferenceStore2(Lorg/eclipse/jface/preference/IPreferenceStore;)VLineNumberTableLocalVariableTablethis7Lorg/eclipse/egf/console/preferences/EGFPreferencePage;canClearErrorMessage()Z =?>Oorg/eclipse/egf/console/preferences/EGFPreferencePage$ConsoleIntegerFieldEditor @;isValid B  createColorFieldEditorx(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/jface/preference/ColorFieldEditor;F-org/eclipse/jface/preference/ColorFieldEditor EH IJ(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)V EK LMsetPage)(Lorg/eclipse/jface/dialogs/DialogPage;)V / E3preferenceNamelabelparent#Lorg/eclipse/swt/widgets/Composite;editorupdateWidthEditor W XYgetFieldEditorParent%()Lorg/eclipse/swt/widgets/Composite; []\7org/eclipse/egf/console/preferences/BooleanFieldEditor2 ^_getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; =a bcgetTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; egforg/eclipse/swt/widgets/Button h; getSelection jlkorg/eclipse/swt/widgets/Text mn setEnabled(Z)V =p qrgetLabelControlD(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Label; tluorg/eclipse/swt/widgets/Labelb Lorg/eclipse/swt/widgets/Button;updateBufferSizeEditor z createFieldEditors}%org.eclipse.egf.console.internal.wrap  #ConsolePreferencePage_Wrap_text [ K(Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/swt/widgets/Composite;)V  addField-(Lorg/eclipse/jface/preference/FieldEditor;)V&org.eclipse.egf.console.internal.width  #+ConsolePreferencePage_Maximum_Console_width = (Lorg/eclipse/egf/console/preferences/EGFPreferencePage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;)V =  setValidRange(II)V  #)ConsolePreferencePage_Error_Console_width = 'setErrorMessage7org/eclipse/egf/console/preferences/EGFPreferencePage$1 :(Lorg/eclipse/egf/console/preferences/EGFPreferencePage;)V e addSelectionListener-(Lorg/eclipse/swt/events/SelectionListener;)V,org.eclipse.egf.console.internal.limitOutput  #!ConsolePreferencePage_limitOutput.org.eclipse.egf.console.internal.highWaterMark  ##ConsolePreferencePage_highWaterMark  #)ConsolePreferencePage_Console_buffer_size7org/eclipse/egf/console/preferences/EGFPreferencePage$2 .org.eclipse.egf.console.internal.showOnMessage  ##ConsolePreferencePage_ShowOnMessage  +org.eclipse.egf.console.internal.debugColor  #ConsolePreferencePage_Debug  CD  +org.eclipse.egf.console.internal.errorColor  #ConsolePreferencePage_Error  1org.eclipse.egf.console.internal.informationColor  #!ConsolePreferencePage_Information   -org.eclipse.egf.console.internal.warningColor  #ConsolePreferencePage_Warning   0org.eclipse.egf.console.internal.backgroundColor  #%ConsolePreferencePage_BackgroundColor    org/eclipse/jface/dialogs/Dialog applyDialogFont$(Lorg/eclipse/swt/widgets/Control;)V -org/eclipse/jface/preference/IPreferenceStore addPropertyChangeListener3(Lorg/eclipse/jface/util/IPropertyChangeListener;)Vinit(Lorg/eclipse/ui/IWorkbench;)V workbenchLorg/eclipse/ui/IWorkbench; initialize    U  xperformDefaults  propertyChange/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V *org/eclipse/jface/util/PropertyChangeEvent  getProperty()Ljava/lang/String;field_editor_is_valid java/lang/String  equals(Ljava/lang/Object;)Z     getNewValue()Ljava/lang/Object;java/lang/Boolean  ; booleanValue    getSource = refreshValidState   checkState  event,Lorg/eclipse/jface/util/PropertyChangeEvent;newValueZ SourceFileEGFPreferencePage.java InnerClassesConsoleIntegerFieldEditor!        _!****$*(.26W" $XY Z7 !89:;J*<*A<6]^`7 89CD|EY+,-G:*J*NO6g hij7489P#Q#RS T Uq1**VZL**V`+di**Vo+ds6q rs0t7189 %vwxq1*y*VZL*A*V`+di*A*Vo+ds6{ |}0~7189 %vw{qw*[Y|~*V***=Y**V*P*****VZY**[Y*Vy**y*=Y**VA**A*A*A*y*VZY**[Y*V*****V**¶**IJ*V**ɶ**˲*V**ж**Ҳ*V**׶**ٲ*V**޶*V*N*652=EOZbez !%+357:>DLNPSW]elv7 w8956789C ***6 7  89C ***6 7  89c+S+ =<*+* **A+*A *A**+*+6. .5GNU]b7 c89cE !"#$=% Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/util Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/util/ConsoleUtil$EclipseUtil.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1206 Text-content-md5: 335ebc37416eb7820bfb07cf0f49e96a Text-content-sha1: c7517b4812a005a973e15dd8ca3be425e3b3f4de Content-length: 1265 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 104org/eclipse/egf/console/util/ConsoleUtil$EclipseUtiljava/lang/Object FILE_CLASSLjava/lang/Class; SignatureLjava/lang/Class<*>;URI_EDITOR_INPUT_CLASS()VCode org/eclipse/core/resources/IFile  org/eclipse/ui/IURIEditorInput  java/lang/ThrowableLineNumberTableLocalVariableTable fileClassuriEditorInputClassLocalVariableTypeTable   this6Lorg/eclipse/egf/console/util/ConsoleUtil$EclipseUtil;createFileEditorInputA(Lorg/eclipse/core/resources/IFile;)Lorg/eclipse/ui/IEditorInput;$#org/eclipse/ui/part/FileEditorInput #& '%(Lorg/eclipse/core/resources/IFile;)Vfile"Lorg/eclipse/core/resources/IFile; SourceFileConsoleUtil.java InnerClasses.(org/eclipse/egf/console/util/ConsoleUtil EclipseUtil    K KL*KKL*&        /*  !" 3 #Y*%  ()*+, -/ Node-path: plugins/org.eclipse.egf.console/bin/org/eclipse/egf/console/util/ConsoleUtil.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5651 Text-content-md5: 9b86d107c8e040de69da0f22b785b4f0 Text-content-sha1: f0fec3220a73a38e6f85caca29b8a93cbece9afa Content-length: 5710 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(org/eclipse/egf/console/util/ConsoleUtiljava/lang/Object()VCode  LineNumberTableLocalVariableTablethis*Lorg/eclipse/egf/console/util/ConsoleUtil;setSelectionToViewer@(Lorg/eclipse/ui/IEditorPart;Lorg/eclipse/emf/common/util/URI;)V2org/eclipse/emf/edit/domain/IEditingDomainProvider org/eclipse/emf/common/util/URI  hasFragment()Z  getEditingDomain-()Lorg/eclipse/emf/edit/domain/EditingDomain; )org/eclipse/emf/edit/domain/EditingDomain !getResourceSet.()Lorg/eclipse/emf/ecore/resource/ResourceSet; #%$*org/eclipse/emf/ecore/resource/ResourceSet &' getEObjectC(Lorg/eclipse/emf/common/util/URI;Z)Lorg/eclipse/emf/ecore/EObject;)java/lang/Class+java.util.Collection (- ./forName%(Ljava/lang/String;)Ljava/lang/Class; 1 23getClass()Ljava/lang/Class; (6 78 getMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; :<;java/util/Collections => singletonList$(Ljava/lang/Object;)Ljava/util/List; @BAjava/lang/reflect/Method CDinvoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; FHG(org/eclipse/egf/console/EGFConsolePlugin IJ getDefault,()Lorg/eclipse/egf/console/EGFConsolePlugin;L+IEditingDomainProvider.setSelectionToViewer FN OPlog*(Ljava/lang/String;Ljava/lang/Throwable;)V FR S isDebugging FU VW getConsole#()Lorg/eclipse/egf/console/Console; Y[Zorg/eclipse/egf/console/Console \P logThrowable^java/lang/ExceptionpartLorg/eclipse/ui/IEditorPart;uri!Lorg/eclipse/emf/common/util/URI; editingDomain+Lorg/eclipse/emf/edit/domain/EditingDomain;eObjectLorg/eclipse/emf/ecore/EObject;types[Ljava/lang/Class;methodLjava/lang/reflect/Method;params[Ljava/lang/Object;eLjava/lang/Exception; openEditor=(Lorg/eclipse/emf/ecore/EObject;)Lorg/eclipse/ui/IEditorPart; Exceptionss org/eclipse/ui/PartInitException uwvorg/eclipse/emf/ecore/EObject xy eResource+()Lorg/eclipse/emf/ecore/resource/Resource; {}|'org/eclipse/emf/ecore/resource/Resource ~getURI#()Lorg/eclipse/emf/common/util/URI;  o?(Lorg/eclipse/emf/common/util/URI;)Lorg/eclipse/ui/IEditorPart;resource)Lorg/eclipse/emf/ecore/resource/Resource;computeEditorId&(Ljava/lang/String;)Ljava/lang/String; org/eclipse/ui/PlatformUI  getWorkbench()Lorg/eclipse/ui/IWorkbench; org/eclipse/ui/IWorkbench getEditorRegistry"()Lorg/eclipse/ui/IEditorRegistry; org/eclipse/ui/IEditorRegistry getDefaultEditor6(Ljava/lang/String;)Lorg/eclipse/ui/IEditorDescriptor;  org/eclipse/ui/IEditorDescriptor getId()Ljava/lang/String; org.eclipse.ui.DefaultTextEditor fileName_pLjava/lang/String; workbenchLorg/eclipse/ui/IWorkbench;editorRegistry Lorg/eclipse/ui/IEditorRegistry; descriptor"Lorg/eclipse/ui/IEditorDescriptor;  isPlatformResource  toPlatformString(Z)Ljava/lang/String; *org/eclipse/core/resources/ResourcesPlugin  getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; %org/eclipse/core/resources/IWorkspace getRoot-()Lorg/eclipse/core/resources/IWorkspaceRoot;org/eclipse/core/runtime/Path (Ljava/lang/String;)V )org/eclipse/core/resources/IWorkspaceRoot  findMemberH(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IResource; org/eclipse/core/resources/IFile 4org/eclipse/egf/console/util/ConsoleUtil$EclipseUtil createFileEditorInputA(Lorg/eclipse/core/resources/IFile;)Lorg/eclipse/ui/IEditorInput;  o\(Lorg/eclipse/ui/IEditorInput;Lorg/eclipse/emf/common/util/URI;)Lorg/eclipse/ui/IEditorPart;(org/eclipse/emf/common/ui/URIEditorInput   trimFragment $(Lorg/eclipse/emf/common/util/URI;)V editorInputLorg/eclipse/ui/IEditorInput;pathworkspaceResource&Lorg/eclipse/core/resources/IResource; getActiveWorkbenchWindow#()Lorg/eclipse/ui/IWorkbenchWindow; org/eclipse/ui/IWorkbenchWindow  getActivePage!()Lorg/eclipse/ui/IWorkbenchPage;   lastSegment  org/eclipse/ui/IWorkbenchPage oM(Lorg/eclipse/ui/IEditorInput;Ljava/lang/String;)Lorg/eclipse/ui/IEditorPart;inputpageLorg/eclipse/ui/IWorkbenchPage; SourceFileConsoleUtil.java InnerClasses EclipseUtil!/* /  J* *+ +*M,+"N-(Y*,S:*045:;Y-9S:*?W":EKMEQ TKX5kn] J2 3 568"90:4;5>C?P@UAbBnDpEzFGJ R_`ab"lcd0^efC+ghPijb klpmn opqr%**tL++zM,, & QRT UVXYZ \ %ef  ab }!L+M,*N- - `a bcdf *!  oqrR*L*4*MY,N-Ǚ!-ǸL+*ϰY*Է*ϰ . noqrst+u2v:w@zP| *RabJ++ oqr,*)+%M,N-*+Զ  * *,,ab   Node-path: plugins/org.eclipse.egf.console/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 650 Text-content-md5: 2656a14f3fa0e025682b510dfa4c93e3 Text-content-sha1: 7e84658913b8dc21e3383f9aeeb91eec2627e4b2 Content-length: 695 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2000, 2009 IBM Corporation and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # IBM Corporation - initial API and implementation # Thales Corporate Services S.A.S ## source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.xml,\ plugin.properties,\ icons/,\ .options src.includes = about.html Node-path: plugins/org.eclipse.egf.console/icons Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/icons/dlcl16 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/icons/dlcl16/close_console.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 364 Text-content-md5: 9fe5717c2d4a5c758c90ec6603c8384e Text-content-sha1: 4e07008c6c967cca743eaf78fff79bac3e4967bb Content-length: 423 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89aȿǾ!+,fH#&lV0I$f.h0 Z ,h+!~ #pr~ $EB^%P &%& `'# #(  )"*")ED*!  "~IFQIA; Node-path: plugins/org.eclipse.egf.console/icons/elcl16 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/icons/elcl16/close_console.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 595 Text-content-md5: f9a1bb71505a23135a80db6b0b38d638 Text-content-sha1: 56541ed75102f0e6a8830e9c259f27a2f26c3bca Content-length: 654 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a©ƚˢϨӬݚtwwz}ǿǵqųsŴs±uzȏԲhԲiڽ|ղi~~~tttsssrrrqqqooonnndddccc^^^]]]YYYUUUSSSRRRQQQPPPOOONNN!U,U5U5=56% >?7U-$ ;><8/#.9"0132 !4: EJDELEU+ʠK@CDAKU,EM@KBM*ˢNIE<P% jP )Hx3A Rنd 'DEh3"ǓU; Node-path: plugins/org.eclipse.egf.console/icons/eview16 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/icons/eview16/console_view.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 992 Text-content-md5: 37fb0a868be90dc8e9901a56dcef0c2c Text-content-sha1: 6e6c435985e0c6097e5abc135ee8a8a9de6b6e0d Content-length: 1051 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89aw!9,2i3j3n5r5r6w9~0=\#3e-?t2@_4Ca9Gf=LjW+ek5}BRpFWtJ\wO`{N`|O`|:<?ACDFG%K7M9O4W?Wr8}>ADHLQV\cwĻƛt| 9|9| 9|9AYA4/ @||h@||AAZT 8ARrr0A> AGAA 8AADWAA?T> n-o9RrmlHRrmhj3n3r5r5w6~9\=0e3#t?-_@2aC4fG9jL=e+W}5kpRBtWFw\J{`O|`N|`O:<?ACDFGK%M7O9W4W?8r>}ADHLQV\cwԛtpGAYAh||@5\95\9s@!r(pÇ8(̱A1*0Q;tC#G!Dha".pมSL /@X)K"@0B6jԐ"EVU(4 Ō4`xY P0am-X<{Bu0ă&Lp0Ѯ%ȚmQb  D\3 AbC ,t; Node-path: plugins/org.eclipse.egf.console/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 679 Text-content-md5: c6a45ea15546b7bc9cbf59ec997e93fd Text-content-sha1: 3610b0ec479a4a40cd4e342776f1daac47db4f73 Content-length: 724 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2000, 2009 IBM Corporation and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # IBM Corporation - initial API and implementation # Thales Corporate Services S.A.S ## pluginName=EGF Console (Incubation) providerName=Eclipse Modeling Project egf.preferences.keyword.general=EGF Console=Console EGF=EGF consolePresentation.label=EGF ConsoleFont.description=The font used by EGF. ConsoleFont.label=Console font Node-path: plugins/org.eclipse.egf.console/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2576 Text-content-md5: a4bda7131363121619938add97491b36 Text-content-sha1: d1922fb90251a83b629575de5c793f622aa103c0 Content-length: 2621 K 13 svn:mime-type V 10 text/plain PROPS-END %ConsoleFont.description Node-path: plugins/org.eclipse.egf.console/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/ColorManager.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1413 Text-content-md5: abe98b81cc6f165cc6f8801bb5bf7247 Text-content-sha1: 8e2ffdf7c6520b119972027a531c60ba54427a3e Content-length: 1458 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; /** * Generic color manager. */ public class ColorManager { private static ColorManager fgColorManager; protected Map fColorTable = new HashMap(10); private ColorManager() { // Nothing to do } public static ColorManager getDefault() { if (fgColorManager == null) { fgColorManager = new ColorManager(); } return fgColorManager; } public Color getColor(RGB rgb) { Color color = fColorTable.get(rgb); if (color == null) { color = new Color(Display.getCurrent(), rgb); fColorTable.put(rgb, color); } return color; } public void dispose() { Iterator e = fColorTable.values().iterator(); while (e.hasNext()) { e.next().dispose(); } } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/Console.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 18130 Text-content-md5: 9af58880173c72c66ccb012dc239f314 Text-content-sha1: 982f2e3300401e281865a5b683e8a46d6bcdf0bb Content-length: 18175 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.MessageConsole; import org.eclipse.ui.console.MessageConsoleStream; import org.eclipse.egf.console.internal.ConsoleDocument; import org.eclipse.egf.console.internal.ConsoleFactory; import org.eclipse.egf.console.internal.IEGFConsoleConstants; import org.eclipse.egf.console.l10n.ConsoleMessages; import com.ibm.icu.text.DateFormat; import com.ibm.icu.text.SimpleDateFormat; /** * Console that shows the output of CVS commands. It is shown as a page in the * generic console view. It supports coloring for message, command, and error * lines in addition the font can be configured. * * @since 3.0 */ public class Console extends MessageConsole implements IPropertyChangeListener { private Color _debugColor; private Color _errorColor; private Color _infoColor; private Color _warningColor; // streams for each command type - each stream has its own color private MessageConsoleStream _debugStream; private MessageConsoleStream _errorStream; private MessageConsoleStream _infoStream; private MessageConsoleStream _warningStream; private boolean _showOnMessage; private ConsoleDocument _document; private IConsoleManager _consoleManager; // format for timings printed to console @SuppressWarnings("unused") private static final DateFormat TIME_FORMAT; static { DateFormat format; try { format = new SimpleDateFormat(ConsoleMessages.Console_resultTimeFormat); } catch (RuntimeException e) { // This can happen if the bundle contains an invalid format // format = new SimpleDateFormat("'(took 'm:ss.SSS')')"); //$NON-NLS-1$ } TIME_FORMAT = format; } // Indicates whether the console is visible in the Console view private boolean _visible = false; // Indicates whether the console's streams have been initialized private boolean _initialized = false; /* * Constant used for indenting error status printing */ private static final String NESTING = " "; //$NON-NLS-1$ public class MyLifecycle implements org.eclipse.ui.console.IConsoleListener { public void consolesAdded(IConsole[] consoles) { for (int i = 0; i < consoles.length; i++) { IConsole console = consoles[i]; if (console == Console.this) { init(); } } } public void consolesRemoved(IConsole[] consoles) { for (int i = 0; i < consoles.length; i++) { IConsole console = consoles[i]; if (console == Console.this) { ConsolePlugin.getDefault().getConsoleManager().removeConsoleListener(this); dispose(); } } } } /** * Constructor initializes preferences and colors but doesn't create the * console page yet. */ public Console() { super(ConsoleMessages.EGF_Console, EGFConsolePlugin.getDefault().getImageDescriptor(IEGFConsoleConstants.IMG_SEARCH_CONSOLE)); setType("EGF"); //$NON-NLS-1$ _showOnMessage = EGFConsolePlugin.getDefault().getPreferenceStore().getBoolean(IEGFConsoleConstants.CONSOLE_SHOW_ON_MESSAGE); _document = new ConsoleDocument(); _consoleManager = ConsolePlugin.getDefault().getConsoleManager(); EGFConsolePlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); } public MessageConsoleStream getDebugStream() { return _debugStream; } public MessageConsoleStream getErrorStream() { return _errorStream; } public MessageConsoleStream getInfoStream() { return _infoStream; } public MessageConsoleStream getWarningStream() { return _warningStream; } public void logDebug(String line) { logDebug(line, 0); } public void logDebug(String line, int nesting) { if (_showOnMessage) { bringConsoleToFront(); } appendLine(ConsoleDocument.DEBUG, line, nesting); } public void logError(String line) { logError(line, 0); } public void logError(String line, int nesting) { if (_showOnMessage) { bringConsoleToFront(); } appendLine(ConsoleDocument.ERROR, line, nesting); } public void logThrowable(String message, Throwable throwable) { logThrowable(message, throwable, 0); } public void logThrowable(String message, Throwable throwable, int nesting) { logStatus(EGFConsolePlugin.getDefault().newErrorStatus(message, throwable), nesting); } public void logStatus(IStatus status) { logStatus(status, 0); } public void logStatus(IStatus status, int nesting) { if (_showOnMessage) { bringConsoleToFront(); } outputStatus(status, nesting); // In case of IStatus.ERROR, we print a final Message if (status != null && status.getSeverity() == IStatus.ERROR) { logError(ConsoleMessages.Console_see_your_log_file, nesting); } } public void logInfo(String line) { logInfo(line, 0); } public void logInfo(String line, int nesting) { if (_showOnMessage) { bringConsoleToFront(); } appendLine(ConsoleDocument.INFO, line, nesting); } public void logWarning(String line) { logWarning(line, 0); } public void logWarning(String line, int nesting) { appendLine(ConsoleDocument.WARNING, line, nesting); } private void bringConsoleToFront() { if (_visible == false) { _consoleManager.addConsoles(new IConsole []{ this }); } _consoleManager.showConsoleView(this); } /* * (non-Javadoc) * * @see org.eclipse.ui.console.AbstractConsole#init() */ @Override protected void init() { // Called when console is added to the console view super.init(); initLimitOutput(); initWrapSetting(); // Ensure that initialization occurs in the ui thread EGFConsolePlugin.getWorkbenchDisplay().asyncExec(new Runnable() { public void run() { JFaceResources.getFontRegistry().addListener(Console.this); initializeStreams(); dump(); } }); } private void initWrapSetting() { IPreferenceStore store = EGFConsolePlugin.getDefault().getPreferenceStore(); if (store.getBoolean(IEGFConsoleConstants.CONSOLE_WRAP)) { setConsoleWidth(store.getInt(IEGFConsoleConstants.CONSOLE_WIDTH)); } else { setConsoleWidth(-1); } } private void initLimitOutput() { IPreferenceStore store = EGFConsolePlugin.getDefault().getPreferenceStore(); if (store.getBoolean(IEGFConsoleConstants.CONSOLE_LIMIT_OUTPUT)) { int lowWater = store.getInt(IEGFConsoleConstants.CONSOLE_LOW_WATER_MARK); int highWater = store.getInt(IEGFConsoleConstants.CONSOLE_HIGH_WATER_MARK); setWaterMarks(lowWater, highWater); } else { setWaterMarks(-1, 0); } } /* * Initialize thre streams of the console. Must be called from the UI thread. */ protected void initializeStreams() { synchronized (_document) { if (_initialized == false) { _debugStream = newMessageStream(); _errorStream = newMessageStream(); _infoStream = newMessageStream(); _warningStream = newMessageStream(); // install colors _debugColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_DEBUG_COLOR); _debugStream.setColor(_debugColor); _errorColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_ERROR_COLOR); _errorStream.setColor(_errorColor); _infoColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_INFO_COLOR); _infoStream.setColor(_infoColor); _warningColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_WARNING_COLOR); _warningStream.setColor(_warningColor); // install font Font f = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getFontRegistry().get(IEGFConsoleConstants.CONSOLE_FONT); setFont(f); _initialized = true; } } } protected void dump() { synchronized (_document) { _visible = true; ConsoleDocument.ConsoleLine[] lines = _document.getLines(); for (int i = 0; i < lines.length; i++) { ConsoleDocument.ConsoleLine line = lines[i]; appendLine(line._type, line._line, line._nesting); } _document.clear(); } } private void appendLine(int type, String line, int nesting) { final StringBuffer buffer = new StringBuffer(); for (int i = 0; i < nesting; i++) { buffer.append(NESTING); } if (_showOnMessage) { bringConsoleToFront(); } showConsole(); synchronized (_document) { if (_visible) { switch (type) { case ConsoleDocument.DEBUG: buffer.append(line); getDebugStream().println(buffer.toString()); break; case ConsoleDocument.ERROR: buffer.append(line); getErrorStream().println(buffer.toString()); break; case ConsoleDocument.INFO: buffer.append(line); getInfoStream().println(buffer.toString()); break; case ConsoleDocument.WARNING: buffer.append(line); getWarningStream().println(buffer.toString()); break; } } else { _document.appendConsoleLine(type, line, nesting); } } } private void showConsole() { show(false); } /* * (non-Javadoc) * * @see org.eclipse.ui.console.MessageConsole#dispose() */ @Override protected void dispose() { // Here we can't call super.dispose() because we actually want the // partitioner to remain // connected, but we won't show lines until the console is added to the // console manager // again. // Called when console is removed from the console view synchronized (_document) { _visible = false; JFaceResources.getFontRegistry().removeListener(this); } } /** * Clean-up created fonts. */ public void shutdown() { // Call super dispose because we want the partitioner to be // disconnected. super.dispose(); if (_debugColor != null) { _debugColor.dispose(); } if (_errorColor != null) { _errorColor.dispose(); } if (_infoColor != null) { _infoColor.dispose(); } if (_warningColor != null) { _warningColor.dispose(); } EGFConsolePlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); } private void outputStatus(IStatus status, int nesting) { // Nothing to output if (status == null) { return; } // Current Status Management // Output the Current Status Message outputStatusMessage(status, nesting); // MultiStatus Management if (status.isMultiStatus()) { IStatus[] children = status.getChildren(); for (int i = 0; i < children.length; i++) { outputStatus(children[i], nesting + 1); } } // Manage standard InvocationTargetException and CoreException if (status.getException() instanceof InvocationTargetException) { if (((InvocationTargetException) status.getException()).getTargetException() instanceof CoreException) { outputStatus(((CoreException) (((InvocationTargetException) status.getException()).getTargetException())).getStatus(), nesting + 1); } } else if (status.getException() instanceof CoreException) { outputStatus(((CoreException) status.getException()).getStatus(), nesting + 1); } } private void outputStatusMessage(IStatus status, int nesting) { // StringBuffer and Indent Management StringBuffer buffer = new StringBuffer(); for (int i = 0; i < nesting; i++) { buffer.append(NESTING); } // First we print the status message if applicable if (status.getMessage() != null && status.getMessage().trim().length() > 0) { if (status.getException() == null || status.getException() != null && status.getMessage().equals(status.getException().toString()) == false) { buffer.append(status.getMessage()); if (status.getSeverity() == IStatus.ERROR) { appendLine(ConsoleDocument.ERROR, buffer.toString(), 0); } else if (status.getSeverity() == IStatus.WARNING) { appendLine(ConsoleDocument.WARNING, buffer.toString(), 0); } else { appendLine(ConsoleDocument.INFO, buffer.toString(), 0); } buffer = new StringBuffer(); for (int i = 0; i < nesting + 1; i++) { buffer.append(NESTING); } } } // Then we process the inner Exception if necessary if (status.getException() != null) { buffer.append(messageLineForStatus(status)); if (status.getSeverity() == IStatus.ERROR) { appendLine(ConsoleDocument.ERROR, buffer.toString(), 0); } else if (status.getSeverity() == IStatus.WARNING) { appendLine(ConsoleDocument.WARNING, buffer.toString(), 0); } else { appendLine(ConsoleDocument.INFO, buffer.toString(), 0); } } } /* * (non-Javadoc) * * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ public void propertyChange(PropertyChangeEvent event) { String property = event.getProperty(); // colors if (_visible) { if (property.equals( IEGFConsoleConstants.CONSOLE_WRAP) || property.equals(IEGFConsoleConstants.CONSOLE_WIDTH) ) { initWrapSetting(); } else if ( property.equals(IEGFConsoleConstants.CONSOLE_LIMIT_OUTPUT) || property.equals(IEGFConsoleConstants.CONSOLE_HIGH_WATER_MARK) || property.equals(IEGFConsoleConstants.CONSOLE_LOW_WATER_MARK) ) { initLimitOutput(); } else if (property.equals(IEGFConsoleConstants.CONSOLE_DEBUG_COLOR)) { Color newColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_DEBUG_COLOR); _debugStream.setColor(newColor); _debugColor.dispose(); _debugColor = newColor; } else if (property.equals(IEGFConsoleConstants.CONSOLE_ERROR_COLOR)) { Color newColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_ERROR_COLOR); _errorStream.setColor(newColor); _errorColor.dispose(); _errorColor = newColor; } else if (property.equals(IEGFConsoleConstants.CONSOLE_INFO_COLOR)) { Color newColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_INFO_COLOR); _infoStream.setColor(newColor); _infoColor.dispose(); _infoColor = newColor; } else if (property.equals(IEGFConsoleConstants.CONSOLE_WARNING_COLOR)) { Color newColor = createColor(EGFConsolePlugin.getWorkbenchDisplay(), IEGFConsoleConstants.CONSOLE_WARNING_COLOR); _warningStream.setColor(newColor); _warningColor.dispose(); _warningColor = newColor; } else if (property.equals(IEGFConsoleConstants.CONSOLE_FONT)) { setFont(JFaceResources.getFont(IEGFConsoleConstants.CONSOLE_FONT)); } else if (property.equals(IEGFConsoleConstants.CONSOLE_BACKGROUND_COLOR)) { setBackground(EGFConsolePlugin.getDefault().getPreferenceColor(IEGFConsoleConstants.CONSOLE_BACKGROUND_COLOR)); } } if (property.equals(IEGFConsoleConstants.CONSOLE_SHOW_ON_MESSAGE)) { Object value = event.getNewValue(); if (value instanceof String) { _showOnMessage = Boolean.valueOf((String) value).booleanValue(); } else { _showOnMessage = ((Boolean) value).booleanValue(); } } } private String messageLineForStatus(IStatus status) { if (status.getSeverity() == IStatus.ERROR) { return NLS.bind(ConsoleMessages.Console_error, new String []{ status.getException().toString() }); } else if (status.getSeverity() == IStatus.WARNING) { return NLS.bind(ConsoleMessages.Console_warning, new String []{ status.getException().toString() }); } else if (status.getSeverity() == IStatus.INFO) { return NLS.bind(ConsoleMessages.Console_info, new String []{ status.getException().toString() }); } return status.getMessage(); } /** * Returns a color instance based on data from a preference field. */ private Color createColor(Display display, String preference) { RGB rgb = PreferenceConverter.getColor(EGFConsolePlugin.getDefault().getPreferenceStore(), preference); return new Color(display, rgb); } /** * Show the console. * * @param showNoMatterWhat * ignore preferences if true */ public void show(boolean showNoMatterWhat) { if (showNoMatterWhat || _showOnMessage) { if (_visible == false) { ConsoleFactory.showConsole(); } else { _consoleManager.showConsoleView(this); } } } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/EGFConsolePlugin.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2325 Text-content-md5: f700a625bb964f8814ea4e4a0ee9f4f6 Text-content-sha1: d9ce42ffd9644e3cc7195fc7beda09337f594656 Content-length: 2370 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console; import org.osgi.framework.BundleContext; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.swt.graphics.Color; import org.eclipse.egf.common.ui.activator.AbstractUIActivator; /** * @author Xavier Maysonnave * */ public class EGFConsolePlugin extends AbstractUIActivator { private static EGFConsolePlugin __plugin; private Console _console; /** * The constructor */ public EGFConsolePlugin() { super(); } public Color getPreferenceColor(String type) { return ColorManager.getDefault().getColor(PreferenceConverter.getColor(getDefault().getPreferenceStore(), type)); } /** * @return the EGF console */ public static Console getConsole() { return getDefault().getInnerConsole(); } protected Console getInnerConsole() { return _console; } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context) throws Exception { super.start(context); __plugin = this; try { _console = new Console(); } catch (RuntimeException e) { // Don't let the console bring down UI log(IStatus.ERROR, "Errors occurred starting the console", e); //$NON-NLS-1$ } } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext context) throws Exception { ColorManager.getDefault().dispose(); __plugin = null; super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static EGFConsolePlugin getDefault() { return __plugin; } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal/ConsoleDocument.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2724 Text-content-md5: 9f27b71da778260809589985b71aa826 Text-content-sha1: 18c38213a70f32913b0cc5b016978e7bc281d52f Content-length: 2769 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.internal; /** * Simple circular buffer that stores a fix number of lines. */ public class ConsoleDocument { public static final int DEBUG = 0; // debug text public static final int ERROR = 1; // error received public static final int INFO = 2; // message received public static final int WARNING = 3; // error received public static final int DELIMITER = 4; // delimiter text between runs private int[] _lineTypes; private String[] _lines; private int[] _lineNestings; private int _writeIndex = 0; private int _readIndex = 0; private static final int BUFFER_SIZE = 200; public static class ConsoleLine { public String _line; public int _type; public int _nesting; ConsoleLine(String line, int type, int nesting) { _line = line; _type = type; _nesting = nesting; } } /** * Creates an empty console document. */ public ConsoleDocument() { // Nothing to do } /** * Clears the console document. */ public void clear() { _lineTypes = null; _lines = null; _writeIndex = 0; _readIndex = 0; } /** * Appends a line of the specified type to the end of the console. */ public void appendConsoleLine(int type, String line, int nesting) { if (_lines == null) { _lines = new String [BUFFER_SIZE]; _lineTypes = new int [BUFFER_SIZE]; _lineNestings = new int [BUFFER_SIZE]; } _lines[_writeIndex] = line; _lineTypes[_writeIndex] = type; _lineNestings[_writeIndex] = nesting; if (++_writeIndex >= BUFFER_SIZE) { _writeIndex = 0; } if (_writeIndex == _readIndex) { if (++_readIndex >= BUFFER_SIZE) { _readIndex = 0; } } } public ConsoleLine[] getLines() { if (isEmpty()) { return new ConsoleLine [0]; } ConsoleLine[] docLines = new ConsoleLine [_readIndex > _writeIndex ? BUFFER_SIZE : _writeIndex]; int index = _readIndex; for (int i = 0; i < docLines.length; i++) { docLines[i] = new ConsoleLine(_lines[index], _lineTypes[index], _lineNestings[index]); if (++index >= BUFFER_SIZE) { index = 0; } } return docLines; } public boolean isEmpty() { return _writeIndex == _readIndex; } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal/ConsoleFactory.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1820 Text-content-md5: 37fb94d8a7178c81d982566381294609 Text-content-sha1: a5e9462f06619a09d07b05b0a8ac13806dea6d66 Content-length: 1865 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.internal; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleFactory; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.egf.console.Console; import org.eclipse.egf.console.EGFConsolePlugin; public class ConsoleFactory implements IConsoleFactory { public ConsoleFactory() { // Nothing to do } public void openConsole() { showConsole(); } public static void showConsole() { Console console = EGFConsolePlugin.getConsole(); if (console != null) { IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); IConsole[] existing = manager.getConsoles(); boolean exists = false; for (int i = 0; i < existing.length; i++) { if (console == existing[i]) { exists = true; } } if (!exists) { manager.addConsoles(new IConsole []{ console }); } manager.showConsoleView(console); } } public static void closeConsole() { IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); Console console = EGFConsolePlugin.getConsole(); if (console != null) { manager.removeConsoles(new IConsole []{ console }); ConsolePlugin.getDefault().getConsoleManager().addConsoleListener(console.new MyLifecycle()); } } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal/ConsoleLineNotifier.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4307 Text-content-md5: aa276e520d24f9f5fe0a9ee7d4011aa5 Text-content-sha1: 6b0a11af16dedce4c647b4436de0ce14be57941e Content-length: 4352 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.internal; import java.util.StringTokenizer; import org.eclipse.jface.text.BadLocationException; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PartInitException; import org.eclipse.ui.console.IHyperlink; import org.eclipse.ui.console.IPatternMatchListener; import org.eclipse.ui.console.PatternMatchEvent; import org.eclipse.ui.console.TextConsole; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.edit.domain.IEditingDomainProvider; import org.eclipse.egf.console.Console; import org.eclipse.egf.console.EGFConsolePlugin; import org.eclipse.egf.console.util.ConsoleUtil; /** * Tracks text appended to the console and notifies listeners in terms of whole * lines. */ public class ConsoleLineNotifier implements IPatternMatchListener { /** * The console this notifier is tracking */ private Console _console = null; /* (non-Javadoc) * @see org.eclipse.ui.console.IPatternMatchListenerDelegate#connect(org.eclipse.ui.console.TextConsole) */ public void connect(TextConsole console) { if (console instanceof Console) { _console = (Console) console; } } /* (non-Javadoc) * @see org.eclipse.ui.console.IPatternMatchListener#disconnect() */ public synchronized void disconnect() { _console = null; } /* (non-Javadoc) * @see org.eclipse.ui.console.IPatternMatchListener#matchFound(org.eclipse.ui.console.PatternMatchEvent) */ public void matchFound(PatternMatchEvent event) { try { int offset = event.getOffset(); int length = event.getLength(); String text = _console.getDocument().get(offset, length); // Platform // int index = text.indexOf("platform:/"); //$NON-NLS-1$ if (index != -1) { buildLink(text, offset, length, "platform:/"); //$NON-NLS-1$ return; } // Plugin // index = text.indexOf("plugin:/"); //$NON-NLS-1$ if (index != -1) { buildLink(text, offset, length, "plugin:/"); //$NON-NLS-1$ return; } } catch (BadLocationException e) { // ignore } } private void buildLink(String text, int offset, int length, String type) { try { int index = text.indexOf(type); StringTokenizer tokenizer = new StringTokenizer(text, " "); //$NON-NLS-1$ while (tokenizer.hasMoreElements()) { String elementName = tokenizer.nextToken(); if (elementName.startsWith(type)) { URIHyperlink link = new URIHyperlink(URI.createURI(elementName)); _console.addHyperlink(link, offset + index, elementName.length()); return; } } } catch (Exception e) { // ignore } } /* (non-Javadoc) * @see org.eclipse.ui.console.IPatternMatchListener#getPattern() */ public String getPattern() { return ".*\\r(\\n?)|.*\\n"; //$NON-NLS-1$ } /* (non-Javadoc) * @see org.eclipse.ui.console.IPatternMatchListener#getCompilerFlags() */ public int getCompilerFlags() { return 0; } /* (non-Javadoc) * @see org.eclipse.ui.console.IPatternMatchListener#getLineQualifier() */ public String getLineQualifier() { return "\\n|\\r"; //$NON-NLS-1$ } private static class URIHyperlink implements IHyperlink { private URI _uri; public URIHyperlink(URI uri) { _uri = uri; } public void linkEntered() { // Nothing to do } public void linkExited() { // Nothing to do } public void linkActivated() { try { if (_uri != null) { IEditorPart part = ConsoleUtil.openEditor(_uri); if (part != null && part instanceof IEditingDomainProvider) { ConsoleUtil.setSelectionToViewer(part, _uri); } } } catch (PartInitException e) { EGFConsolePlugin.getDefault().log(e); } } } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal/ConsolePageParticipant.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1383 Text-content-md5: 45201dc1afaa86d3e37ea711adeccea7 Text-content-sha1: 81de72f04d7df56ee29c105db86029aca292c3e2 Content-length: 1428 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.internal; import org.eclipse.ui.IActionBars; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleConstants; import org.eclipse.ui.console.IConsolePageParticipant; import org.eclipse.ui.part.IPageBookViewPage; public class ConsolePageParticipant implements IConsolePageParticipant { private ConsoleRemoveAction consoleRemoveAction; public void init(IPageBookViewPage page, IConsole console) { this.consoleRemoveAction = new ConsoleRemoveAction(); IActionBars bars = page.getSite().getActionBars(); bars.getToolBarManager().appendToGroup(IConsoleConstants.LAUNCH_GROUP, consoleRemoveAction); } public void dispose() { this.consoleRemoveAction = null; } public void activated() { // Nothing to do } public void deactivated() { // Nothing to do } @SuppressWarnings("unchecked") public Object getAdapter(Class adapter) { return null; } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal/ConsolePreferenceInitializer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2995 Text-content-md5: 22789d7ae127479ac192a045f8e3e62f Text-content-sha1: 8ef045e585416c13255f39039f85b35b688aac7d Content-length: 3040 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.internal; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; import org.eclipse.egf.console.EGFConsolePlugin; /** * @author Xavier Maysonnave * */ public class ConsolePreferenceInitializer extends AbstractPreferenceInitializer { public ConsolePreferenceInitializer() { super(); } /* * (non-Javadoc) * * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() */ @Override public void initializeDefaultPreferences() { final IPreferenceStore prefs = EGFConsolePlugin.getDefault().getPreferenceStore(); PreferenceConverter.setDefault(prefs, IEGFConsoleConstants.CONSOLE_ERROR_COLOR, new RGB(255, 0, 0)); PreferenceConverter.setDefault(prefs, IEGFConsoleConstants.CONSOLE_WARNING_COLOR, new RGB(250, 100, 0)); PreferenceConverter.setDefault(prefs, IEGFConsoleConstants.CONSOLE_INFO_COLOR, new RGB(0, 0, 255)); PreferenceConverter.setDefault(prefs, IEGFConsoleConstants.CONSOLE_DEBUG_COLOR, new RGB(0, 0, 0)); prefs.setDefault(IEGFConsoleConstants.CONSOLE_SHOW_ON_MESSAGE, true); prefs.setDefault(IEGFConsoleConstants.CONSOLE_WRAP, false); prefs.setDefault(IEGFConsoleConstants.CONSOLE_WIDTH, 220); prefs.setDefault(IEGFConsoleConstants.CONSOLE_LIMIT_OUTPUT, true); prefs.setDefault(IEGFConsoleConstants.CONSOLE_LOW_WATER_MARK, 8 * 1024); prefs.setDefault(IEGFConsoleConstants.CONSOLE_HIGH_WATER_MARK, 64 * 1024); // can be called in non-UI thread, so we must play safe final Display display = EGFConsolePlugin.getWorkbenchDisplay(); if (display != null) { if (Thread.currentThread().equals(display.getThread())) { PreferenceConverter.setDefault( prefs, IEGFConsoleConstants.CONSOLE_BACKGROUND_COLOR, display.getSystemColor( SWT.COLOR_LIST_BACKGROUND ).getRGB() ); } else { display.asyncExec( new Runnable() { public void run() { PreferenceConverter.setDefault( prefs, IEGFConsoleConstants.CONSOLE_BACKGROUND_COLOR, display.getSystemColor( SWT.COLOR_LIST_BACKGROUND ).getRGB() ); } } ); } } } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal/ConsoleRemoveAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1199 Text-content-md5: f05ea20166aee96a44202b36250f4663 Text-content-sha1: 36f8f65b46c9f28245381dd5e22fff99b0fc8dbe Content-length: 1244 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.internal; import org.eclipse.jface.action.Action; import org.eclipse.egf.console.EGFConsolePlugin; import org.eclipse.egf.console.l10n.ConsoleMessages; public class ConsoleRemoveAction extends Action { public static final String _id = "org.eclipse.egf.console.internal.ConsoleRemoveAction"; //$NON-NLS-1$ public ConsoleRemoveAction() { super(ConsoleMessages.Console_close); setDisabledImageDescriptor(EGFConsolePlugin.getDefault().getImageDescriptor(IEGFConsoleConstants.IMG_DISABLED_CLOSE_CONSOLE)); setImageDescriptor(EGFConsolePlugin.getDefault().getImageDescriptor(IEGFConsoleConstants.IMG_ENABLED_CLOSE_CONSOLE)); setId(_id); } @Override public void run() { ConsoleFactory.closeConsole(); } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/internal/IEGFConsoleConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2216 Text-content-md5: 52b5fa099533d4866ecfba9ed1c8bd1d Text-content-sha1: fa19a930b346fb338d782bd2a7f278bf9d04d351 Content-length: 2261 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.internal; /** * @author Xavier Maysonnave * */ public interface IEGFConsoleConstants { public static final String IMG_SEARCH_CONSOLE = "eview16/console_view.gif"; //$NON-NLS-1$ public static final String IMG_DISABLED_CLOSE_CONSOLE = "dlcl16/close_console.gif"; //$NON-NLS-1$ public static final String IMG_ENABLED_CLOSE_CONSOLE = "elcl16/close_console.gif"; //$NON-NLS-1$ public static final String CONSOLE_WRAP = "org.eclipse.egf.console.internal.wrap"; //$NON-NLS-1$ public static final String CONSOLE_WIDTH = "org.eclipse.egf.console.internal.width"; //$NON-NLS-1$ public static final String CONSOLE_ERROR_COLOR = "org.eclipse.egf.console.internal.errorColor"; //$NON-NLS-1$ public static final String CONSOLE_WARNING_COLOR = "org.eclipse.egf.console.internal.warningColor"; //$NON-NLS-1$ public static final String CONSOLE_INFO_COLOR = "org.eclipse.egf.console.internal.informationColor"; //$NON-NLS-1$ public static final String CONSOLE_DEBUG_COLOR = "org.eclipse.egf.console.internal.debugColor"; //$NON-NLS-1$ public static final String CONSOLE_SHOW_ON_MESSAGE = "org.eclipse.egf.console.internal.showOnMessage"; //$NON-NLS-1$ public static final String CONSOLE_LIMIT_OUTPUT = "org.eclipse.egf.console.internal.limitOutput"; //$NON-NLS-1$ public static final String CONSOLE_LOW_WATER_MARK = "org.eclipse.egf.console.internal.lowWaterMark"; //$NON-NLS-1$ public static final String CONSOLE_HIGH_WATER_MARK = "org.eclipse.egf.console.internal.highWaterMark"; //$NON-NLS-1$ public static final String CONSOLE_BACKGROUND_COLOR = "org.eclipse.egf.console.internal.backgroundColor"; //$NON-NLS-1$ public static final String CONSOLE_FONT = "org.eclipse.egf.console.internal.font"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/l10n Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/l10n/ConsoleMessages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1953 Text-content-md5: 6bd99c83ea2e45462bb44eff6200b6ba Text-content-sha1: a3a00cd6b924436407e0cc4432cfbda5474cd801 Content-length: 1998 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.l10n; import org.eclipse.osgi.util.NLS; public class ConsoleMessages { private static final String BUNDLE_NAME = "org.eclipse.egf.console.l10n.messages"; //$NON-NLS-1$ static { // load message values from bundle file NLS.initializeMessages(BUNDLE_NAME, ConsoleMessages.class); } public static String ConsolePreferencePage_Error; public static String ConsolePreferencePage_Warning; public static String ConsolePreferencePage_Information; public static String ConsolePreferencePage_Debug; public static String ConsolePreferencePage_General; public static String ConsolePreferencePage_ShowOnMessage; public static String ConsolePreferencePage_limitOutput; public static String ConsolePreferencePage_highWaterMark; public static String ConsolePreferencePage_Wrap_text; public static String ConsolePreferencePage_Maximum_Console_width; public static String ConsolePreferencePage_Error_Console_width; public static String ConsolePreferencePage_Console_buffer_size; public static String ConsolePreferencePage_BackgroundColor; public static String Console_resultTimeFormat; public static String Console_close; public static String Console_error; public static String Console_info; public static String Console_warning; public static String Console_see_your_log_file; public static String EGF_Console; } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/l10n/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1455 Text-content-md5: c69e38f79eef5045cb8a39b93bc94776 Text-content-sha1: 8de617988aa2574e4bf799724c3cfccdb0f9c6a7 Content-length: 1500 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2000, 2009 IBM Corporation and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # IBM Corporation - initial API and implementation # Thales Corporate Services S.A.S ## ConsolePreferencePage_General=EGF Console Settings: ConsolePreferencePage_Error=Error Message ConsolePreferencePage_Warning=Warning Message ConsolePreferencePage_Information=Information Message ConsolePreferencePage_Debug=Debug Message ConsolePreferencePage_ShowOnMessage=&Show on Message ConsolePreferencePage_limitOutput=&Limit Output ConsolePreferencePage_highWaterMark=&Buffer Size (Characters): ConsolePreferencePage_Wrap_text=Fixed &width ConsolePreferencePage_Maximum_Console_width=&Maximum character width: ConsolePreferencePage_Error_Console_width=Character width must be between 80 and Integer.MAX_VALUE - 1. ConsolePreferencePage_Console_buffer_size=Buffer size must be between 1000 and Integer.MAX_VALUE - 1. ConsolePreferencePage_BackgroundColor=Back&ground color: Console_resultTimeFormat='(took 'm:ss.SSS')' Console_close=Close Console_error=Error: {0} Console_info=Info: {0} Console_warning=Warning: {0} Console_see_your_log_file=See your Log file for further details. EGF_Console=EGF Console Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/preferences Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/preferences/BooleanFieldEditor2.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1412 Text-content-md5: 3d5038663c9b237a882c69273453589e Text-content-sha1: b26ba4cf9603127f99e88d56cf1ad0f7228ad8d4 Content-length: 1457 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.preferences; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; /** * A boolean field editor that provides access to this editors boolean * button. */ public class BooleanFieldEditor2 extends BooleanFieldEditor { private Button _changeControl; /** * @see BooleanFieldEditor#BooleanFieldEditor(java.lang.String, java.lang.String, int, org.eclipse.swt.widgets.Composite) */ public BooleanFieldEditor2(String name, String labelText, int style, Composite parent) { super(name, labelText, style, parent); } /** * @see org.eclipse.jface.preference.BooleanFieldEditor#getChangeControl(Composite) */ @Override public Button getChangeControl(Composite parent) { if (_changeControl == null) { _changeControl = super.getChangeControl(parent); } return _changeControl; } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/preferences/EGFPreferencePage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9178 Text-content-md5: c9eb4f1792beaab6179096c572087b6e Text-content-sha1: 1d6ec8dc1cd419550dc52f32dd00deca2fb33986 Content-length: 9223 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.egf.console.preferences; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.preference.ColorFieldEditor; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.IntegerFieldEditor; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.egf.console.EGFConsolePlugin; import org.eclipse.egf.console.internal.IEGFConsoleConstants; import org.eclipse.egf.console.l10n.ConsoleMessages; public class EGFPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { private BooleanFieldEditor2 _wrapEditor = null; private ConsoleIntegerFieldEditor _widthEditor = null; private ColorFieldEditor _debugColorEditor; private ColorFieldEditor _errorColorEditor; private ColorFieldEditor _infoColorEditor; private ColorFieldEditor _warningColorEditor; private ColorFieldEditor _backgroundColorEditor; private BooleanFieldEditor2 _showOnMessage; private BooleanFieldEditor2 _restrictOutput; private ConsoleIntegerFieldEditor _highWaterMark; /** * This class exists to provide visibility to the * refreshValidState method and to perform more intelligent * clearing of the error message. */ protected class ConsoleIntegerFieldEditor extends IntegerFieldEditor { public ConsoleIntegerFieldEditor(String name, String labelText, Composite parent) { super(name, labelText, parent); } /** * @see org.eclipse.jface.preference.FieldEditor#refreshValidState() */ @Override protected void refreshValidState() { super.refreshValidState(); } /** * Clears the error message from the message line if the error * message is the error message from this field editor. */ @Override protected void clearErrorMessage() { if (canClearErrorMessage()) { super.clearErrorMessage(); } } } public EGFPreferencePage() { super(GRID); setDescription(ConsoleMessages.ConsolePreferencePage_General); setPreferenceStore(EGFConsolePlugin.getDefault().getPreferenceStore()); } protected boolean canClearErrorMessage() { if (_widthEditor.isValid() && _highWaterMark.isValid()) { return true; } return false; } /** * Creates a new color field editor. */ private ColorFieldEditor createColorFieldEditor(String preferenceName, String label, Composite parent) { ColorFieldEditor editor = new ColorFieldEditor(preferenceName, label, parent); editor.setPage(this); editor.setPreferenceStore(getPreferenceStore()); return editor; } /** * Update enablement of width editor based on enablement of 'fixed width' editor. */ protected void updateWidthEditor() { Button b = _wrapEditor.getChangeControl(getFieldEditorParent()); _widthEditor.getTextControl(getFieldEditorParent()).setEnabled(b.getSelection()); _widthEditor.getLabelControl(getFieldEditorParent()).setEnabled(b.getSelection()); } /** * Update enablement of buffer size editor based on enablement of 'limit * console output' editor. */ protected void updateBufferSizeEditor() { Button b = _restrictOutput.getChangeControl(getFieldEditorParent()); _highWaterMark.getTextControl(getFieldEditorParent()).setEnabled(b.getSelection()); _highWaterMark.getLabelControl(getFieldEditorParent()).setEnabled(b.getSelection()); } @Override protected void createFieldEditors() { _wrapEditor = new BooleanFieldEditor2(IEGFConsoleConstants.CONSOLE_WRAP, ConsoleMessages.ConsolePreferencePage_Wrap_text, SWT.NONE, getFieldEditorParent()); addField(_wrapEditor); _widthEditor = new ConsoleIntegerFieldEditor(IEGFConsoleConstants.CONSOLE_WIDTH, ConsoleMessages.ConsolePreferencePage_Maximum_Console_width, getFieldEditorParent()); _widthEditor.setValidRange(80, Integer.MAX_VALUE - 1); addField(_widthEditor); _widthEditor.setErrorMessage(ConsoleMessages.ConsolePreferencePage_Error_Console_width); _wrapEditor.getChangeControl(getFieldEditorParent()).addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateWidthEditor(); } } ); _restrictOutput = new BooleanFieldEditor2(IEGFConsoleConstants.CONSOLE_LIMIT_OUTPUT, ConsoleMessages.ConsolePreferencePage_limitOutput, SWT.NONE, getFieldEditorParent()); addField(_restrictOutput); _highWaterMark = new ConsoleIntegerFieldEditor(IEGFConsoleConstants.CONSOLE_HIGH_WATER_MARK, ConsoleMessages.ConsolePreferencePage_highWaterMark, getFieldEditorParent()); addField(_highWaterMark); _highWaterMark.setValidRange(1000, Integer.MAX_VALUE - 1); _highWaterMark.setErrorMessage(ConsoleMessages.ConsolePreferencePage_Console_buffer_size); _restrictOutput.getChangeControl(getFieldEditorParent()).addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateBufferSizeEditor(); } } ); _showOnMessage = new BooleanFieldEditor2(IEGFConsoleConstants.CONSOLE_SHOW_ON_MESSAGE, ConsoleMessages.ConsolePreferencePage_ShowOnMessage, SWT.NONE, getFieldEditorParent()); addField(_showOnMessage); _debugColorEditor = createColorFieldEditor( IEGFConsoleConstants.CONSOLE_DEBUG_COLOR, ConsoleMessages.ConsolePreferencePage_Debug, getFieldEditorParent() ); addField(_debugColorEditor); _errorColorEditor = createColorFieldEditor( IEGFConsoleConstants.CONSOLE_ERROR_COLOR, ConsoleMessages.ConsolePreferencePage_Error, getFieldEditorParent() ); addField(_errorColorEditor); _infoColorEditor = createColorFieldEditor( IEGFConsoleConstants.CONSOLE_INFO_COLOR, ConsoleMessages.ConsolePreferencePage_Information, getFieldEditorParent() ); addField(_infoColorEditor); _warningColorEditor = createColorFieldEditor( IEGFConsoleConstants.CONSOLE_WARNING_COLOR, ConsoleMessages.ConsolePreferencePage_Warning, getFieldEditorParent() ); addField(_warningColorEditor); _backgroundColorEditor = createColorFieldEditor( IEGFConsoleConstants.CONSOLE_BACKGROUND_COLOR, ConsoleMessages.ConsolePreferencePage_BackgroundColor, getFieldEditorParent() ); addField(_backgroundColorEditor); Dialog.applyDialogFont(getFieldEditorParent()); getPreferenceStore().addPropertyChangeListener(this); } /* (non-Javadoc) * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) */ public void init(IWorkbench workbench) { // Nothing to do } /** * @see org.eclipse.jface.preference.FieldEditorPreferencePage#initialize() */ @Override protected void initialize() { super.initialize(); updateWidthEditor(); updateBufferSizeEditor(); } /** * @see org.eclipse.jface.preference.PreferencePage#performDefaults() */ @Override protected void performDefaults() { super.performDefaults(); updateWidthEditor(); updateBufferSizeEditor(); } /** * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ @Override public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals(FieldEditor.IS_VALID)) { boolean newValue = ((Boolean) event.getNewValue()).booleanValue(); // If the new value is true then we must check all field editors. // If it is false, then the page is invalid in any case. if (newValue) { if (_widthEditor != null && event.getSource() != _widthEditor) { _widthEditor.refreshValidState(); } if (_highWaterMark != null && event.getSource() != _highWaterMark) { _highWaterMark.refreshValidState(); } checkState(); } else { super.propertyChange(event); } } else { super.propertyChange(event); } } } Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/util Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.console/src/org/eclipse/egf/console/util/ConsoleUtil.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5618 Text-content-md5: f838450968ca74870745fc86663deed8 Text-content-sha1: d46e4eec487c9aa9f317747368e771971d6aac5d Content-length: 5663 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Thales Corporate Services S.A.S */ package org.eclipse.egf.console.util; import java.lang.reflect.Method; import java.util.Collections; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Path; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IURIEditorInput; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.editors.text.EditorsUI; import org.eclipse.ui.part.FileEditorInput; import org.eclipse.emf.common.ui.URIEditorInput; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.domain.IEditingDomainProvider; import org.eclipse.egf.console.EGFConsolePlugin; /** * Utility class to create status objects. */ public class ConsoleUtil { public static void setSelectionToViewer(IEditorPart part, URI uri) { if (part == null || part instanceof IEditingDomainProvider == false) { return; } if (uri == null || uri.hasFragment() == false) { return; } EditingDomain editingDomain = ((IEditingDomainProvider) part).getEditingDomain(); EObject eObject = editingDomain.getResourceSet().getEObject(uri, true); if (eObject == null) { return; } try { Class[] types = new Class []{ Class.forName("java.util.Collection") }; //$NON-NLS-1$ Method method = part.getClass().getMethod("setSelectionToViewer", types); //$NON-NLS-1$ if (method != null) { Object[] params = new Object []{ Collections.singletonList(eObject) }; method.invoke(part, params); } } catch (Exception e) { EGFConsolePlugin.getDefault().log("IEditingDomainProvider.setSelectionToViewer", e); //$NON-NLS-1$ if (EGFConsolePlugin.getDefault().isDebugging()) { EGFConsolePlugin.getConsole().logThrowable("IEditingDomainProvider.setSelectionToViewer", e); //$NON-NLS-1$ } } } /** * Opens the default editor for the resource that contains the specified * EObject. */ public static IEditorPart openEditor(EObject eObject) throws PartInitException { if (eObject == null) { return null; } Resource resource = eObject.eResource(); if (resource == null) { return null; } URI uri = resource.getURI(); if (uri == null) { return null; } return openEditor(uri); } public static String computeEditorId(String fileName_p) { IWorkbench workbench = PlatformUI.getWorkbench(); IEditorRegistry editorRegistry = workbench.getEditorRegistry(); IEditorDescriptor descriptor= editorRegistry.getDefaultEditor(fileName_p); if (descriptor != null) { return descriptor.getId(); } return EditorsUI.DEFAULT_TEXT_EDITOR_ID; } /** * Opens the default editor for the resource that contains the specified * EObject. */ public static IEditorPart openEditor(URI uri) throws PartInitException { if (uri == null) { return null; } IEditorInput editorInput = null; if (uri.isPlatformResource()) { String path = uri.toPlatformString(true); IResource workspaceResource = ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(path)); if (workspaceResource instanceof IFile) { editorInput = EclipseUtil.createFileEditorInput((IFile) workspaceResource); return openEditor(editorInput, uri); } } else { return openEditor(new URIEditorInput(uri.trimFragment()), uri); } return null; } private static IEditorPart openEditor(IEditorInput input, URI uri) throws PartInitException { if (input != null && uri != null) { IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage(); return page.openEditor(input, computeEditorId(uri.trimFragment().lastSegment())); } return null; } private static class EclipseUtil { static final Class FILE_CLASS; static { Class fileClass = null; try { fileClass = IFile.class; } catch (Throwable exception) { // Ignore any exceptions and assume the class isn't available. } FILE_CLASS = fileClass; } static final Class URI_EDITOR_INPUT_CLASS; static { Class uriEditorInputClass = null; try { uriEditorInputClass = IURIEditorInput.class; } catch (Throwable exception) { // Ignore any exceptions and assume the class isn't available. } URI_EDITOR_INPUT_CLASS = uriEditorInputClass; } public static IEditorInput createFileEditorInput(IFile file) { return new FileEditorInput(file); } } } Node-path: plugins/org.eclipse.egf.core/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 374 Text-content-md5: 911717b9d08ea50d6c596c1f43830080 Text-content-sha1: 00e1f1bc150986effc780aa7408f83a5747113fd Content-length: 419 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.core/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 681 Text-content-md5: 7ced7aca1bc1c1f3f67b13f0d2bf333a Text-content-sha1: da5af2afcbda6fca62599e6103ac1ac4936aa5df Content-length: 726 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.core org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.core/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: a4e6115c8dcdb4a8fbf0b3308e69c2e2 Text-content-sha1: 7bc6e403012bc1194d12e508b65f294c03b07542 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:57 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.core/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 855 Text-content-md5: 3ff7d4288d084ada6cc021f6c1307cc0 Text-content-sha1: 800df14627d90f5162d172b6ef3943577b0421f1 Content-length: 900 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.core; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.egf.core.CoreActivator Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.common;visibility:=reexport, org.eclipse.egf.model;visibility:=reexport, org.eclipse.egf.console;visibility:=reexport Export-Package: org.eclipse.egf.core, org.eclipse.egf.core.context, org.eclipse.egf.core.data, org.eclipse.egf.core.data.helper, org.eclipse.egf.core.extensionpoint, org.eclipse.egf.core.natures, org.eclipse.egf.core.helper, org.eclipse.egf.core.log4j, org.eclipse.egf.core.reader.descriptor, org.eclipse.egf.core.task Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.core/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core/about.ini Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 598 Text-content-md5: 867b1d7281fe7447bcf603ff112260ca Text-content-sha1: 3c662ecd1ff55393ab54aec9569cb26a327b27c0 Content-length: 643 K 13 svn:mime-type V 10 text/plain PROPS-END # about.ini # contains information about a feature # java.util.Properties file (ISO-8859-1 with "\" escapes) # "%key" are externalized strings defined in about.properties # This file does not need to be translated. # Property "aboutText" contains blurb for "About" dialog (translated) aboutText=%featureText # Property "featureImage" contains path to feature image (32x32) featureImage=fc32.gif # Property "appName" contains name of the application (translated) appName=%featureName # Property "welcomePage" contains path to welcome page (special XML-based format) welcomePage=$nl$/welcome.xml Node-path: plugins/org.eclipse.egf.core/about.mappings Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 173 Text-content-md5: 16638c899b66a2fb62dd78d9fbf452ca Text-content-sha1: 5df1b4751123b65b8bea3b4bec0043c9333f9e86 Content-length: 183 PROPS-END # about.mappings # contains fill-ins for about.properties # java.util.Properties file (ISO-8859-1 with "\" escapes) # This file does not need to be translated. 0=@buildId@ Node-path: plugins/org.eclipse.egf.core/about.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1600 Text-content-md5: 39ab4b79a297c75133924fdbbafcddee Text-content-sha1: b6662395e55d6ed390fdc026a7fbc22e2bcf1566 Content-length: 1645 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # about.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # NLS_MESSAGEFORMAT_VAR # ============================================================================== # Do not change the properties between this line and the last line containing: # %%% END OF TRANSLATED PROPERTIES %%% # Instead, either redefine an existing property, or create a new property, # append it to the end of the file, and change the code to use the new name. # ============================================================================== featureName=Eclipse Generation Factories (EGF) Core (Incubation) featureText=Eclipse Generation Factories (EGF) Core \n\ \n\ Version: {featureVersion}\n\ Build id: {0}\n\ \n\ (c) Copyright Eclipse contributors and others. 2009. All rights reserved.\n\ \n\ Visit http://www.eclipse.org/egf # ============================================================================== # %%% END OF TRANSLATED PROPERTIES %%% # The above properties have been shipped for translation. # ============================================================================== Node-path: plugins/org.eclipse.egf.core/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/CoreActivator$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1768 Text-content-md5: e74689389b3197ccb81e861662c3852c Text-content-sha1: 37bc7613a6499810c96a8240dfef91371b7a1183 Content-length: 1827 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1I$org/eclipse/egf/core/CoreActivator$1java/lang/Object1org/eclipse/egf/common/progress/IProgressRunnablethis$0$Lorg/eclipse/egf/core/CoreActivator;val$factoryComponentId_pLjava/lang/String;val$productionManageru(Lorg/eclipse/egf/core/CoreActivator;Ljava/lang/String;Lorg/eclipse/egf/core/internal/production/ProductionManager;)VCode      ()VLineNumberTableLocalVariableTablethis&Lorg/eclipse/egf/core/CoreActivator$1;getReportingTitle()Ljava/lang/String; java/lang/StringBuilder "$#1org/eclipse/egf/core/internal/production/Messages % )ProductionManager_ProgressReporting_Title ')(java/lang/String *+valueOf&(Ljava/lang/Object;)Ljava/lang/String; - .(Ljava/lang/String;)V 0 12append-(Ljava/lang/String;)Ljava/lang/StringBuilder; 4 5toStringrun.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z 9;::org/eclipse/egf/core/internal/production/ProductionManager <=generate@(Ljava/lang/String;Lorg/eclipse/core/runtime/IProgressMonitor;)ZrunnableProgressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; SourceFileCoreActivator.javaEnclosingMethodD"org/eclipse/egf/core/CoreActivator FGgenerateFactoryComponentA(Ljava/lang/String;Lorg/eclipse/core/runtime/IProgressMonitor;Z)Z InnerClasses    B*+*,*-*  BY!&,*/3 67A **+8  >?@ABCEH  Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/CoreActivator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 8116 Text-content-md5: 910cd4e5279b6013e3b5190e3181a0ec Text-content-sha1: 8426fd659c3c3cfb3dcc9ec7c56e015fa65b128a Content-length: 8175 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1"org/eclipse/egf/core/CoreActivator2org/eclipse/egf/common/activator/AbstractActivator__loggerLorg/apache/log4j/Logger;__plugin$Lorg/eclipse/egf/core/CoreActivator;_productionManager()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger ! getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; # LineNumberTableLocalVariableTable ( &this getDefault&()Lorg/eclipse/egf/core/CoreActivator; - start%(Lorg/osgi/framework/BundleContext;)V Exceptions2java/lang/Exception 4 ./ 6 78 getBundle()Lorg/osgi/framework/Bundle; :<;&org/eclipse/egf/core/Log4JConfigurator => configure(Lorg/osgi/framework/Bundle;)V context_p"Lorg/osgi/framework/BundleContext;stop C A/%generateFactoryComponentSynchronously+(Lorg/eclipse/egf/model/FactoryComponent;)Z G HIgetFactoryComponentRegistry6()Lorg/eclipse/egf/core/data/FactoryComponentRegistry; KML&org/eclipse/egf/model/FactoryComponent NgetId PRQ2org/eclipse/egf/core/data/FactoryComponentRegistry STgetFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent;Vjava/lang/StringBuilderX:CoreActivator.generateFactoryComponentSynchronously(..) _ UZ &[(Ljava/lang/String;)V]&Prevented corruption status to occur ! U_ `aappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;c$Trying to execute factory component Kf in replacement of h< .Both are having the same ID, and yet there are not equal ! Uj ktoString m nowarn(Ljava/lang/Object;)V Pq rsaddFactoryComponent=(Ljava/lang/String;Lorg/eclipse/egf/model/FactoryComponent;)V u vwgenerateFactoryComponentA(Ljava/lang/String;Lorg/eclipse/core/runtime/IProgressMonitor;Z)Z Py zTremoveFactoryComponentfactoryComponent_p(Lorg/eclipse/egf/model/FactoryComponent;resultZ fcRegistryfcIdLjava/lang/String;alreadyKnownFcremoveFromRegistry loggerMessageLjava/lang/StringBuilder;  :org/eclipse/egf/core/internal/production/ProductionManager ($org/eclipse/egf/core/CoreActivator$1 &u(Lorg/eclipse/egf/core/CoreActivator;Ljava/lang/String;Lorg/eclipse/egf/core/internal/production/ProductionManager;)V 0org/eclipse/egf/common/progress/ProgressReporter  asyncExec6(Lorg/eclipse/egf/common/progress/IProgressRunnable;)V syncExeca(Lorg/eclipse/egf/common/progress/IProgressRunnable;Lorg/eclipse/core/runtime/IProgressMonitor;)ZfactoryComponentId_pprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; forkJob_pproductionManager generateFc3Lorg/eclipse/egf/common/progress/IProgressRunnable;getFactoryComponentsInPlatform()Ljava/util/Collection; SignatureB()Ljava/util/Collection;java/util/ArrayList &(I)V   getPluginIDfactoryComponent 2org/eclipse/egf/common/helper/ExtensionPointHelper getConfigurationElementsW(Ljava/lang/String;Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement;Borg/eclipse/egf/core/internal/reader/DefaultFactoryComponentReader ( readFactoryComponentu(Lorg/eclipse/core/runtime/IConfigurationElement;)Lorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor;  St(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor;)Lorg/eclipse/egf/model/FactoryComponent; add(Ljava/lang/Object;)ZresultingFcListLjava/util/ArrayList;fcConfigurationElements1[Lorg/eclipse/core/runtime/IConfigurationElement;factoryComponentReaderDLorg/eclipse/egf/core/internal/reader/DefaultFactoryComponentReader;iI fcDescriptorCLorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor;LocalVariableTypeTable?Ljava/util/ArrayList;)getFactoryComponentDescriptorFromPlatform|(Lorg/eclipse/core/runtime/IConfigurationElement;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor;configurationElement_p0Lorg/eclipse/core/runtime/IConfigurationElement;getPluginIdForFactoryComponent&(Ljava/lang/String;)Ljava/lang/String; getConfigurationElementh(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/core/runtime/IConfigurationElement; .org/eclipse/core/runtime/IConfigurationElement getContributor)()Lorg/eclipse/core/runtime/IContributor; %org/eclipse/core/runtime/IContributorfcConfigurationElementgetBundleForFactoryComponentL(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/osgi/framework/Bundle; -org/eclipse/egf/model/data/helper/ModelHelper getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent;  !org/eclipse/core/runtime/Platform 7/(Ljava/lang/String;)Lorg/osgi/framework/Bundle;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;bundleLorg/osgi/framework/Bundle; fcContainerpluginID $org/eclipse/egf/model/ModelActivator *(()Lorg/eclipse/egf/model/ModelActivator;  getFactoryComponentLoadingHelperD()Lorg/eclipse/egf/model/data/helper/IFactoryComponentLoadingHelper; R@org/eclipse/egf/model/data/helper/IFactoryComponentLoadingHelper fcDescriptor_pJLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor;  P  I getInstancegetSortingPriority2(Lorg/eclipse/egf/model/NamedModelElementWithId;)I Jorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper  N()Lorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper;     SourceFileCoreActivator.java InnerClasses!    3"$ 2.%&/*'$.% ) *+$,$E%./01Q*+3*,*59$MN PQ%)?@A/01F ,*+B$XY Z% ) ?@DE`=+*FN+J:-O:6T+NUYWY:\^Wb^+d^We^d^Wg^W"il 6-+p*t= -xW$Zeghk lmn p+q6r>sOtauivtwvx{y~z}%R){|}~  | |~6@vw?6**Y*:Y*+:  ,6$&  (,4<%H?)???~<}~$ (BYL*MYN6-,2:+*W,+$* !+6@%>B) 9/'"+   9PYM,+$ % )M*+N--M,$" %*)} $M+N-*-J: M,$ "%4$)$"| STA +$% ) SA +$% ) HIE* * *$ % )  <+$%)  Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/Log4JConfigurator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5103 Text-content-md5: 4592d55ad1e73669bede7a65fd1fadcd Text-content-sha1: 13ef704e94825ccd6a11e4437cfb39725b78493a Content-length: 5162 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&org/eclipse/egf/core/Log4JConfiguratorjava/lang/Object)EXTENSION_POINT_SHORT_ID_LOG4J_CONFIGURERLjava/lang/String; ConstantValue log4jConfigurerLOG4J_APPENDER_FILE_APPEND log4j.appender.FILE.Append$LOG4J_APPENDER_FILE_MAX_BACKUP_INDEX"log4j.appender.FILE.MaxBackupIndex!LOG4J_APPENDER_FILE_MAX_FILE_SIZElog4j.appender.FILE.MaxFileSize-LOG4J_APPENDER_FILE_LAYOUT_CONVERSION_PATTERN,log4j.appender.FILE.layout.ConversionPatternLOG4J_APPENDER_FILE_LAYOUTlog4j.appender.FILE.layoutLOG4J_APPENDER_FILE_FILElog4j.appender.FILE.FileLOG4J_APPENDER_FILElog4j.appender.FILELOG4J_ROOT_LOGGER!log4j.rootLogger__loggerLorg/apache/log4j/Logger;()VCode (*)java/lang/Class +, getPackage()Ljava/lang/Package; .0/java/lang/Package 12getName()Ljava/lang/String; 465org/apache/log4j/Logger 78 getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; : "#LineNumberTableLocalVariableTable ? =%this(Lorg/eclipse/egf/core/Log4JConfigurator; configure(Lorg/osgi/framework/Bundle;)V ExceptionsFjava/lang/ExceptionH/log4j.properties JLKorg/osgi/framework/Bundle MNgetEntry"(Ljava/lang/String;)Ljava/net/URL; PRQ$org/eclipse/core/runtime/FileLocator STresolve(Ljava/net/URL;)Ljava/net/URL;Vjava/util/Properties U? Y[Z java/net/URL \] openStream()Ljava/io/InputStream; U_ `aload(Ljava/io/InputStream;)V c deaddFileAppender(Ljava/util/Properties;)V g hi handleContributedLog4jConfigurerE(Ljava/util/Properties;)Lorg/eclipse/egf/core/log4j/ILog4jConfigurer; kmljava/lang/Thread no currentThread()Ljava/lang/Thread; kq rsgetContextClassLoader()Ljava/lang/ClassLoader; u vwgetClass()Ljava/lang/Class; (y zsgetClassLoader k| }~setContextClassLoader(Ljava/lang/ClassLoader;)V %org/apache/log4j/PropertyConfigurator Be 4 isDebugEnabled()Zjava/lang/StringBuffer8CoreActivator.start(..) _ LOG4J is correctly configured! =(Ljava/lang/String;)V 2toString 4 debug(Ljava/lang/Object;)Vbundle_pLorg/osgi/framework/Bundle;log4jConfigurationURLLjava/net/URL; resolvedURLlog4jPropertiesLjava/util/Properties;-Lorg/eclipse/egf/core/log4j/ILog4jConfigurer;Ljava/lang/Thread;initialContextClassLoaderLjava/lang/ClassLoader; loggerMessageLjava/lang/StringBuffer;$org.apache.log4j.RollingFileAppender U put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; !org/eclipse/core/runtime/Platform getInstanceLocation2()Lorg/eclipse/osgi/service/datalocation/Location; .org/eclipse/osgi/service/datalocation/Location getURL()Ljava/net/URL;java/lang/StringBuilder Y 2getPath .metadata/egf.log append-(Ljava/lang/String;)Ljava/lang/StringBuilder; org.apache.log4j.PatternLayout%d %5p [%t] - %m%n1024KB1false U get&(Ljava/lang/Object;)Ljava/lang/Object;java/lang/String (C)Ljava/lang/StringBuilder;FILE properties_p workspaceURL logFilePath rootLoggerLjava/lang/StringBuilder; "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator; 2 getPluginID 2org/eclipse/egf/common/helper/ExtensionPointHelper getConfigurationElementsW(Ljava/lang/String;Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement;class createInstanceV(Lorg/eclipse/core/runtime/IConfigurationElement;Ljava/lang/String;)Ljava/lang/Object;+org/eclipse/egf/core/log4j/ILog4jConfigurer ehandleConfigurationconfigurationElements1[Lorg/eclipse/core/runtime/IConfigurationElement;instantiatedClassLjava/lang/Object; SourceFileLog4JConfigurator.java!     "#$%&3'-39; 0<=%&/*>;< @A BCDE&7{*GIL+OMUYWN-,X^-b-f:j:p:tx{-:{{9Y:9AHH;J4 689;"=(?-@4AADHEJFQGTF[HdIoJzL<R{ rme(S -Nn4Go  de&*WLY+M*,W*W*öW*ŶW*ǶW* ɶWY* ϷN-, ԶW* -W;6 T VW&X.Z7[@]I_Ra[cld}ef<*w&cl hi&5L۶M,$,,2N--L+*+;. mpq p oru w'x,y3|<*53 '  Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/context Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/context/ProductionContext.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2234 Text-content-md5: e2fb5cef2590da726a7653e1e0f76e48 Text-content-sha1: f213efc7afd7a5909b3c907d5c683953ab3b7818 Content-length: 2293 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1\.org/eclipse/egf/core/context/ProductionContextjava/lang/Object_valuesLjava/util/Map; Signature5Ljava/util/Map;()VCode    initializeValuesLineNumberTableLocalVariableTablethis0Lorg/eclipse/egf/core/context/ProductionContext;3(Lorg/eclipse/egf/core/context/ProductionContext;)V   getValues()Ljava/util/Map;  productionContext_paddContextElement9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)V  !:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Z)Vname_pLjava/lang/String;value_pLjava/lang/Object;fcId_p(java/lang/StringBuilder *,+java/lang/String -.valueOf&(Ljava/lang/Object;)Ljava/lang/String; '0 1(Ljava/lang/String;)V '3 45append(C)Ljava/lang/StringBuilder; '7 48-(Ljava/lang/String;)Ljava/lang/StringBuilder; ': ;<toString()Ljava/lang/String; >@? java/util/Map AB containsKey(Ljava/lang/Object;)Z >D EFput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; override_pZcontextElementKeygetContextElementValue8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; >M NOget&(Ljava/lang/Object;)Ljava/lang/Object;Qjava/util/HashMap PS T(I)V7()Ljava/util/Map; PW XYclone()Ljava/lang/Object; SourceFileProductionContext.java!  ; * * !    \* +*+*()*,. U *+,- 89*  "# $% &#! :'Y-)//2+69:*=*,CWCF,G9I>::"#:$%:&#:GH!I#JK _!*'Y,)//2+69LR !!"#!&#  ; *PYR Y Z  U 8*PV>b Z[ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/FactoryComponentRegistry$ProjectListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2175 Text-content-md5: ef9aef9877daea8d01873663bb76c180 Text-content-sha1: 3f8fab13372ed3b5962db6d214cf69ea91cbfb58 Content-length: 2234 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1RBorg/eclipse/egf/core/data/FactoryComponentRegistry$ProjectListener7org/eclipse/egf/common/listener/AbstractProjectListenerthis$04Lorg/eclipse/egf/core/data/FactoryComponentRegistry;7(Lorg/eclipse/egf/core/data/FactoryComponentRegistry;)VCode    ()VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/data/FactoryComponentRegistry$ProjectListener;handleProjectAddedS(Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/resources/IResourceDelta;)V project_p%Lorg/eclipse/core/resources/IProject;resourceDelta_p+Lorg/eclipse/core/resources/IResourceDelta;handleProjectChangedhandleProjectRemoved 2org/eclipse/egf/core/data/FactoryComponentRegistry  _factoryComponentsLjava/util/Map; "$# java/util/Map %&values()Ljava/util/Collection; (*)java/util/Collection +,iterator()Ljava/util/Iterator; .0/java/util/Iterator 12next()Ljava/lang/Object;4&org/eclipse/egf/model/FactoryComponent 687-org/eclipse/egf/model/data/helper/ModelHelper 9: getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject; .< =remove .? @AhasNext()ZiteratorOverFcsLjava/util/Iterator;removedZ currentFc(Lorg/eclipse/egf/model/FactoryComponent;currentFcProjectLocalVariableTypeTable>Ljava/util/Iterator;handleProjectClosed M  SourceFileFactoryComponentRegistry.java InnerClassesProjectListener  4 *+ * y   ?  ?  H* !'N6$--3:5:+ 6-;->Ա* #*039GHHHH6BC3DE#FG*HI 6BJK I*+,L  NOP Q Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/FactoryComponentRegistry.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2794 Text-content-md5: 92187809613ac16f57e5dbaa46f4f3d4 Text-content-sha1: ec91d06d6aa5497e4a9f0d19ccfa9619089c83a4 Content-length: 2853 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1g2org/eclipse/egf/core/data/FactoryComponentRegistryjava/lang/Object __instance4Lorg/eclipse/egf/core/data/FactoryComponentRegistry;_factoryComponentsLjava/util/Map; SignatureKLjava/util/Map;()VCode  java/util/HashMap  (I)V     initializeListenersLineNumberTableLocalVariableTablethis  *org/eclipse/core/resources/ResourcesPlugin !" getWorkspace)()Lorg/eclipse/core/resources/IWorkspace;$Borg/eclipse/egf/core/data/FactoryComponentRegistry$ProjectListener #& '7(Lorg/eclipse/egf/core/data/FactoryComponentRegistry;)V )+*%org/eclipse/core/resources/IWorkspace ,-addResourceChangeListener7(Lorg/eclipse/core/resources/IResourceChangeListener;)V getInstance6()Lorg/eclipse/egf/core/data/FactoryComponentRegistry; 1  getFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; 687 java/util/Map 9:get&(Ljava/lang/Object;)Ljava/lang/Object;<&org/eclipse/egf/model/FactoryComponentfactoryComponentId_pLjava/lang/String;removeFactoryComponent 6A B:removeremoveFactoryComponents(Ljava/util/Collection;)ZC(Ljava/util/Collection;)Z 6G HIvalues()Ljava/util/Collection; KMLjava/util/Collection ND removeAllfactoryComponents_pLjava/util/Collection;LocalVariableTypeTable@Ljava/util/Collection;addFactoryComponent=(Ljava/lang/String;Lorg/eclipse/egf/model/FactoryComponent;)V 6V WXput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;factoryComponent_p(Lorg/eclipse/egf/model/FactoryComponent;getFactoryComponents()Ljava/util/List;<()Ljava/util/List;_java/util/ArrayList ^a b(Ljava/util/Collection;)V SourceFileFactoryComponentRegistry.java InnerClassesProjectListener!     K**Y*0134   ?#Y*%( <= )./ <0 Y200DEG!34 B*+5;P=>!?4 B*+@;Y=>!CD E V*F+JaOPQ OR!ST O *+,UW j k   => YZ![\ ] ;^Y*F`r cde #f Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/helper/DataHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 10785 Text-content-md5: d892fecb5e67ea78e9ce3a1aa36c9f38 Text-content-sha1: 5b5f85036a2e1be6358d94cfaeb1097e1a4e26fb Content-length: 10844 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1u+org/eclipse/egf/core/data/helper/DataHelper-org/eclipse/egf/model/data/helper/ModelHelper__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable " this-Lorg/eclipse/egf/core/data/helper/DataHelper;$getPossibleReferencedContractElement@(Lorg/eclipse/egf/model/FactoryComponent;)Ljava/util/Collection; Signaturei(Lorg/eclipse/egf/model/FactoryComponent;)Ljava/util/Collection;*java/util/HashSet ), -(I)V / 01 getContractJ(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/Contract; 354org/eclipse/egf/model/Contract 67getContractElements%()Lorg/eclipse/emf/common/util/EList; 9;: java/util/Set <=addAll(Ljava/util/Collection;)ZfactoryComponent_p(Lorg/eclipse/egf/model/FactoryComponent;possibleContractElementsLjava/util/Set;referencedFcContract Lorg/eclipse/egf/model/Contract;LocalVariableTypeTable8Ljava/util/Set; getReferencedFactoryComponentsByj(Lorg/eclipse/egf/model/FactoryComponent;)Ljava/util/Collection; I JKgetProductionPlanP(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/ProductionPlan; MON$org/eclipse/egf/model/ProductionPlan P7getFactoryComponentInvocations RTSjava/util/List UViterator()Ljava/util/Iterator; XZYjava/util/Iterator [\next()Ljava/lang/Object;^0org/eclipse/egf/model/FactoryComponentInvocation ]` agetFactoryComponentId ced"org/eclipse/egf/core/CoreActivator fg getDefault&()Lorg/eclipse/egf/core/CoreActivator; ci jkgetFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; 9m noadd(Ljava/lang/Object;)Z Xq rshasNext()Z referencedFcsproductionPlan&Lorg/eclipse/egf/model/ProductionPlan;fcConfigurationsLjava/util/List;fcConfiguration2Lorg/eclipse/egf/model/FactoryComponentInvocation; pointedFcIdLjava/lang/String; pointedFc9Ljava/util/Set;DLjava/util/List; getReferencedContractElementsFor?(Lorg/eclipse/egf/model/ContractElement;)Ljava/util/Collection;h(Lorg/eclipse/egf/model/ContractElement;)Ljava/util/Collection; java/util/Collections  emptyList()Ljava/util/List; %org/eclipse/egf/model/ContractElement 7getContractElementReferences R size()I.org/eclipse/egf/model/ContractElementReference  resolveContractElement3(Lorg/eclipse/egf/model/ContractElementReference;)V getReferencedContractElement)()Lorg/eclipse/egf/model/ContractElement;contractElement_p'Lorg/eclipse/egf/model/ContractElement;contractElementReferencescontractElementReferenceCountIreferencedContractElementscontractElementReference0Lorg/eclipse/egf/model/ContractElementReference;BLjava/util/List;8(Lorg/eclipse/egf/model/Contract;)Ljava/util/Collection;a(Lorg/eclipse/egf/model/Contract;)Ljava/util/Collection;   contract_pcontractElementscurrentContractElement9Ljava/util/List;getReferencedContractElementForO(Lorg/eclipse/egf/model/ContextElement;)Lorg/eclipse/egf/model/ContractElement; $org/eclipse/egf/model/ContextElement getContractElementReference2()Lorg/eclipse/egf/model/ContractElementReference;contextElement_p&Lorg/eclipse/egf/model/ContextElement;result7(Lorg/eclipse/egf/model/Context;)Ljava/util/Collection;`(Lorg/eclipse/egf/model/Context;)Ljava/util/Collection; org/eclipse/egf/model/Context 7getContextElements   context_pLorg/eclipse/egf/model/Context;contextElementscurrentContextElementcontractElement8Ljava/util/List; +org/eclipse/egf/model/ModelPackage$Literals NAMED_MODEL_ELEMENT_WITH_ID__ID"Lorg/eclipse/emf/ecore/EAttribute; getReferencedContractElementId  getReferencedContractElementName !NAMED_MODEL_ELEMENT_WITH_ID__NAME getReferencedFactoryComponentId  w(Ljava/lang/String;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/String;)Lorg/eclipse/egf/model/ContractElement; setReferencedContractElement*(Lorg/eclipse/egf/model/ContractElement;)V getId setReferencedContractElementId(Ljava/lang/String;)V T!org/eclipse/emf/common/util/EListcontractElementReference_pcontractElementMatchingFeature*Lorg/eclipse/emf/ecore/EStructuralFeature;contractElementMatchingValueupdateContractElementIdIsNeededZcontractElementRefsLjava/util/Iterator; referenceFLjava/util/Iterator;getLabel:(Lorg/eclipse/egf/model/ContextElement;)Ljava/lang/String; getKey labelreferencedContractElementgetDescriptionC(Lorg/eclipse/egf/model/NamedModelElementWithId;)Ljava/lang/String; -org/eclipse/egf/model/NamedModelElementWithId  java/lang/String oequals   java/util/Collection  T   element_p/Lorg/eclipse/egf/model/NamedModelElementWithId; descriptionLjava/util/Collection;?Ljava/util/Collection;getContextType  ()Lorg/eclipse/egf/model/Type; org/eclipse/egf/model/Type getTypeHolderClassName  getContractType!java/lang/StringBuilder# DataHelper.getContextType(..) _  % 'Context element:  ) *+append-(Ljava/lang/String;)Ljava/lang/StringBuilder; . does not have a Type!!!  0 1toString 3 45warn(Ljava/lang/Object;)V contextTypeLorg/eclipse/egf/model/Type; loggerMessageLjava/lang/StringBuilder;-getMandatoryContractElementWithNoDefaultValue:(Lorg/eclipse/egf/model/FactoryComponent;)Ljava/util/List;c(Lorg/eclipse/egf/model/FactoryComponent;)Ljava/util/List;>java/util/ArrayList =, MA BC getContext!()Lorg/eclipse/egf/model/Context; E G H;getMandatoryContractElement RJ K= removeAllproductionPlanContext1referencedContractElementsByProductionPlanContextisBootstrapFactoryComponent(Ljava/lang/String;)ZQ rootAssetfactoryComponentId_p T UVeGet>(Lorg/eclipse/emf/ecore/EStructuralFeature;)Ljava/lang/Object;Xjava/lang/StringBufferZ.DataHelper.getReferencedContractElement(..) _ W%]!could not find factory component W_ *`,(Ljava/lang/String;)Ljava/lang/StringBuffer;b( , while searching for contract element d ! W0 g h5error contractElementMatchingFeature_pcontractElementMatchingValue_pfccontractLjava/lang/StringBuffer;=Ljava/util/Iterator; SourceFileDataHelper.java InnerClassess"org/eclipse/egf/model/ModelPackageLiterals! 3  1-  /*!- #$ %&'( ')Y+L*+*.M,+,28W+9 ; <?@B%D '>? @ABCD  @E F&'G  ^)Y+L*+*HM,G,LN-Q:+W]:_:bh:+lWp+2 M O PRTVW6Y?ZI[RW\^H^>? UtAJuv=wx6yz?{|I }?D Ut~=w ' U**L+=)Y+N+Q:"W:-lWp-* hilnqs6u;wIsSy4UFx?6A6DF6E ' E*)Y+L*2M,Q:WN+-8Wp+".9C*EC4A-x. D4E-  z L*+*M,,,L+"   ' N*)Y+L*M,Q:"WN-: +lWp+* .49BL4N=A6x.4D=E6  ]**L+M*N6-*NM6*,-L+F*+*++:W:pf #*.189<=AHMYiuzH ypi|ffuD f  9*L+$*M,,,N- -L++L+*  !%,7*92|!   KL*+*L*6+ +)*M, , WN- L+.    #+5DI*KI|+DD +   uL*M, ,L,*N-!--:L+1 Y"$N-&(W-*,(-(W-/2+B$& (),-#/'0/142A6E7P8X9i:s<>ur| k67"/P#89 :;'< ==Y?L*+*HM,+,@N-+-D:*FL+IW+6 E G HKLMP!Q%R'U-W2Y;Z4=>? 4x)uv!L-MD 4-M NO 2P*c R|  eNb*h:J.:2:!W:,+SNpJ-קCWYY[:\^W*^Wa^W,^Wc^Wef-Fop qrs(t4uCvFsWzc{l|s}|~\ R|ij| k?@lC%/4c48mD %/nopq rt Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/validation Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/validation/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1340 Text-content-md5: a526dea78644db1e50adc5a5f30e4875 Text-content-sha1: bf7d0b19a81159b0f8119ca42d5dbb853fc64702 Content-length: 1399 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#-org/eclipse/egf/core/data/validation/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue -org.eclipse.egf.core.data.validation.messagesGModelElementDelegatedValidator_FactoryComponentInvocation_Rule0_MessageGModelElementDelegatedValidator_FactoryComponentInvocation_Rule1_MessageGModelElementDelegatedValidator_FactoryComponentInvocation_Rule2_MessageXModelElementDelegatedValidator_FactoryComponentInvocation_ReferencedFcDiagnostic_MessageEModelElementDelegatedValidator_ContractElementReference_MessageHeaderEModelElementDelegatedValidator_ContractElementReference_Rule0_MessageEModelElementDelegatedValidator_ContractElementReference_Rule1_MessageEModelElementDelegatedValidator_ContractElementReference_Rule2_MessageEModelElementDelegatedValidator_ContractElementReference_Rule3_Message()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable  this/Lorg/eclipse/egf/core/data/validation/Messages; SourceFile Messages.java!          , "3* (*  !" Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/validation/ModelElementDelegatedValidator$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6468 Text-content-md5: 3544629f74e95996fe66ff99f444c6b3 Text-content-sha1: b7fec335e0a16ac74aa15439cc643a621727c669 Content-length: 6527 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Eorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator$1&org/eclipse/egf/model/util/ModelSwitchthis$0ELorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator;H(Lorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator;)VCode    ()VLineNumberTableLocalVariableTablethisGLorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator$1;caseFactoryComponentInvocationG(Lorg/eclipse/egf/model/FactoryComponentInvocation;)Ljava/lang/Boolean; Corg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator access$0()Lorg/apache/log4j/Logger; org/apache/log4j/Logger  isDebugEnabled()Z"java/lang/StringBuilder$&.caseFactoryComponentInvocation(..) _ !& '(Ljava/lang/String;)V !) *+toString()Ljava/lang/String; - ./debug(Ljava/lang/Object;)V 1320org/eclipse/egf/model/FactoryComponentInvocation 4+getFactoryComponentId 687"org/eclipse/egf/core/CoreActivator 9: getDefault&()Lorg/eclipse/egf/core/CoreActivator; 6< =>getFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; @ ABgetDiagnostics/()Lorg/eclipse/emf/common/util/DiagnosticChain;D+org/eclipse/emf/common/util/BasicDiagnosticForg.eclipse.egf.model HJI-org/eclipse/egf/core/data/validation/Messages KLGModelElementDelegatedValidator_FactoryComponentInvocation_Rule0_MessageLjava/lang/String;Njava/lang/Object 1P Q+getName SUT*org/eclipse/egf/common/helper/StringHelper VW formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; CY Z<(ILjava/lang/String;ILjava/lang/String;[Ljava/lang/Object;)V \^]+org/eclipse/emf/common/util/DiagnosticChain _`add+(Lorg/eclipse/emf/common/util/Diagnostic;)V bdc+org/eclipse/egf/core/data/helper/DataHelper efisBootstrapFactoryComponent(Ljava/lang/String;)Z h ij0checkFactoryComponentInvocationReferencingRootFc5(Lorg/eclipse/egf/model/FactoryComponentInvocation;)Z l mn;EnclosingMethod initializeModelSwitch InnerClasses  8 *+ *  D   # !Y#%M,(,=+0N5-;:>=* ?CYEGMY+OSY-SRMY+SX[-a* +g=* +k=oYq:r:v6M=|YSR:CYEMYSX:  * ? w[%K LMOP&R/S4T6V=WEXNYOZW[YX\\dWgVo_v`dfhjkloponrsrquw{p  &L/jaO2L  W!Y%M,(,=* += * +=V+N+++:0=+:* +MYS:+-+-@yy^ (,59@GKSXZbjsy{H r@LS&bL 1'!Yɷ%M,+W,(,ذ #- 11A &*+߰A &*+A &*+  Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/validation/ModelElementDelegatedValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 9406 Text-content-md5: 4105dac09652327c74137a1f8d3e750d Text-content-sha1: 359b03936a0ebb8f6d3cf35102ec491a133521dd Content-length: 9465 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1JCorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidatorjava/lang/Object4org/eclipse/egf/model/validation/IDelegatedValidator__loggerLorg/apache/log4j/Logger; _diagnostics-Lorg/eclipse/emf/common/util/DiagnosticChain; _modelSwitch(Lorg/eclipse/egf/model/util/ModelSwitch; Signature=Lorg/eclipse/egf/model/util/ModelSwitch;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; ! org/apache/log4j/Logger "# getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; % LineNumberTableLocalVariableTable * ( , -initializeModelSwitchthisELorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator;1Eorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator$1 03 (4H(Lorg/eclipse/egf/core/data/validation/ModelElementDelegatedValidator;)V 6 addErrorForContractElementRefX(Lorg/eclipse/egf/model/ContractElementReference;Ljava/lang/String;[Ljava/lang/Object;)V :<;.org/eclipse/egf/model/ContractElementReference => eContainer!()Lorg/eclipse/emf/ecore/EObject;@-org/eclipse/egf/model/NamedModelElementWithId BDC-org/eclipse/egf/core/data/validation/Messages EFEModelElementDelegatedValidator_ContractElementReference_MessageHeaderLjava/lang/String; ?H IJeClass ()Lorg/eclipse/emf/ecore/EClass; LMorg/eclipse/emf/ecore/EClass ?O PgetId RTS*org/eclipse/egf/common/helper/StringHelper UV formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; X YZgetDiagnostics/()Lorg/eclipse/emf/common/util/DiagnosticChain;\+org/eclipse/emf/common/util/BasicDiagnostic^org.eclipse.egf.model`java/lang/StringBuilder bdcjava/lang/String efvalueOf&(Ljava/lang/Object;)Ljava/lang/String; _h (i(Ljava/lang/String;)V _k lmappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; _o ptoString [r (s<(ILjava/lang/String;ILjava/lang/String;[Ljava/lang/Object;)V uwv+org/eclipse/emf/common/util/DiagnosticChain xyadd+(Lorg/eclipse/emf/common/util/Diagnostic;)VcontractElementReference_p0Lorg/eclipse/egf/model/ContractElementReference;detailedMessage_pdetailedMessageArgs_p[Ljava/lang/Object;contractElementRefContainer/Lorg/eclipse/egf/model/NamedModelElementWithId; bodyMessagedetailedFormatedMessage;?Ljava/util/Collection;=Ljava/util/Iterator;5checkContractElementRefPointsExistingFactoryComponent3(Lorg/eclipse/egf/model/ContractElementReference;)Z : getReferencedFactoryComponentId "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator; getFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; B FEModelElementDelegatedValidator_ContractElementReference_Rule2_Message  78referencedFcId referencedFc5checkContractElementRefPointsExpectedFactoryComponent$org/eclipse/egf/model/ContextElement <org/eclipse/emf/ecore/EObject getFactoryComponentId b equals(Ljava/lang/Object;)Z B FEModelElementDelegatedValidator_ContractElementReference_Rule0_Message  getProductionPlanP(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/ProductionPlan; $org/eclipse/egf/model/ProductionPlan   getFactoryComponentInvocations%()Lorg/eclipse/emf/common/util/EList;   !org/eclipse/emf/common/util/EList B FEModelElementDelegatedValidator_ContractElementReference_Rule1_Message : getReferencedContractElementId"referencedFcIdByContractElementRefownerLorg/eclipse/emf/ecore/EObject; fcInvocationproductionPlan&Lorg/eclipse/egf/model/ProductionPlan;found currentFcHLjava/util/Iterator;0checkFactoryComponentInvocationReferencingRootFc5(Lorg/eclipse/egf/model/FactoryComponentInvocation;)Z  !"getTaskFactory+()Lorg/eclipse/egf/model/TaskFactoryHolder; B$ %FGModelElementDelegatedValidator_FactoryComponentInvocation_Rule1_Messagevalidaten(Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/emf/common/util/DiagnosticChain;Ljava/util/Map;)Z(Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/emf/common/util/DiagnosticChain;Ljava/util/Map;)Z*&org/eclipse/emf/common/util/Diagnostic , ). /0 getChildren()Ljava/util/List; 2 34size()I 687&org/eclipse/egf/model/util/ModelSwitch 9:doSwitch3(Lorg/eclipse/emf/ecore/EObject;)Ljava/lang/Object;modelElement_p diagnostics_p context_pLjava/util/Map; diagnostics(Lorg/eclipse/emf/common/util/Diagnostic;initialDiagnosticCountIdiagnosticCount5Ljava/util/Map;access$0()Lorg/apache/log4j/Logger; SourceFile#ModelElementDelegatedValidator.java InnerClasses!    3$& 2.'(; *)*+&<=>'  ./-; *0Y*25& D '  ./78 i+9?:AYGKSYNSQ:,-Q:*W[Y]_YagjnYSqt&2 #+.07;W`ch'Hi./iz{i|Fi}~ ^09F72F >,:+:::W+::  Wi>:Q: *W[Y]Y+SY,SY SQY+Sqt&z&08?ISU^amqy'z ./8? ^[mB *? ^[+=+N-:=*+Y-S&&  &)'4+./+z{) "F =+N+9:M:::-=*+YSxp+::6 : :  -6=*+Y+SY-S&~ '/6?HJLO]c k"q$x%{'()*'-.012306'z ./z{ F6*?!Fqgx`{]/ / <=+2*W[Y]#Y+SQY+Sqt&. >@ BCD!E'D*E2C5B:G' <./<:&' (N6,)*,+,):-16*5+5W-166&* OQ R TVW&Y/[=\K]'RN./N;N< N=>K6?@&(AB=CB N=DYZ/*+&e' ./EF$$&2'GHI 0 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/data/validation/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 1919 Text-content-md5: f861254bdc830ab147122ff49463f389 Text-content-sha1: 090a965f23e2cb50c96edb2d1a29b381b0e2c936 Content-length: 1929 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### ModelElementDelegatedValidator_FactoryComponentInvocation_Rule0_Message=Factory component invocation ''{0}'' references a missing FC with id ''{1}''. ModelElementDelegatedValidator_FactoryComponentInvocation_Rule1_Message=Factory component invocation ''{0}'' referencing the Bootstrap FC must have a task factory. ModelElementDelegatedValidator_FactoryComponentInvocation_Rule2_Message=Factory component invocation ''{0}'' referencing ''{1}'' FC must value contract element ''{2}''. ModelElementDelegatedValidator_FactoryComponentInvocation_ReferencedFcDiagnostic_Message=Diagnosis of referenced FC ''{0}'' ModelElementDelegatedValidator_ContractElementReference_Rule0_Message=references a contract element that is not provided by the FC referenced by the factory component invocation ''{0}''. ModelElementDelegatedValidator_ContractElementReference_MessageHeader={0} ''{1}''' ' ModelElementDelegatedValidator_ContractElementReference_Rule1_Message=is not allowed to reference contract element ''{0}'' because no factory component invocation, in the production plan, references FC ''{1}'' ModelElementDelegatedValidator_ContractElementReference_Rule2_Message=references a contract element from a missing factory component ''{0}'' ModelElementDelegatedValidator_ContractElementReference_Rule3_Message=references an unknown contract element ''{0}'' Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/IContextConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 950 Text-content-md5: 7cc14d0ed1447f54e51eed9704c1cbda Text-content-sha1: 62aa66f66d5b2b6f1aecb089af2ee61201004399 Content-length: 1009 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.5org/eclipse/egf/core/extensionpoint/IContextConstantsjava/lang/ObjectCONTEXT_EXTENSION_POINT_IDLjava/lang/String; ConstantValue context"FULLY_QUALIFIED_EXTENSION_POINT_IDCONTEXT_EXTENSION_CHILD CONTEXT_CHILDcontextElementCONTEXT_ELEMENT_KEY_CHILDkeyCONTEXT_ELEMENT_VALUE_CHILD contextValue()VCode "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator;  ! getPluginID()Ljava/lang/String; #%$2org/eclipse/egf/common/helper/ExtensionPointHelper &'getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ) LineNumberTableLocalVariableTable SourceFileIContextConstants.java    ?"(*  +,- Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/IContractConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1432 Text-content-md5: b45cd3d1d8ba86509a858956c8c633cb Text-content-sha1: bc07b23f33154841bab9cadc31cf5114393764aa Content-length: 1491 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1A6org/eclipse/egf/core/extensionpoint/IContractConstantsjava/lang/ObjectCONTRACT_EXTENSION_POINT_IDLjava/lang/String; ConstantValue contract"FULLY_QUALIFIED_EXTENSION_POINT_IDCONTRACT_EXTENSION_CHILDCONTRACT_ATT_IDidCONTRACT_ELEMENT_CHILDcontractElementCONTRACT_ELEMENT_ATT_IDCONTRACT_ELEMENT_ATT_NAMEname CONTRACT_ELEMENT_CHILD_ATT_VALUEvalueCONTRACT_ELEMENT_ATT_TYPEtypeCONTRACT_ELEMENT_ATT_MANDATORY mandatory,CONTRACT_ELEMENT_EXTENSION_CHILD_DESCRIPTION! description;CONTRACT_ELEMENT_EXTENSION_CHILD_CONTRACT_ELEMENT_REFERENCE$contractElementRef%CONTRACT_ELEMENT_REFERENCE_ATT_REF_ID'contractElementReferenceId()VCode ,.-"org/eclipse/egf/core/CoreActivator /0 getDefault&()Lorg/eclipse/egf/core/CoreActivator; ,2 34 getPluginID()Ljava/lang/String; 6872org/eclipse/egf/common/helper/ExtensionPointHelper 9:getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; < LineNumberTableLocalVariableTable SourceFileIContractConstants.java       "#%&()*;+15;= !>?@ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/IContractReferenceConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1199 Text-content-md5: 7cff9a8c0cc3ec755f6f91237c7dfed9 Text-content-sha1: 5327198c8b70a08ba7c03baabf84d8b849b8d7a9 Content-length: 1258 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11?org/eclipse/egf/core/extensionpoint/IContractReferenceConstantsjava/lang/Object%CONTRACT_REFERENCE_EXTENSION_POINT_IDLjava/lang/String; ConstantValue contractReferences"FULLY_QUALIFIED_EXTENSION_POINT_ID(CONTRACT_REFERENCE_EXTENSION_POINT_CHILD contractElementReference7CONTRACT_REFERENCE_ATT_REFERENCED_CONTRACT_ELEMENT_NAMEreferencedContractElementName Deprecated5CONTRACT_REFERENCE_ATT_REFERENCED_CONTRACT_ELEMENT_IDreferencedContractElementId6CONTRACT_REFERENCE_ATT_REFERENCED_FACTORY_COMPONENT_IDreferencedAssetId()VCode "org/eclipse/egf/core/CoreActivator   getDefault&()Lorg/eclipse/egf/core/CoreActivator; " #$ getPluginID()Ljava/lang/String; &('2org/eclipse/egf/common/helper/ExtensionPointHelper )*getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; , LineNumberTableLocalVariableTable SourceFile IContractReferenceConstants.java   ?!%+- ./0 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/IFactoryComponentConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1423 Text-content-md5: b22e1a8b169cfecee0f75f240337cb6c Text-content-sha1: d61400d9a5047fe86a2483097c1d33ddabea2ff6 Content-length: 1482 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1@>org/eclipse/egf/core/extensionpoint/IFactoryComponentConstantsjava/lang/Object$FACTORY_COMPONENT_EXTENSION_POINT_IDLjava/lang/String; ConstantValue factoryComponent"FULLY_QUALIFIED_EXTENSION_POINT_ID!FACTORY_COMPONENT_EXTENSION_CHILD-FACTORY_COMPONENT_EXTENSION_CHILD_DESCRIPTION descriptionFACTORY_COMPONENT_ATT_IDidFACTORY_COMPONENT_ATT_NAMEnameFACTORY_COMPONENT_ATT_DOMAINdomain!FACTORY_COMPONENT_ATT_CONTRACT_ID contractId(FACTORY_COMPONENT_ATT_PRODUCTION_PLAN_IDproductionPlanIdROOT_FACTORY_COMPONENT_ID  rootAsset!ATT_CONTRACT_ELEMENT_REFERENCE_ID#contractElementReferenceIdCONTRACT_REF_CHILD&contractElementRef()VCode +-,"org/eclipse/egf/core/CoreActivator ./ getDefault&()Lorg/eclipse/egf/core/CoreActivator; +1 23 getPluginID()Ljava/lang/String; 5762org/eclipse/egf/common/helper/ExtensionPointHelper 89getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ; LineNumberTableLocalVariableTable SourceFileIFactoryComponentConstants.java     !"$%'();*04:< =>? Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/IFactoryComponentInvocationConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1171 Text-content-md5: 4fd89bd7a851b5844831ab37d9875dc4 Text-content-sha1: 8f0237c665cb10cb465f775f3b440bb9a15dcac4 Content-length: 1230 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Horg/eclipse/egf/core/extensionpoint/IFactoryComponentInvocationConstantsjava/lang/Object/FACTORY_COMPONENT_INVOCATION_EXTENSION_POINT_IDLjava/lang/String; ConstantValue assetConfiguration"FULLY_QUALIFIED_EXTENSION_POINT_ID,FACTORY_COMPONENT_INVOCATION_EXTENSION_CHILD%FACTORY_COMPONENT_INVOCATION_ATT_NAMEname&FACTORY_COMPONENT_INVOCATION_ATT_FC_IDassetId0FACTORY_COMPONENT_INVOCATION_ATT_TASK_FACTORY_ID taskFactoryId+FACTORY_COMPONENT_INVOCATION_ATT_CONTEXT_ID contextId()VCode "org/eclipse/egf/core/CoreActivator   getDefault&()Lorg/eclipse/egf/core/CoreActivator; " #$ getPluginID()Ljava/lang/String; &('2org/eclipse/egf/common/helper/ExtensionPointHelper )*getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; , LineNumberTableLocalVariableTable SourceFile)IFactoryComponentInvocationConstants.java    ?!%+- ./0 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/IMappingConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 942 Text-content-md5: 9e78964a43154f8223fe3eba4b65d1fd Text-content-sha1: dcad41235926ad8203976e88cc9bdf7d0d7c1fc5 Content-length: 1001 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.5org/eclipse/egf/core/extensionpoint/IMappingConstantsjava/lang/ObjectMAPPING_EXTENSION_POINT_IDLjava/lang/String; ConstantValue mapping"FULLY_QUALIFIED_EXTENSION_POINT_IDMAPPING_EXTENSION_CHILDMAPPING_ATT_PATHpathMAPPING_ATT_SOURCEassetIdAsSourceMAPPING_ATT_TARGETassetIdAsTarget()VCode "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator;  ! getPluginID()Ljava/lang/String; #%$2org/eclipse/egf/common/helper/ExtensionPointHelper &'getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ) LineNumberTableLocalVariableTable SourceFileIMappingConstants.java    ?"(* +,- Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/IProductionPlanConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1056 Text-content-md5: e5eeae1034e7913c75720bee5728b601 Text-content-sha1: a3908ef76da72b5efa8d8ee04cac2fc2563b14c5 Content-length: 1115 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/()VCode "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator;  !" getPluginID()Ljava/lang/String; $&%2org/eclipse/egf/common/helper/ExtensionPointHelper '(getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; * LineNumberTableLocalVariableTable SourceFileIProductionPlanConstants.java     ;#)+ !,-. Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/extensionpoint/ITaskFactoryConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 809 Text-content-md5: 0b2e754279aa0f5055feb02e85386a4f Text-content-sha1: a1cb19092b4019f045d86e6f1c16cdcc0d7cafba Content-length: 868 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1%9org/eclipse/egf/core/extensionpoint/ITaskFactoryConstantsjava/lang/ObjectTASK_FACTORY_EXTENSION_POINT_IDLjava/lang/String; ConstantValue  taskFactory"FULLY_QUALIFIED_EXTENSION_POINT_ID"TASK_FACTORY_EXTENSION_POINT_CHILD()VCode "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator;   getPluginID()Ljava/lang/String; 2org/eclipse/egf/common/helper/ExtensionPointHelper getExtensionPointId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  LineNumberTableLocalVariableTable SourceFileITaskFactoryConstants.java   ?! "#$ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/helper/EclipseBuilderHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4018 Text-content-md5: 396dde302f393d730edea8de00deb59a Text-content-sha1: d2ee43ad9cd64fd9e53b5527943b36ad54f3f829 Content-length: 4077 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1t0org/eclipse/egf/core/helper/EclipseBuilderHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis2Lorg/eclipse/egf/core/helper/EclipseBuilderHelper;addNatureToProjecte(Lorg/eclipse/core/resources/IProject;Ljava/lang/String;Lorg/eclipse/core/runtime/IProgressMonitor;)V Exceptions&org/eclipse/core/runtime/CoreException #org/eclipse/core/resources/IProject getDescription2()Lorg/eclipse/core/resources/IProjectDescription; .org/eclipse/core/resources/IProjectDescription  getNatureIds()[Ljava/lang/String; java/lang/String "$#java/lang/System %& arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)V ( )* setNatureIds([Ljava/lang/String;)V , -.setDescription^(Lorg/eclipse/core/resources/IProjectDescription;Lorg/eclipse/core/runtime/IProgressMonitor;)Vproj%Lorg/eclipse/core/resources/IProject;natureIdLjava/lang/String;monitor+Lorg/eclipse/core/runtime/IProgressMonitor; description0Lorg/eclipse/core/resources/IProjectDescription; prevNatures[Ljava/lang/String; newNaturesaddToFrontofBuildSpec:(Lorg/eclipse/core/resources/IProject;Ljava/lang/String;)V = >?getBuilderCommandi(Lorg/eclipse/core/resources/IProjectDescription;Ljava/lang/String;)Lorg/eclipse/core/resources/ICommand; A BC newCommand'()Lorg/eclipse/core/resources/ICommand; EGF#org/eclipse/core/resources/ICommand HIsetBuilderName(Ljava/lang/String;)V K LMsetFrontBuilderCommand}(Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/resources/IProjectDescription;Lorg/eclipse/core/resources/ICommand;)V project_p builderId_pbuilderCommand%Lorg/eclipse/core/resources/ICommand;commandaddToBuildSpec U VMsetBuilderCommand X YZ getBuildSpec(()[Lorg/eclipse/core/resources/ICommand; E\ ]^getBuilderName()Ljava/lang/String; ` abequals(Ljava/lang/Object;)Z description_pcommands&[Lorg/eclipse/core/resources/ICommand;iIremoveFromBuildSpec j kl setBuildSpec)([Lorg/eclipse/core/resources/ICommand;)V newCommands newCommand_p oldCommandsoldBuilderCommandmax SourceFileEclipseBuilderHelper.java!/*   =*N-:`:!+S-'*-,+ "% ,!4"<# >=/0=12=34656.78$98 :;2*+*M,+?**WM>,2[+_,2, BC DEC(H **c6*O2#de fg h;g*+*M,WN6E-2[+_2-dE:-!-`-dd!,i- 6 LM OPQR-S6T@USV[W\QfZ >gN0gO2W56PdeLfg6&me VM4z* +,+WN+,[<:-`E:--!-,S+6-6-2 -,S -:+i*++ F] ^ `a c%e.f8gAiKjTkYl\ifoirqsyt \ zN0zc6znQfoe ZpQ.meimeD"fgHqg LM3y* +,+WN+,[<:-`E:--!,S+6-6-2 -,S -:+i*++ Fw x z{ }%.8@JSX[ehpx \ yN0yc6ynQeoe YpQ.mehmeC"fgGqgrs Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper$PatternDescriptorHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3981 Text-content-md5: ab5bcff200bacc6c9c6692c75c8c274d Text-content-sha1: 43ff4daebe19eafc46648c6615d6966041543789 Content-length: 4040 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1[org/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper$PatternDescriptorHandlerjava/lang/ObjectJorg/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler_patternViewpoint(Lorg/eclipse/egf/model/PatternViewpoint;this$0DLorg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper;o(Lorg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper;Lorg/eclipse/egf/model/PatternViewpoint;)VCode   ()V  LineNumberTableLocalVariableTablethis]Lorg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper$PatternDescriptorHandler;patternViewpoint_phandleDescriptor2(Lorg/eclipse/egf/common/descriptor/IDescriptor;)V descriptor_p/Lorg/eclipse/egf/common/descriptor/IDescriptor;handleLibraryDescriptorD(Lorg/eclipse/egf/common/descriptor/IDescriptor;Ljava/lang/String;)V !#""org/eclipse/egf/model/ModelFactory $% eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; !' ()createPatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary; +-,$org/eclipse/egf/model/PatternLibrary ./setId(Ljava/lang/String;)V1name 354-org/eclipse/egf/common/descriptor/IDescriptor 67getValue&(Ljava/lang/String;)Ljava/lang/Object;9java/lang/String +; </setName>productionOrchestration +@ A/setProductionOrchestrationCruntimeOrchestration +E F/setRuntimeOrchestration H IJgetParentLibraryV(Lorg/eclipse/egf/model/AbstractPatternElement;)Lorg/eclipse/egf/model/PatternLibrary; +L MNgetPatternElements%()Lorg/eclipse/emf/common/util/EList; PRQ!org/eclipse/emf/common/util/EList STadd(Ljava/lang/Object;)Z VXW&org/eclipse/egf/model/PatternViewpoint YN getLibrarieslibraryFullId_pLjava/lang/String;newPatternLibrary&Lorg/eclipse/egf/model/PatternLibrary; parentLibraryhandlePatternDescriptor !a bccreatePatternModel&()Lorg/eclipse/egf/model/PatternModel; e-f"org/eclipse/egf/model/PatternModel e;imodel ek l/setPathnjava/lang/StringBuilderp7PatternDescriptorHandler.handlePatternDescriptor(..) _ mr /tPattern model id: mv wxappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;z must have a parent library! |~}Borg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper __loggerLorg/apache/log4j/Logger; m toString()Ljava/lang/String; org/apache/log4j/Logger error(Ljava/lang/Object;)VpatternFullId_pnewPatternModel$Lorg/eclipse/egf/model/PatternModel; loggerMessageLjava/lang/StringBuilder; -org/eclipse/egf/model/data/helper/ModelHelper getParentLibraryIdB(Lorg/eclipse/egf/model/AbstractPatternElement;)Ljava/lang/String;  getLibraryb(Ljava/lang/String;Lorg/eclipse/egf/model/PatternViewpoint;)Lorg/eclipse/egf/model/PatternLibrary;patternElement_p.Lorg/eclipse/egf/model/AbstractPatternElement;parentLibraryId SourceFile"FactoryComponentLoadingHelper.java InnerClassesPatternDescriptorHandler    K*+**,   5 q &N-,*-+028:-+=28?-+B28D*-G:K-OW*U-OW*  !!#2%C'J)O*`-p/4qqqZ[ h\]J'^]_ w `N-,d-+028g-+h28j*-G:K-OW*mYoq:su,uyuW{. 7 9;!=2?9A>BOEZFkGvI>www[ n9>^]ZIJ nM+N- -*M,RTV WY*^][ | Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 18285 Text-content-md5: e9ecc93f03ade23d8e2f07b35ca44238 Text-content-sha1: d18680876f6ebad8192d5aebbf3c5fb42ddae470 Content-length: 18344 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Borg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelperjava/lang/Object@org/eclipse/egf/model/data/helper/IFactoryComponentLoadingHelper__loggerLorg/apache/log4j/Logger;_factoryComponentRegistry4Lorg/eclipse/egf/core/data/FactoryComponentRegistry;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; ! LineNumberTableLocalVariableTable & $ (*)2org/eclipse/egf/core/data/FactoryComponentRegistry +, getInstance6()Lorg/eclipse/egf/core/data/FactoryComponentRegistry; . thisDLorg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper;getFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; 4 52getFactoryComponentFromRegistry 7 82loadFactoryComponent (: ;<addFactoryComponent=(Ljava/lang/String;Lorg/eclipse/egf/model/FactoryComponent;)VfactoryComponentId_pLjava/lang/String;factoryComponent(Lorg/eclipse/egf/model/FactoryComponent;t(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor;)Lorg/eclipse/egf/model/FactoryComponent; CEDHorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor FgetId H IAcreateFactoryComponentfactoryComponentDescriptor_pJLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor;factoryComponentId (N 12 PRQ"org/eclipse/egf/model/ModelFactory ST eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; PV IW*()Lorg/eclipse/egf/model/FactoryComponent;Y0org/eclipse/egf/model/internal/data/ModelElement C[ \]getFactoryComponentReaderH()Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader; X_ `asetFactoryComponentReaderI(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)V ced&org/eclipse/egf/model/FactoryComponent fgsetId(Ljava/lang/String;)V C cj kgsetName Cm ngetDescription cp qgsetDescription Ps tu createDomain ()Lorg/eclipse/egf/model/Domain; cw xy setDomain!(Lorg/eclipse/egf/model/Domain;)V C{ | getDomainPath~ java/lang/String equals(Ljava/lang/Object;)Z org/eclipse/egf/model/Domain gsetPath C  getContractId #org/eclipse/egf/model/ViewpointType CONTRACT%Lorg/eclipse/egf/model/ViewpointType; -org/eclipse/egf/model/data/helper/ModelHelper addViewpointTypeIdb(Ljava/lang/String;Lorg/eclipse/egf/model/ViewpointType;Lorg/eclipse/egf/model/FactoryComponent;)V P createPatternViewpoint*()Lorg/eclipse/egf/model/PatternViewpoint; E&org/eclipse/egf/model/PatternViewpoint PATTERN P createMappingViewpoint*()Lorg/eclipse/egf/model/MappingViewpoint; E&org/eclipse/egf/model/MappingViewpoint MAPPING C getProductionPlanId P  createFactory!()Lorg/eclipse/egf/model/Factory; c  setFactory"(Lorg/eclipse/egf/model/Factory;)V org/eclipse/egf/model/Factory gsetProductionPlanId +org/eclipse/egf/core/data/helper/DataHelper isBootstrapFactoryComponent(Ljava/lang/String;)Zjava/lang/StringBuffer;FactoryComponentLoadingHelper.createFactoryComponent(..) _ $g1No production plan defined for factory component append,(Ljava/lang/String;)Ljava/lang/StringBuffer; toString  error(Ljava/lang/Object;)VfcDescriptor_pfcIddomainLorg/eclipse/egf/model/Domain; domainPath contractIdproductionPlanIdfactoryLorg/eclipse/egf/model/Factory; loggerMessageLjava/lang/StringBuffer; @org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain +] Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader readFactoryComponent^(Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor; descriptor loadContract6(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; Signature_(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;java/util/ArrayList $(I)V  readContracth(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractDescriptor; @org/eclipse/egf/model/data/reader/descriptor/IContractDescriptor getContractElementDescriptors()Ljava/util/List; java/util/List iterator()Ljava/util/Iterator; java/util/Iterator   next()Ljava/lang/Object; Gorg/eclipse/egf/model/data/reader/descriptor/IContractElementDescriptor  loadContractElementr(Lorg/eclipse/egf/model/data/reader/descriptor/IContractElementDescriptor;)Lorg/eclipse/egf/model/ContractElement; %org/eclipse/egf/model/ContractElement gsetFactoryComponentId  add  hasNext()Z contractId_presultLjava/util/List;BLorg/eclipse/egf/model/data/reader/descriptor/IContractDescriptor;contractElementDescriptorsLjava/util/Iterator;contractElementDescriptorILorg/eclipse/egf/model/data/reader/descriptor/IContractElementDescriptor;contractElement'Lorg/eclipse/egf/model/ContractElement;LocalVariableTypeTable9Ljava/util/List;_Ljava/util/Iterator; P+ ,-createContractElement)()Lorg/eclipse/egf/model/ContractElement;  E e  1 2getContractElementName j  5 6getTypeHolderClassName 8 9:setContractType<(Lorg/eclipse/egf/model/ContractElement;Ljava/lang/String;)V  < => getTypeHolder3()Lorg/eclipse/egf/model/contract/type/ITypeHolder; @ ABgetContractType()Lorg/eclipse/egf/model/Type; DFEorg/eclipse/egf/model/Type G setTypeHolder  I J isMandatory L MN setMandatory(Z)V  m p R STgetContractReferenceIds%()Lorg/eclipse/emf/common/util/EList;  V S XZY!org/eclipse/emf/common/util/EList [\addAll(Ljava/util/Collection;)ZcontractElementDescriptor_pcontractElementName typeHolder1Lorg/eclipse/egf/model/contract/type/ITypeHolder;loadContractElementReferenceV(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/ContractElementReference; d efreadContractElementReferencex(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractElementReferenceDescriptor; Ph ijcreateContractElementReference2()Lorg/eclipse/egf/model/ContractElementReference; lem.org/eclipse/egf/model/ContractElementReference oqpPorg/eclipse/egf/model/data/reader/descriptor/IContractElementReferenceDescriptor rgetContractElementId lt ugsetReferencedContractElementId o1 lx yg setReferencedContractElementName o{ |getReferencedFcId l~ gsetReferencedFactoryComponentIdcontractReferenceId_preferenceToContractElement0Lorg/eclipse/egf/model/ContractElementReference;RLorg/eclipse/egf/model/data/reader/descriptor/IContractElementReferenceDescriptor;contractElementIdreferencedFcIdloadProductionPlanL(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/ProductionPlan;  readProductionPlann(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor; P createProductionPlan(()Lorg/eclipse/egf/model/ProductionPlan; e$org/eclipse/egf/model/ProductionPlan Forg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor  getContextId  g setContextId   getFactoryComponentInvocationIds  T7FactoryComponentLoadingHelper.loadProductionPlan(..) _ Production plan  is not found !  warnproductionPlanId_pproductionPlan&Lorg/eclipse/egf/model/ProductionPlan;HLorg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor; contextIdfcInvocationIds$Ljava/util/List;loadFactoryComponentInvocationX(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponentInvocation;  readFactoryComponentInvocationz(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentInvocationDescriptor; P  createFactoryComponentInvocation4()Lorg/eclipse/egf/model/FactoryComponentInvocation; e0org/eclipse/egf/model/FactoryComponentInvocation Rorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentInvocationDescriptor j  getReferencedFactoryComponentId   getTaskFactoryId  gsetTaskFactoryId  factoryComponentInvocationId_p fcInvocation2Lorg/eclipse/egf/model/FactoryComponentInvocation;TLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentInvocationDescriptor; taskFactoryIdloadTaskFactoryO(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/TaskFactoryHolder;  readTaskFactoryk(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/ITaskFactoryDescriptor; P createTaskFactoryHolder+()Lorg/eclipse/egf/model/TaskFactoryHolder; e'org/eclipse/egf/model/TaskFactoryHolder Corg/eclipse/egf/model/data/reader/descriptor/ITaskFactoryDescriptor getTaskFactoryClass  gsetFactoryClass   getTaskFactory  taskFactoryId_ptaskFactoryHolder)Lorg/eclipse/egf/model/TaskFactoryHolder;ELorg/eclipse/egf/model/data/reader/descriptor/ITaskFactoryDescriptor; taskFactoryLjava/lang/Object; loadContextE(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/Context;   readContextg(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContextDescriptor; P  createContext!()Lorg/eclipse/egf/model/Context; eorg/eclipse/egf/model/Context ?org/eclipse/egf/model/data/reader/descriptor/IContextDescriptor getContextElementDescriptorsForg/eclipse/egf/model/data/reader/descriptor/IContextElementDescriptor   loadContextElementp(Lorg/eclipse/egf/model/data/reader/descriptor/IContextElementDescriptor;)Lorg/eclipse/egf/model/ContextElement;   TgetContextElements X contextId_pcontextLorg/eclipse/egf/model/Context;ALorg/eclipse/egf/model/data/reader/descriptor/IContextDescriptor;contextElementDescriptorscontextElementDescriptorHLorg/eclipse/egf/model/data/reader/descriptor/IContextElementDescriptor;contextElement&Lorg/eclipse/egf/model/ContextElement;^Ljava/util/Iterator; P createContextElement(()Lorg/eclipse/egf/model/ContextElement; E e$org/eclipse/egf/model/ContextElement ! " getPluginId $ %g setPluginId ' (getContractReferenceId * +gsetContractReferenceId - .getKey 0 1gsetKey 3 4getReadableValue67FactoryComponentLoadingHelper.loadContextElement(..) _ 8+Context element readable value must be set! : ;gsetReadableValue = >BgetType @ ABsetContextType(Lorg/eclipse/egf/model/Type;)V 'Ejava/lang/StringBuilder DH&Could not instanciate type holder for DJ K-(Ljava/lang/String;)Ljava/lang/StringBuilder; EN ! DP Q(C)Ljava/lang/StringBuilder;S:No reference to a contract element could be found either !U2It is likely this context element will be useless. DcontextElementDescriptor_pcontextElementIdcontractRefIdOrKeyValue readableValuetypeLorg/eclipse/egf/model/Type;Ljava/lang/StringBuilder;loadPatternLibraries=(Ljava/lang/String;Lorg/eclipse/egf/model/PatternViewpoint;)V a bcreadPatternLibrariesC(Ljava/lang/String;)Lorg/eclipse/egf/common/descriptor/IDescriptor;e[org/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper$PatternDescriptorHandler dg $ho(Lorg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper;Lorg/eclipse/egf/model/PatternViewpoint;)VjJorg/eclipse/egf/common/descriptor/pattern/helper/PatternDescriptorStrategy i& im no(iterateThroughPatternExtensionDescriptor~(Lorg/eclipse/egf/common/descriptor/pattern/helper/IPatternDescriptorHandler;Lorg/eclipse/egf/common/descriptor/IDescriptor;)VpatternViewpoint_p(Lorg/eclipse/egf/model/PatternViewpoint;libraryDescriptors/Lorg/eclipse/egf/common/descriptor/IDescriptor;handler]Lorg/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper$PatternDescriptorHandler;patternStrategyLLorg/eclipse/egf/common/descriptor/pattern/helper/PatternDescriptorStrategy; loadMappings$(Ljava/lang/String;)Ljava/util/List;J(Ljava/lang/String;)Ljava/util/List; | }c readMappings -org/eclipse/egf/common/descriptor/IDescriptor  getChildren P createMappingModel&()Lorg/eclipse/egf/model/MappingModel;id  getValue&(Ljava/lang/String;)Ljava/lang/Object; e"org/eclipse/egf/model/MappingModelname jpath assetIdAsSource  g setSourceassetIdAsTarget  g setTargetmappingDescriptorsmappingscurrentMappingDescriptormapping$Lorg/eclipse/egf/model/MappingModel;6Ljava/util/List;ELjava/util/Iterator; SourceFile"FactoryComponentLoadingHelper.java InnerClassesPatternDescriptorHandler!   3 " @<#$  > *%*'-"IK L#  /012 }#M+,*+3M,*+6M*-+,9,""RTUXZ[]!_# #/0#=>!?@1A *M+,+BN*-3M,*+GM*--,9,"& fhilnpqs(u#**/0*JK(?@L>52 = *-+M"~# /0 =>IA  M+OUM,X+Z^+BN,-b,+hi,+loOr:,v+z:} +:} ,O,O,+:O:,}/-(Yŷ:  ɶW -W  ϶,"v#*6BLT\kt| #f /0K?@#>L\>|>Y>O 82 R+M*,G"  # /0=> K "fYN+,-+,:C:( :* :,-W-"6 $25AIQZd#Rf/0f>f=> ]G 22!"A#$I%&' ](22!) sO*M,+./+0N,-3,+47+;:,?C,+HK,+OP,Q+UWW,"2 #-5:GS_q#4s/0s]$ j%&W^>5>_`ab {N+-+,c:cOgN-+kn:}-s-vwz:} -}-"B  " )2ALYbqy#H{/0{>{=>yg2G>b> [N+-+,:MON-+:} -:-WW3Y:W+WW ϶-"J%'(+,-"/)122A3I6R7c9o:x;<=?#R/0>=>21>Ro$' R PN+-+,:ON-+-:} -:} -:} --"NFHIMLNO"Q)S6U?VNWVZ_[n\v_`ad#R/0>=>?W>_7>> NN+-+,:6ON-+-: --"2 kmnqrs"u)w6y?{D|L#>N/0N>N=>L:?  'mN+-+,:UON-+:*:*:-  W-">")7:FNSak#Rm/0m>m=>kY74"FN' 74  OM+N,-,+ #+&:,)+,: ,/+2:&Y5:7W ϶ҧ ,9+<:,?W,CNDY5F:GI,LIMI OWRI OWTIW V,"j #+0;CHPX]ir#\ /0W X>+Y>XZ>if[\?]^_ 0+,+`NdY*,f:iYk:-l" '/#>0/00=>0pqrstu' vwxyz vYM+,+{N-~::O:,Wv,"B  &)5?Sg{#H/0=> s&"5ws?m' & d Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3730 Text-content-md5: f056e65db0314f7b4108560b3b82a8a8 Text-content-sha1: 0f59798f7a9227d132dc7a7b1506733d2f960ca8 Content-length: 3789 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1ZLorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper$1&org/eclipse/egf/model/util/ModelSwitchthis$0LLorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper;O(Lorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper;)VCode    ()VLineNumberTableLocalVariableTablethisNLorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper$1; caseDomain3(Lorg/eclipse/egf/model/Domain;)Ljava/lang/Integer; java/lang/Integer valueOf(I)Ljava/lang/Integer;object_pLorg/eclipse/egf/model/Domain; caseFactory4(Lorg/eclipse/egf/model/Factory;)Ljava/lang/Integer;Lorg/eclipse/egf/model/Factory;caseSpecification:(Lorg/eclipse/egf/model/Specification;)Ljava/lang/Integer;%Lorg/eclipse/egf/model/Specification; caseContract5(Lorg/eclipse/egf/model/Contract;)Ljava/lang/Integer; Lorg/eclipse/egf/model/Contract;casePatternLibrary;(Lorg/eclipse/egf/model/PatternLibrary;)Ljava/lang/Integer;&Lorg/eclipse/egf/model/PatternLibrary;casePatternModel9(Lorg/eclipse/egf/model/PatternModel;)Ljava/lang/Integer;$Lorg/eclipse/egf/model/PatternModel;casePatternViewpoint=(Lorg/eclipse/egf/model/PatternViewpoint;)Ljava/lang/Integer;(Lorg/eclipse/egf/model/PatternViewpoint;caseMappingModel9(Lorg/eclipse/egf/model/MappingModel;)Ljava/lang/Integer;$Lorg/eclipse/egf/model/MappingModel;caseMappingViewpoint=(Lorg/eclipse/egf/model/MappingViewpoint;)Ljava/lang/Integer;(Lorg/eclipse/egf/model/MappingViewpoint;2(Lorg/eclipse/egf/model/Domain;)Ljava/lang/Object; 7 8(Lorg/eclipse/egf/model/PatternModel;)Ljava/lang/Object; : )*9(Lorg/eclipse/egf/model/Specification;)Ljava/lang/Object; = !4(Lorg/eclipse/egf/model/Contract;)Ljava/lang/Object; @ #$<(Lorg/eclipse/egf/model/PatternViewpoint;)Ljava/lang/Object; C ,-:(Lorg/eclipse/egf/model/PatternLibrary;)Ljava/lang/Object; F &'8(Lorg/eclipse/egf/model/MappingModel;)Ljava/lang/Object; I /0<(Lorg/eclipse/egf/model/MappingViewpoint;)Ljava/lang/Object; L 233(Lorg/eclipse/egf/model/Factory;)Ljava/lang/Object; O  SourceFile*FactoryComponentSortingPriorityHelper.java Signature=Lorg/eclipse/egf/model/util/ModelSwitch;EnclosingMethodVJorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper X initialize InnerClasses  8 *+ *  _   9e 9m ! 9u"#$ 9z%&' 9()* :+,- 9./0 :123 :4A5 &*+6A)8 &*+9A ; &*+<A#> &*+?A,A &*+BA&D &*+EA/G &*+HA2J &*+KAM &*+NPQRSTUWY  Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2023 Text-content-md5: 3c49f890b522bd81a5c11f41224e5f79 Text-content-sha1: 9f9ae5f2927b384e184e241f91ebd983b55fc903 Content-length: 2082 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1JJorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelperjava/lang/ObjectSORTING_PRIORITY_DOMAINI ConstantValueSORTING_PRIORITY_SPECIFICATIONSORTING_PRIORITY_FACTORYSORTING_PRIORITY_CONTRACT"SORTING_PRIORITY_PATTERN_VIEWPOINT SORTING_PRIORITY_PATTERN_LIBRARYSORTING_PRIORITY_PATTERN_MODEL"SORTING_PRIORITY_MAPPING_VIEWPOINTSORTING_PRIORITY_MAPPING_MODEL __instanceLLorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper; _modelSwitch(Lorg/eclipse/egf/model/util/ModelSwitch; Signature=Lorg/eclipse/egf/model/util/ModelSwitch;()VCode #  % &  initializeLineNumberTableLocalVariableTablethis getInstanceN()Lorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper; -  #0Lorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper$1 /2 3O(Lorg/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper;)V 5 getSortingPriority2(Lorg/eclipse/egf/model/NamedModelElementWithId;)I 9;:&org/eclipse/egf/model/util/ModelSwitch <=doSwitch3(Lorg/eclipse/emf/ecore/EObject;)Ljava/lang/Object;?java/lang/Integer >A BCintValue()ImodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;Ljava/lang/Integer; SourceFile*FactoryComponentSortingPriorityHelper.java InnerClasses!        !; *"*$'LMN(  ) *+!<, Y.,,'UVX(& !; */Y*14' _ (  )67![*4+8>M, ,@'  ( )DE <FGHI / Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/natures Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/natures/BaseProject.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 739 Text-content-md5: 839a13a42cd2bab48f9c0c3b692150af Text-content-sha1: c331f6f6d30d1b8ac82468e0b4733baeab4b568e Content-length: 798 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11org/eclipse/egf/core/internal/natures/BaseProject'org/eclipse/core/runtime/PlatformObject)org/eclipse/core/resources/IProjectNature_project%Lorg/eclipse/core/resources/IProject;()VCode  LineNumberTableLocalVariableTablethis3Lorg/eclipse/egf/core/internal/natures/BaseProject; getProject'()Lorg/eclipse/core/resources/IProject;   setProject((Lorg/eclipse/core/resources/IProject;)V project_p SourceFileBaseProject.java!  3*    /*  >*+ "# Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/natures/FactoryComponentProject.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1011 Text-content-md5: 37006a61d71acc6fac12234c6e58fcf4 Text-content-sha1: fd8d72f2c41349e562d89afccd63834f116a5165 Content-length: 1070 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&=org/eclipse/egf/core/internal/natures/FactoryComponentProject1org/eclipse/egf/core/internal/natures/BaseProject()VCode  LineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/core/internal/natures/FactoryComponentProject; configure Exceptions&org/eclipse/core/runtime/CoreException   getProject'()Lorg/eclipse/core/resources/IProject;&org.eclipse.egf.pattern.PatternBuilder 0org/eclipse/egf/core/helper/EclipseBuilderHelper addToBuildSpec:(Lorg/eclipse/core/resources/IProject;Ljava/lang/String;)V.org.eclipse.egf.pattern.PatternTemplateBuilder deconfigure " #removeFromBuildSpec SourceFileFactoryComponentProject.java!3*   E** # $%   E*!*! ( )*  $% Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/production Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/production/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 659 Text-content-md5: af4616e5823e7e7738eb7ef2fc185c88 Text-content-sha1: f973db5247582261dd325a7530773c5b6f7535d6 Content-length: 718 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11org/eclipse/egf/core/internal/production/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue 1org.eclipse.egf.core.internal.production.messages)ProductionManager_ProgressReporting_Title()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this3Lorg/eclipse/egf/core/internal/production/Messages; SourceFile Messages.java!   ,   3*   Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/production/ProductionManager.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 10293 Text-content-md5: 929841802af0f9b33183b4ea2ea26954 Text-content-sha1: 3a7ba4c39d1fcb598c31d284480cf960e2dc10b5 Content-length: 10352 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1:org/eclipse/egf/core/internal/production/ProductionManagerjava/lang/Object__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTable " this?valueOf&(Ljava/lang/Object;)Ljava/lang/String; 2A B(Ljava/lang/String;)V 2D EFappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; 2H ItoString KMLjava/util/List NOsize()I QSR#org/eclipse/core/runtime/SubMonitor TUconverte(Lorg/eclipse/core/runtime/IProgressMonitor;Ljava/lang/String;I)Lorg/eclipse/core/runtime/SubMonitor; KW XYiterator()Ljava/util/Iterator; []\java/util/Iterator ^_next()Ljava/lang/Object;a&org/eclipse/egf/core/task/AbstractTask Qc denewChild((I)Lorg/eclipse/core/runtime/SubMonitor; `g hiexecute/(Lorg/eclipse/core/runtime/IProgressMonitor;I)Z [k lmhasNext()Z oqp)org/eclipse/core/runtime/IProgressMonitor rm isCanceled ot udonefactoryComponentId_pprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;resultZprogressMonitor tasksListLjava/util/List;generationMessage subMonitor%Lorg/eclipse/core/runtime/SubMonitor;tasksLjava/util/Iterator;LocalVariableTypeTable:Ljava/util/List;>Ljava/util/Iterator; Signature(Ljava/lang/String;Lorg/eclipse/egf/core/context/ProductionContext;Ljava/util/List;)V "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator; getFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent;java/lang/StringBuffer!ProductionManager.generate(..) _ A%Unable to generate factory component: E,(Ljava/lang/String;)Ljava/lang/StringBuffer;, factory component not found. H  error(Ljava/lang/Object;)V.org/eclipse/egf/core/context/ProductionContext 3(Lorg/eclipse/egf/core/context/ProductionContext;)V -org/eclipse/egf/model/data/helper/ModelHelper getProductionPlanP(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/ProductionPlan; $org/eclipse/egf/model/ProductionPlan  getContext!()Lorg/eclipse/egf/model/Context;  getContractJ(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/Contract; org/eclipse/egf/model/Contract getContractElements%()Lorg/eclipse/emf/common/util/EList; java/util/Collections  emptyList()Ljava/util/List;  feedProductionContextt(Lorg/eclipse/egf/core/context/ProductionContext;Lorg/eclipse/egf/model/Context;Ljava/lang/String;Ljava/util/List;)V getFactoryComponentInvocations W!org/eclipse/emf/common/util/EList0org/eclipse/egf/model/FactoryComponentInvocation getFactoryComponentId  d(Lorg/eclipse/egf/core/context/ProductionContext;Lorg/eclipse/egf/model/Context;Ljava/lang/String;)V getTaskFactoryId getTaskFactory+()Lorg/eclipse/egf/model/TaskFactoryHolder; 'org/eclipse/egf/model/TaskFactoryHolder _ getFactory&org/eclipse/egf/core/task/ITaskFactory  createTask*()Lorg/eclipse/egf/core/task/AbstractTask; ` BsetFactoryComponentId ` setProductionContext K add(Ljava/lang/Object;)ZproductionContext_p0Lorg/eclipse/egf/core/context/ProductionContext;resultingTasks_pfc(Lorg/eclipse/egf/model/FactoryComponent; loggerMessageLjava/lang/StringBuffer;productionContextproductionPlan&Lorg/eclipse/egf/model/ProductionPlan;productionPlanContextLorg/eclipse/egf/model/Context;contractElementscontract Lorg/eclipse/egf/model/Contract; fcInvocations fcInvocation2Lorg/eclipse/egf/model/FactoryComponentInvocation;fcInvocationContextfcInvocationProductionContext taskFactoryIdtaskFactoryHolder)Lorg/eclipse/egf/model/TaskFactoryHolder; taskFactory(Lorg/eclipse/egf/core/task/ITaskFactory;task(Lorg/eclipse/egf/core/task/AbstractTask;9Ljava/util/List;HLjava/util/Iterator; org/eclipse/egf/model/Context getContextElements$org/eclipse/egf/model/ContextElement   getPluginId  getContractElementReference2()Lorg/eclipse/egf/model/ContractElementReference;   getReadableValue " #$ addContractElementReferenceValue(Lorg/eclipse/egf/core/context/ProductionContext;Lorg/eclipse/egf/model/ContractElementReference;Ljava/lang/Object;ZLjava/lang/String;)V & '(getContextType()Lorg/eclipse/egf/model/Type; *,+org/eclipse/egf/model/Type -_ getTypeHolder//org/eclipse/egf/model/contract/type/ITypeHolder .1 2B setPluginId .4 56getValue&(Ljava/lang/String;)Ljava/lang/Object; 8 9getKey ; <=addContextElement9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)V?4ProductionManager.initializeProductionContext(..) _ ACould not interpret C using registered E FGgetClass()Ljava/lang/Class; J ! context_plocalFactoryComponentId_pcontextElementscontextElement&Lorg/eclipse/egf/model/ContextElement;contextElementPluginId contextValueLjava/lang/Object;contractElementReference0Lorg/eclipse/egf/model/ContractElementReference; typeHolder1Lorg/eclipse/egf/model/contract/type/ITypeHolder;Ljava/lang/StringBuilder;;(Lorg/eclipse/egf/core/context/ProductionContext;Lorg/eclipse/egf/model/Context;Ljava/lang/String;Ljava/util/List;)V K[ \misEmpty^%org/eclipse/egf/model/ContractElement ] a bcgetContextElementValue8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; ]e fgetContractElementReferencesh.org/eclipse/egf/model/ContractElementReferenceproductionPlanContext_pcontractElements_pcontractElement'Lorg/eclipse/egf/model/ContractElement;value oqp+org/eclipse/egf/core/data/helper/DataHelper rsresolveContractElement3(Lorg/eclipse/egf/model/ContractElementReference;)V gu vwgetReferencedContractElement)()Lorg/eclipse/egf/model/ContractElement; ] ]z {(getContractType}9ProductionManager.addContractElementReferenceValue(..) _ ContractElement  and Element are not compatible.  E(C)Ljava/lang/StringBuffer;&ContractElement expected type holder :Element value :  E(Z)Ljava/lang/StringBuffer; reference_pvalue_p decodeValue_p pluginId_pcontractElementNamecontractElementFcId existingValue SourceFileProductionManager.java! 3  1-  /*!- #$%&  >,: 'Y):*Y,:*+/2Y4:@+CG:,JhP:V:Z`bf~>j.nԧ!: sn~> sn~>;J:;= >AF%H;KNNZOuNQSUVSUW\ #$v9wxyz{x|};~9N>W2|W2%1 +:1Y:W+WWY,:::::   ::*+:  Z:  : Y: *    :: :::+ -W*  -/ jw"b def!g(h0i;j<mFoMpVrYs`teuqwvy{}~}#$v9} #FMVY}`  v m b J9. "     Y   +,,:Z::::*+!%).:  0 3:+7-:G2Y>@:  @CCW BC DHCICW Gj;V %.1:?Sdm}p #$KL9M%NO.P91QR:STdsUV 8W MXY $ z*+,-ZV:TZ]:+_-`:5d:  Zg:*+! jj. *8=ZeoyRz#$zzizL9zj}*Ekl87mRZ ST zj#$  ,n,t:_:x:+`:  : y).:   0 -;3:  lY|:  ~W W  W W  DH W W W -:  + :n (-.16GLUbgs|      #$TRz9 kl99(R 1mR GUV sW  Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/production/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 618 Text-content-md5: 8fbf28b49ae172e8ad8fa35c045885a6 Text-content-sha1: 5c2606ef3c45c56d51a06e30d50716cc09453087 Content-length: 628 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### ProductionManager_ProgressReporting_Title=Generating Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/DefaultFactoryComponentReader.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 13133 Text-content-md5: e174e66be020f9206e0c9e4fc9afeaa6 Text-content-sha1: 4e670117918aca60ca2c8a402c2488bcd034217c Content-length: 13192 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Borg/eclipse/egf/core/internal/reader/DefaultFactoryComponentReaderjava/lang/ObjectDorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader PLUGIN_IDLjava/lang/String;()VCode "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator;   getPluginID()Ljava/lang/String;  LineNumberTableLocalVariableTable   thisDLorg/eclipse/egf/core/internal/reader/DefaultFactoryComponentReader;readDescriptionD(Lorg/eclipse/core/runtime/IConfigurationElement;)Ljava/lang/String;" description $&%.org/eclipse/core/runtime/IConfigurationElement '( getChildrenE(Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement; $* +getValue element_p0Lorg/eclipse/core/runtime/IConfigurationElement; descriptions1[Lorg/eclipse/core/runtime/IConfigurationElement;readFactoryComponentW(Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor;3factoryComponent 5762org/eclipse/egf/common/helper/ExtensionPointHelper 89getConfigurationElementh(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/core/runtime/IConfigurationElement; ; 0<u(Lorg/eclipse/core/runtime/IConfigurationElement;)Lorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor;fcId_p?Aorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor >A BI(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)V 5D E getId >G HIsetId(Ljava/lang/String;)VKname $M NO getAttribute&(Ljava/lang/String;)Ljava/lang/String; >Q RIsetName T  >V WIsetDescriptionYdomain >[ \I setDomainPath^ contractId >` aI setContractIdcproductionPlanId >e fIsetProductionPlanId&factoryComponentConfigurationElement_p descriptorCLorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor;fcName domainPathreadProductionPlang(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptor;oproductionPlanq?org/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptor pA pGu contextId pw xI setContextIdzassetConfiguration|id p~ IaddFactoryComponentInvocationIdproductionPlanId_pALorg/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptor;"productionPlanConfigurationElementfcInvocationElementsiIfcInvocationIdreadFactoryComponentInvocations(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor;Korg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor A G QassetId IsetReferencedFactoryComponentId taskFactoryId IsetTaskFactoryId wfactoryComponentInvocationId_pMLorg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor; fcInvocationConfigurationElementfcInvocationNamereferencedFcId readContracta(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContractDescriptor;contract9org/eclipse/egf/core/reader/descriptor/ContractDescriptor A GcontractElement  readContractElementt(Lorg/eclipse/core/runtime/IConfigurationElement;)Lorg/eclipse/egf/core/reader/descriptor/ContractElementDescriptor; addContractElementDescriptorL(Lorg/eclipse/egf/model/data/reader/descriptor/IContractElementDescriptor;)V contractId_p;Lorg/eclipse/egf/core/reader/descriptor/ContractDescriptor;contractConfigurationElementcontractElementscontractElementDescriptorBLorg/eclipse/egf/core/reader/descriptor/ContractElementDescriptor;@org/eclipse/egf/core/reader/descriptor/ContractElementDescriptor A G IsetContractElementNametype 5 createInstanceV(Lorg/eclipse/core/runtime/IConfigurationElement;Ljava/lang/String;)Ljava/lang/Object;/org/eclipse/egf/model/contract/type/ITypeHolder  setTypeHolder4(Lorg/eclipse/egf/model/contract/type/ITypeHolder;)V  getClass()Ljava/lang/Class; java/lang/Class getName IsetTypeHolderClassName mandatory java/lang/Boolean  parseBoolean(Ljava/lang/String;)Z  setMandatory(Z)V VcontractElementRefcontractElementReferenceId IaddContractReferenceId%contractElementConfigurationElement_pcontractElementName typeHolder1Lorg/eclipse/egf/model/contract/type/ITypeHolder; isMandatoryZcontractReferences contractRefcontractReferenceId readContext`(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContextDescriptor;context8org/eclipse/egf/core/reader/descriptor/ContextDescriptor A GcontextElement  readContextElementDescriptors(Lorg/eclipse/core/runtime/IConfigurationElement;)Lorg/eclipse/egf/core/reader/descriptor/ContextElementDescriptor;  addContextElementDescriptorK(Lorg/eclipse/egf/model/data/reader/descriptor/IContextElementDescriptor;)V contextId_p:Lorg/eclipse/egf/core/reader/descriptor/ContextDescriptor;contextConfigurationElementcontextElementscontextElementDescriptorALorg/eclipse/egf/core/reader/descriptor/ContextElementDescriptor; ?org/eclipse/egf/core/reader/descriptor/ContextElementDescriptor  A  G $ getContributor)()Lorg/eclipse/core/runtime/IContributor; %org/eclipse/core/runtime/IContributor   I setPluginId   IsetContractReferenceIdkey   IsetKey! contextValue#value%class ')("org/eclipse/egf/model/ModelFactory *+ eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; '- ./ createType()Lorg/eclipse/egf/model/Type; 132org/eclipse/egf/model/Type 4(Ljava/lang/Object;)V 1  7 89setType(Lorg/eclipse/egf/model/Type;)V  ; <IsetReadableValue$contextElementConfigurationElement_ppluginIdkeyChild readableValue valueChild classNameLjava/lang/Object;Lorg/eclipse/egf/model/Type;readTaskFactoryd(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor;H taskFactory 5J KLcreateExecutableExtensionJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;N&org/eclipse/egf/core/task/ITaskFactoryPLorg/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor;(Lorg/eclipse/egf/core/task/ITaskFactory;readContractElementReferenceq(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor;aIorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor `A `GereferencedContractElementId `g hIsetContractElementIdjreferencedContractElementName `mreferencedAssetId `o pIsetReferencedFcIdcontractReferenceId_pKLorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor;contractReferencecontractElementIdreadPatternLibrariesC(Ljava/lang/String;)Lorg/eclipse/egf/common/descriptor/IDescriptor; readMappingsy8org/eclipse/egf/core/reader/descriptor/MappingDescriptor x | }OgetPluginIdForFactoryComponentmapping 5 getConfigurationElementsi(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement; x setValue'(Ljava/lang/String;Ljava/lang/Object;)VpathassetIdAsSourceassetIdAsTarget x addChild2(Lorg/eclipse/egf/common/descriptor/IDescriptor;)Vresult:Lorg/eclipse/egf/core/reader/descriptor/MappingDescriptor; coreActivator$Lorg/eclipse/egf/core/CoreActivator;mappingConfigurationElementsmappingElementcurrentMappingDescriptork(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/ITaskFactoryDescriptor;  EFx(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractElementReferenceDescriptor;  ]^z(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentInvocationDescriptor;  g(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContextDescriptor;  n(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor;  lmh(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractDescriptor;  ^(Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor;  01 SourceFile"DefaultFactoryComponentReader.java!  .  2 .  /*.   sM+!#N- -2)M,:; <>@*,-" ./01 V*2+4:HJKLI H=0< DM+>Y*@M,+CF+JLN-,-P*+S: +):,U+XL: ,Z+]L: ,_+bL: ,d,VWXYZ\ ]$^)a0b5e=hCjMkRlXobpgqmtwu|vyRg-hi bj0R"M5kb ^w clm & hNn+4:WpY*rN-+stL: -vy#:62{L:-}-J  +06AGU[f\ hhh=fh [-+;uA%/D"U ? uNy+4:dY*N-+JL:-L: -L: -tL: --V  +1<AGRW]hms\ uuu=sh h-+H<7R!h u TN+4:CY*N-+#:6*2: --B  +1<AGRRTTT=Rh G-+'/.$<  Y*M,+{L+JLN,-+:,,ɶͶ+չL: ק6,*+S: +):,+#:Y: 6 6   2:  L: ,   ,^ #$&,.4@JZ`gltzp - h.JlZ\gO"2/-   TN+4:CY*N-+#:6*2: -->    +1<AGRRTTT=Rh G-+'/.$<     Y* M,+{L +N,-+#:2L:,'+#:2JL:,:+ #:]2"L:2$L:<2$:+&,:  0 ɶ͹5, 6,:,j' )+!,&/0062C3L6W7]9j:p>s?~@ACDEFGHIJOPz =- h !>0?/C jss@~hA/>B-CD EF 8NG+IM:#OY*QN-+R-S-ɶͶW-. XZ[ ZY\]_$a*c6e488Z8=6h['H\]^ aN_+4:O`Y*bN-+cdL: -fiL:-klL:-n-Fnpqr p ostu!w-x2y;}GMY_Raaqa=_hrSs--2tGYuv 6=wv X xYzM+, N-+{:~:Y: 66n 2:xYz:  {C JJL L L L, ,F $&;DP`rR=>&/;a-DX AE '*+,A] '*+,A '*+,A '*+,Al '*+,A '*+,A0 &*+ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1717 Text-content-md5: bdc6af0baee7f63323f2792da7fdc83a Text-content-sha1: dd8da5fe0994e9c4266d92adc15b70c2f6f937ed Content-length: 1776 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$1Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;val$productionPlanId_pLjava/lang/String; val$fcId_pi(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;Ljava/lang/String;)VCode        E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$1;execute(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/model/data/reader/descriptor/ITypedDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader !readProductionPlann(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;w(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; &  SourceFile FactoryComponentReaderChain.javaEnclosingMethod+@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain InnerClassesAbstractReadingCommand    C*+ *,*-*+ n  C+**q"#A$ &*+%'()*,*- Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1876 Text-content-md5: 56af379468a86444c5d51f0814536c97 Text-content-sha1: b904579582f5c240b99d5cb7ad5a66d71a7f02d9 Content-length: 1935 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$2Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;"val$factoryComponentInvocationId_pLjava/lang/String; val$fcId_pi(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;Ljava/lang/String;)VCode        E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$2;execute(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/model/data/reader/descriptor/ITypedDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader !readFactoryComponentInvocationz(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentInvocationDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;w(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; &  SourceFile FactoryComponentReaderChain.javaEnclosingMethod+@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain -s(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor; InnerClassesAbstractReadingCommand    C*+ *,*-*+ ~  C+**"#A$ &*+%'()*,.*/ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1804 Text-content-md5: 977f13e5df77f78acb35d5dbfcabb670 Text-content-sha1: f886daa6d69310ba16c960213e9a8cd9ff1d8724 Content-length: 1863 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$3Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;val$contractId_pLjava/lang/String; val$fcId_pi(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;Ljava/lang/String;)VCode        E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$3;execute(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/model/data/reader/descriptor/ITypedDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader ! readContracth(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;w(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; &  SourceFile FactoryComponentReaderChain.javaEnclosingMethod+@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain -a(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContractDescriptor; InnerClassesAbstractReadingCommand    C*+ *,*-*+   C+**"#A$ &*+%'()*,.*/ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1800 Text-content-md5: edcb527ab4a041f9139f474f6907bb36 Text-content-sha1: 0f3432ea911db2673946c68be7494790a541d50e Content-length: 1859 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$4Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;val$contextId_pLjava/lang/String; val$fcId_pi(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;Ljava/lang/String;)VCode        E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$4;execute(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/model/data/reader/descriptor/ITypedDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader ! readContextg(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContextDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;w(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; &  SourceFile FactoryComponentReaderChain.javaEnclosingMethod+@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain -`(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContextDescriptor; InnerClassesAbstractReadingCommand    C*+ *,*-*+   C+**"#A$ &*+%'()*,.*/ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1816 Text-content-md5: dc4bffa29eda17ddce98e5cdd78eaf94 Text-content-sha1: 8bb153daf800ce20f374592870a761b4ae2f0dea Content-length: 1875 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$5Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;val$taskFactoryId_pLjava/lang/String; val$fcId_pi(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;Ljava/lang/String;)VCode        E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$5;execute(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/model/data/reader/descriptor/ITypedDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader !readTaskFactoryk(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/ITaskFactoryDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;w(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; &  SourceFile FactoryComponentReaderChain.javaEnclosingMethod+@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain -d(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor; InnerClassesAbstractReadingCommand    C*+ *,*-*+   C+**"#A$ &*+%'()*,.*/ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$6.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1861 Text-content-md5: 352b5d5498d44da8ebd953cd03828dc5 Text-content-sha1: f23c735d10a5f72e7bb75e5d98a41dc59a7bec69 Content-length: 1920 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$6Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;val$contractReferenceId_pLjava/lang/String; val$fcId_pi(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;Ljava/lang/String;)VCode        E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$6;execute(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/model/data/reader/descriptor/ITypedDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader !readContractElementReferencex(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractElementReferenceDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;w(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; &  SourceFile FactoryComponentReaderChain.javaEnclosingMethod+@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain -q(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor; InnerClassesAbstractReadingCommand    C*+ *,*-*+   C+**"#A$ &*+%'()*,.*/ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$7.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1406 Text-content-md5: f1fa9d9a6b49a7fa3d27263d6ddc2386 Text-content-sha1: cda851009264253e6820708bdd94cfa2786839b9 Content-length: 1465 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$7Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain; val$fcId_pLjava/lang/String;W(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;)VCode      E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$7;executew(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader readPatternLibrariesC(Ljava/lang/String;)Lorg/eclipse/egf/common/descriptor/IDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader; SourceFile FactoryComponentReaderChain.javaEnclosingMethod%@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain InnerClassesAbstractReadingCommand   >*+ *,*+    ? +*   !"#$&$' Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$8.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1398 Text-content-md5: be772ab3083fcde29264fb54db440b50 Text-content-sha1: 7c8d7799b0252690ff01ab10573dd864d5a77ae4 Content-length: 1457 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$8Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain; val$fcId_pLjava/lang/String;W(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;)VCode      E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$8;executew(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; Dorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader  readMappingsC(Ljava/lang/String;)Lorg/eclipse/egf/common/descriptor/IDescriptor;reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader; SourceFile FactoryComponentReaderChain.javaEnclosingMethod%@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain InnerClassesAbstractReadingCommand   >*+ *,*+    ? +*   !"#$&$' Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommand.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 865 Text-content-md5: 96963940330adcdf835308938c6b57fb Text-content-sha1: 79e79f790b14589f55746638c4cd0982291d0a20 Content-length: 924 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommandjava/lang/Objectthis$0BLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;E(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;)VCode    ()VLineNumberTableLocalVariableTablethisYLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommand;executew(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; SourceFile FactoryComponentReaderChain.java InnerClasses@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChainAbstractReadingCommand  4 *+ *     Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 8855 Text-content-md5: 31b0e5383f8ee6e15697ebaf9d189b00 Text-content-sha1: 92c85f9a759d751d7c9aafb681771af337b22ddf Content-length: 8914 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1@org/eclipse/egf/core/internal/reader/FactoryComponentReaderChainjava/lang/ObjectDorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader+FACTORY_COMPONENT_READER_EXTENSION_POINT_IDLjava/lang/String; ConstantValue factoryComponentReader __instanceBLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;_factoryComponentReadersLjava/util/List; SignatureXLjava/util/List;()VCode  java/util/ArrayList  (I)V  Borg/eclipse/egf/core/internal/reader/DefaultFactoryComponentReader  "$#java/util/List %&add(Ljava/lang/Object;)Z (*)"org/eclipse/egf/core/CoreActivator +, getDefault&()Lorg/eclipse/egf/core/CoreActivator; (. /0 getPluginID()Ljava/lang/String; 2432org/eclipse/egf/common/helper/ExtensionPointHelper 56getConfigurationElementsW(Ljava/lang/String;Ljava/lang/String;)[Lorg/eclipse/core/runtime/IConfigurationElement;8class 2: ;<createInstanceV(Lorg/eclipse/core/runtime/IConfigurationElement;Ljava/lang/String;)Ljava/lang/Object;LineNumberTableLocalVariableTablethisconfigurationElementReaders1[Lorg/eclipse/core/runtime/IConfigurationElement;configurationElement0Lorg/eclipse/core/runtime/IConfigurationElement;readerFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader; getInstanceH()Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader; I getFactoryComponentReaderZ(Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader; (N OPgetFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent;R0org/eclipse/egf/model/internal/data/ModelElement QT KGfactoryComponentId_pretrievedReaderfc(Lorg/eclipse/egf/model/FactoryComponent;readFactoryComponent^(Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor; "\ ]^iterator()Ljava/util/Iterator; `bajava/util/Iterator cdnext()Ljava/lang/Object; f YZ `h ijhasNext()ZfcId_p descriptorJLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor;readersLjava/util/Iterator;LocalVariableTypeTable\Ljava/util/Iterator;readProductionPlann(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor;uBorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$1 tw xi(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;Ljava/lang/String;)V z {|doRead(Ljava/lang/String;Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommand;Z)Lorg/eclipse/egf/common/descriptor/IDescriptor;~?org/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptorproductionPlanId_pHLorg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor;commandYLorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommand;readFactoryComponentInvocations(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor;Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$2 wKorg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptorfactoryComponentInvocationId_pMLorg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor; readContracta(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContractDescriptor;Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$3 w9org/eclipse/egf/core/reader/descriptor/ContractDescriptor contractId_p;Lorg/eclipse/egf/core/reader/descriptor/ContractDescriptor; readContext`(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContextDescriptor;Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$4 w8org/eclipse/egf/core/reader/descriptor/ContextDescriptor contextId_p:Lorg/eclipse/egf/core/reader/descriptor/ContextDescriptor;readTaskFactoryd(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor;Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$5 wLorg/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor;readContractElementReferenceq(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor;Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$6 wIorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptorcontractReferenceId_pKLorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor;readPatternLibrariesC(Ljava/lang/String;)Lorg/eclipse/egf/common/descriptor/IDescriptor;Borg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$7 W(Lorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain;Ljava/lang/String;)V/Lorg/eclipse/egf/common/descriptor/IDescriptor; readMappingsBorg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$8  KL Worg/eclipse/egf/core/internal/reader/FactoryComponentReaderChain$AbstractReadingCommand executew(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)Lorg/eclipse/egf/common/descriptor/IDescriptor; command_pusefactoryComponentReader_pZretrievedfactoryComponentReaderk(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/ITaskFactoryDescriptor;  x(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractElementReferenceDescriptor;  z(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentInvocationDescriptor;  g(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContextDescriptor;  h(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/model/data/reader/descriptor/IContractDescriptor;   SourceFile FactoryComponentReaderChain.java InnerClassesAbstractReadingCommand!  _**Y*Y !W'- 1L+Y:6>"2M,79:*!Wޱ=* 457!:,9-;><I=U;^?>*_? -2@A>BCI DE FG<H YJHH=FGI>KLpM'+MN- -QSM,=RS TUW>*? UVE WXYZ2M*[N-_:+eM-g,,=^` bcd#b0f>42? 2k0lm &no DEp  &nqrszNtY*+,v:*,y}N-=mnuv>4? klzNY*+,:*,yN-=}~>4? klzNY*+,:*,yN-=>4? klzNY*+,:*,yN-=>4? klzNY*+,:*,yN-=>4? klzNY*+,:*,yN-=>4? kljMY*+N*+-yM,= >*? kl jMY*+N*+-yM,= >*? kl {|V: *+:,:4*[:_:,:g=* "-0<DS>RV? VkVVSlDE-&no<DEp -&nqA'*+,ɰ=>A'*+,̰=>A'*+,ϰ=>A'*+,Ұ=>A'*+,հ=>J t Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/log4j Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/log4j/ILog4jConfigurer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 198 Text-content-md5: 44a91bf66586906c737156caf0777b0a Text-content-sha1: aacbb84eec4f0a6be7e7f78c2a636bd4941edefc Content-length: 257 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 +org/eclipse/egf/core/log4j/ILog4jConfigurerjava/lang/ObjecthandleConfiguration(Ljava/util/Properties;)V SourceFileILog4jConfigurer.java Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/natures Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/natures/FactoryComponentNatures.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1211 Text-content-md5: cbe74696d776e88556fd8f645593fd5a Text-content-sha1: c87cac3c30df0dd0f2e15c7e5216a25da1515708 Content-length: 1270 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 134org/eclipse/egf/core/natures/FactoryComponentNaturesjava/lang/ObjectFACTORY_COMPONENT_NATURELjava/lang/String; ConstantValue +org.eclipse.egf.core.FactoryComponentNaturePATTERN_BUILDER_ID &org.eclipse.egf.pattern.PatternBuilderPATTERN_TEMPLATE_BUILDER_ID.org.eclipse.egf.pattern.PatternTemplateBuilder()VCode  LineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/core/natures/FactoryComponentNatures;hasFactoryComponentNature((Lorg/eclipse/core/resources/IProject;)Z #org/eclipse/core/resources/IProject   hasNature(Ljava/lang/String;)Z "$#"org/eclipse/egf/core/CoreActivator %& getDefault&()Lorg/eclipse/egf/core/CoreActivator; "( )*log(Ljava/lang/Throwable;)V,&org/eclipse/core/runtime/CoreExceptionproject%Lorg/eclipse/core/resources/IProject;e(Lorg/eclipse/core/runtime/CoreException; SourceFileFactoryComponentNatures.java!   /*  [*L!+' +# $ %&-. /012 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/AbstractDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1531 Text-content-md5: 24f047d178440f1b4bd8c6fdef8f5694 Text-content-sha1: 3865738e53c0cd410f38e0219ea01fd2b1aba997 Content-length: 1590 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-9org/eclipse/egf/core/reader/descriptor/AbstractDescriptor3org/eclipse/egf/common/descriptor/GenericDescriptor=org/eclipse/egf/model/data/reader/descriptor/ITypedDescriptor_factoryComponentReaderFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;_idLjava/lang/String; _description()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/reader/descriptor/AbstractDescriptor;   reader_pgetFactoryComponentReaderH()Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;setFactoryComponentReaderfactoryComponentReader_pgetId()Ljava/lang/String; " setId(Ljava/lang/String;)Vid_pgetDescription ( setDescription description_p SourceFileAbstractDescriptor.java!   4* %&  F **+,- .  /*4 >*+ <= /*!C #$>*+! KL% & /*'R )$>*+' YZ* +, Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/ContextDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1519 Text-content-md5: ebe5af05d358ce0dfe86d0cdc907ecfd Text-content-sha1: 8bdc3636bcb7b98e12a7e63a5b757571e7fe0274 Content-length: 1578 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.8org/eclipse/egf/core/reader/descriptor/ContextDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptor?org/eclipse/egf/model/data/reader/descriptor/IContextDescriptor_contextElementDescriptorsLjava/util/List; SignatureZLjava/util/List;()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/core/reader/descriptor/ContextDescriptor; java/util/ArrayList  (I)V  reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;addContextElementDescriptorK(Lorg/eclipse/egf/model/data/reader/descriptor/IContextElementDescriptor;)V "$#java/util/List %&add(Ljava/lang/Object;)ZcontextElementDescriptor_pHLorg/eclipse/egf/model/data/reader/descriptor/IContextElementDescriptor;getContextElementDescriptors()Ljava/util/List;\()Ljava/util/List; SourceFileContextDescriptor.java!    4*  !   N*+*Y()*  D *+!W 1 2  '()* + /*9 ,- Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/ContextElementDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1974 Text-content-md5: 5e9bdf6ce953122abadf1c4f785aec17 Text-content-sha1: 5dbb7c9fa39ca0ea392666b9f3eec18e87819357 Content-length: 2033 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1:?org/eclipse/egf/core/reader/descriptor/ContextElementDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptorForg/eclipse/egf/model/data/reader/descriptor/IContextElementDescriptor_contractReferenceIdLjava/lang/String;_key_readableValue_typeLorg/eclipse/egf/model/Type; _pluginId()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/reader/descriptor/ContextElementDescriptor; reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;getContractReferenceId()Ljava/lang/String;  setContractReferenceId(Ljava/lang/String;)VcontractReferenceId_pgetKey $ setKeykey_pgetReadableValue ) setReadableValuereadableValue_pgetType()Lorg/eclipse/egf/model/Type; / setType(Lorg/eclipse/egf/model/Type;)Vtype_p getPluginId 5  setPluginId pluginId_p SourceFileContextElementDescriptor.java!     4* !" >*+ )*/*1  >*+ 9:!"/*#A % >*+# IJ&'/*(P * >*+( XY+,-/*._ 01>*+. gh2 3/*4n 6 >*+4 vw789 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/ContractDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1531 Text-content-md5: 9c5548d16665dc9ac1ddb6691086aec2 Text-content-sha1: 4820f1160ed598cae2c94e7ec6b2d00f00bc776c Content-length: 1590 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.9org/eclipse/egf/core/reader/descriptor/ContractDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptor@org/eclipse/egf/model/data/reader/descriptor/IContractDescriptor_contractElementDescriptorsLjava/util/List; Signature[Ljava/util/List;()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/reader/descriptor/ContractDescriptor; java/util/ArrayList  (I)V  reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;getContractElementDescriptors()Ljava/util/List;]()Ljava/util/List;addContractElementDescriptorL(Lorg/eclipse/egf/model/data/reader/descriptor/IContractElementDescriptor;)V %'&java/util/List ()add(Ljava/lang/Object;)ZcontractElementDescriptor_pILorg/eclipse/egf/model/data/reader/descriptor/IContractElementDescriptor; SourceFileContractDescriptor.java!    4*  !   N*+*Y()*  ! /*1 "# D *+$W 9 :  *+,- Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/ContractElementDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2451 Text-content-md5: 0b648c56a612c2b6cf0a7dd43e7b64a7 Text-content-sha1: be7ccc2582db7ebeba0056751640a7f45d7e5d54 Content-length: 2510 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1M@org/eclipse/egf/core/reader/descriptor/ContractElementDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptorGorg/eclipse/egf/model/data/reader/descriptor/IContractElementDescriptor_contractElementNameLjava/lang/String;_contractReferenceIdsLjava/util/List; Signature$Ljava/util/List; _isMandatoryZ _typeHolder1Lorg/eclipse/egf/model/contract/type/ITypeHolder;_typeHolderClassName()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethisBLorg/eclipse/egf/core/reader/descriptor/ContractElementDescriptor; java/util/ArrayList  !(I)V # reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;getContractElementName()Ljava/lang/String; ) setContractElementName(Ljava/lang/String;)VcontractElementName_p getTypeHolder3()Lorg/eclipse/egf/model/contract/type/ITypeHolder; 0  setTypeHolder4(Lorg/eclipse/egf/model/contract/type/ITypeHolder;)V typeHolder_pgetTypeHolderClassName 6 setTypeHolderClassNametypeHolderClassName_pgetContractReferenceIds()Ljava/util/List;&()Ljava/util/List;addContractReferenceId >@?java/util/List ABadd(Ljava/lang/Object;)ZcontractReferenceId_p isMandatory()Z G  setMandatory(Z)V isMandatory_p SourceFileContractElementDescriptor.java!     4* +, N*+*Y"345$%&'/*(< *+>*+( DE,-./*/L 12>*+/ TU34'/*5[ 7+>*+5 cd89: ;/*"k <+D *"+=W s t  CDE/*Fz HI>*F JKL Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1601 Text-content-md5: 47bff7a21e202c731ff3828a2792c97b Text-content-sha1: 22935d17602ef1bfa0c1d430b4a9a0ead85bab24 Content-length: 1660 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1,Iorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptorPorg/eclipse/egf/model/data/reader/descriptor/IContractElementReferenceDescriptor_contractElementNameLjava/lang/String;_contractElementId_referencedFcId()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor; reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;getContractElementId()Ljava/lang/String;  getContractElementName Deprecated  setContractElementId(Ljava/lang/String;)VcontractElementId_psetContractElementNamecontractElementName_pgetReferencedFcId ' setReferencedFcIdreferencedFcId_p SourceFile'ContractElementReferenceDescriptor.java!    4*    >*+ %& /*-  /*6  ! >*+ >?"#! >*+ GH$% /*&O (! >*+& WX)*+ Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1680 Text-content-md5: b21b30c7e7012c14615c0c720490d23f Text-content-sha1: 9846ed33dbfae0a038af2f0a87f89d7a129617e1 Content-length: 1739 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Aorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptorHorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentDescriptor_nameLjava/lang/String; _domainPath _contractId_productionPlanId()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethisCLorg/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor; reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;getName()Ljava/lang/String;  setName(Ljava/lang/String;)Vname_p getDomainPath "  getContractId % getProductionPlanId (  setDomainPath domainPath_p setContractId contractId_psetProductionPlanIdproductionPlanId_p SourceFileFactoryComponentDescriptor.java!     4*   >*+ &'/*- >*+ 56 /*!< #/*$C &/*'J )>*+! QR*+>*+$ YZ,->*+' ab./0 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1774 Text-content-md5: 828be9795a19f22e8c0c7e877a0010ea Text-content-sha1: 3f505ed0b1e26332b13c2a6f70287cb30ab97762 Content-length: 1833 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Korg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptorRorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentInvocationDescriptor_nameLjava/lang/String;_referencedFactoryComponentId_taskFactoryId _contextId()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor; reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;getName()Ljava/lang/String;  getReferencedFactoryComponentId  getTaskFactoryId "  getContextId % setName(Ljava/lang/String;)VfcInvocationName_psetReferencedFactoryComponentIdreferencedFcId_psetTaskFactoryIdtaskFactoryId_p setContextId contextId_p SourceFile)FactoryComponentInvocationDescriptor.java!     4*   >*+ &'/*- /*5  /*!= #/*$E &'>*+ MN()'>*+ UV*+'>*+! ]^,-'>*+$ ef./0 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/MappingDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 645 Text-content-md5: 87c87866b9cd688914186a4e8a88224d Text-content-sha1: a22ca36cb91e0211ec82b501988e6fa5a393bf77 Content-length: 704 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18org/eclipse/egf/core/reader/descriptor/MappingDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptor()VCode  LineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/core/reader/descriptor/MappingDescriptor;I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)V  reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader; SourceFileMappingDescriptor.java!3*   >*+ $%   Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1554 Text-content-md5: 75b5d7e93c8fa1b73d8bfcbc5a640669 Text-content-sha1: fd71e49c96d23b7100b5ec01ea4915d8dd6203b3 Content-length: 1613 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 15?org/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptor9org/eclipse/egf/core/reader/descriptor/AbstractDescriptorForg/eclipse/egf/model/data/reader/descriptor/IProductionPlanDescriptor_fcInvocationIdsLjava/util/List; Signature$Ljava/util/List; _contextIdLjava/lang/String;()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptor; java/util/ArrayList  (I)V  reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;addFactoryComponentInvocationId(Ljava/lang/String;)V $&%java/util/List '(add(Ljava/lang/Object;)ZfcInvocationId_p getFactoryComponentInvocationIds()Ljava/util/List;&()Ljava/util/List; getContextId()Ljava/lang/String; 0  setContextId contextId_p SourceFileProductionPlanDescriptor.java!    4*  !  N*+*Y()* !"D *+#W 1 2  ) *+ ,/*9 -./*/A 1">*+/ IJ2 34 Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1474 Text-content-md5: f59d70b01a44921be44a340b44bcbd94 Text-content-sha1: 8aaba54b3964f355e39e9cc0728716fbc9daf129 Content-length: 1533 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1+()VCode  I(Lorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;)VLineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor; reader_pFLorg/eclipse/egf/model/data/reader/descriptor/IFactoryComponentReader;getTaskFactory*()Lorg/eclipse/egf/core/task/ITaskFactory;  setTaskFactory+(Lorg/eclipse/egf/core/task/ITaskFactory;)V taskFactory_pgetTaskFactoryClass()Ljava/lang/String; " setTaskFactoryClass(Ljava/lang/String;)VtaskFactoryClass_p()Ljava/lang/Object; (  SourceFileTaskFactoryDescriptor.java!   4* %&   >*+ -. /*4  >*+ <=  /*!C #$ >*+! KL% A& %*')* Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/task/AbstractTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1972 Text-content-md5: 6e5c1a13cb2531cb5c7e360caa38e796 Text-content-sha1: ae92843b68618d4ebf09a605a725d6ec0bc04291 Content-length: 2031 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1I&org/eclipse/egf/core/task/AbstractTaskjava/lang/Object_productionContext0Lorg/eclipse/egf/core/context/ProductionContext;_fcIdLjava/lang/String; _ticksCountI()VCode  LineNumberTableLocalVariableTablethis(Lorg/eclipse/egf/core/task/AbstractTask;execute/(Lorg/eclipse/core/runtime/IProgressMonitor;I)Z  getReportingMessage()Ljava/lang/String; )org/eclipse/core/runtime/IProgressMonitor  beginTask(Ljava/lang/String;I)V ! # $% doExecute.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z ' ( doneprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; ticksCount_presultZ / setProductionContext3(Lorg/eclipse/egf/core/context/ProductionContext;)V 3 productionContext_pgetProductionContext2()Lorg/eclipse/egf/core/context/ProductionContext;getContextElementValue&(Ljava/lang/String;)Ljava/lang/Object; : 56 <>=.org/eclipse/egf/core/context/ProductionContext 7?8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;contractElementName_pcontextsetFactoryComponentId(Ljava/lang/String;)VfcId_p getTicksCount()I SourceFileAbstractTask.java!   /*  .>+** *+">:+&+&& 04 5679#:&9,;*..)*.+ ,,-$% /*.O 01 >*+2 WX456 /*2_ 78 Q*9M,+*.; hi @ ABC >*+. qrDEF /* y GH Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/task/CompoundTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2001 Text-content-md5: b60594081178defeb6bc1cfec3039243 Text-content-sha1: 41d98894c404d858070e1bcb8651589a97b904df Content-length: 2060 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Z&org/eclipse/egf/core/task/CompoundTask&org/eclipse/egf/core/task/AbstractTask_tasksLjava/util/List; Signature:Ljava/util/List; _failOnErrorZ()VCode   LineNumberTableLocalVariableTablethis(Lorg/eclipse/egf/core/task/CompoundTask;addTask+(Lorg/eclipse/egf/core/task/AbstractTask;)V  java/util/ArrayList  (I)V "!java/util/List #$add(Ljava/lang/Object;)Ztask_p(Lorg/eclipse/egf/core/task/AbstractTask; removeTask ) *$remove doExecute.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z . /0isEmpty()Z 2 34iterator()Ljava/util/Iterator; 6 78size()I :<;java/util/Iterator =>next()Ljava/lang/Object;@+org/eclipse/core/runtime/SubProgressMonitor ?B C/(Lorg/eclipse/core/runtime/IProgressMonitor;I)V E FGexecute/(Lorg/eclipse/core/runtime/IProgressMonitor;I)Z :I J0hasNextprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;resultstopLjava/util/Iterator; ticksCountItaskLocalVariableTypeTable>Ljava/util/Iterator;setFailOnError(Z)V failOnError_p SourceFileCompoundTask.java!   < ***+ ,   _**Y*+W3467%&' O**+(W>?A%&+, q=>*g*-[*1:*5l609:?Y+AD~= *>H2 HIJK"L1M4N@OTP_QaMoUHqqKLoM mN "M3O1>PQ@!R&S "M3TUV >* ^_W XY Node-path: plugins/org.eclipse.egf.core/bin/org/eclipse/egf/core/task/ITaskFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 197 Text-content-md5: 39fb3e99209bd29de0c0a901b4930703 Text-content-sha1: 19f3273775784fba9187671473a04a65b33ffac8 Content-length: 256 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 &org/eclipse/egf/core/task/ITaskFactoryjava/lang/Object createTask*()Lorg/eclipse/egf/core/task/AbstractTask; SourceFileITaskFactory.java Node-path: plugins/org.eclipse.egf.core/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 794 Text-content-md5: c29bd0460f73b595e6f616de7d2c1b73 Text-content-sha1: fa5cd7555855dd515264bc1af2a48cfca32a91b7 Content-length: 839 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ about.html,\ about.ini,\ about.mappings,\ about.properties,\ fc32.gif,\ plugin.xml,\ log4j.properties,\ plugin.properties src.includes = about.html,\ schema/ Node-path: plugins/org.eclipse.egf.core/fc32.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 749 Text-content-md5: d66169817d679160604fff1d134af4de Text-content-sha1: 9f4f742c9c6d5ed7b91bca7c620a085bef644be2 Content-length: 808 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a [@AABCCEEMPRTWo`R["rcU]#^%tfYjjj`(wi[b*mmmxk]c+nnnf4h7rrrl;lA>:.69Ȇ̈́ϰхӻՃ׫ق۱33&!3@F (VX XHJڜLD tD)(SNے&l٢3Ҥ&Z.+DLdIGPD FG&An TQ !)Ua (ǐP˘3'ϠCF@ӨS^=@hׯ; Node-path: plugins/org.eclipse.egf.core/log4j.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1375 Text-content-md5: 36d6f07e3e65b3c555703457fe35ab89 Text-content-sha1: a3d56c690c28553df7c28978b8ddeae1f76370fc Content-length: 1420 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### # Root logger. log4j.rootLogger=DEBUG, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout # Print the date in ISO 8601 format %d %5p [%t](%F:%L) - %m%n # %d le groupe date heure # %5p le niveau du logger : debug, info... # %t le thread dans lequel le code est ex\u00e9cut\u00e9 # %F le fichier source code Java correspondant (PEU performant) # %L le n\u00b0 de ligne o\u00f9 le logger est appel\u00e9 dans le source code. (PEU performant) # %m le message affich\u00e9 par le logger # %n saute \u00e0 la ligne entre chaque ligne de logs. log4j.appender.CONSOLE.layout.ConversionPattern=%d %5p [%t] - %m%n # Print only messages of level WARN or above in the package com.thalesgroup.x. #log4j.logger.com.thalesgroup.x=WARN Node-path: plugins/org.eclipse.egf.core/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1078 Text-content-md5: f9f717f7a33a04af3634bdcbe1f415a6 Text-content-sha1: 524318f6869687a96928d43d85d3af80ed6167d1 Content-length: 1123 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Core (Incubation) providerName=Eclipse Modeling Project EGFFactoryComponentExtensionPoint=EGF Factory Component EGFContractExtensionPoint=EGF Contract EGFProductionPlanExtensionPoint=EGF Production Plan EGFContextExtensionPoint=EGF Context EGFAssetConfigurationExtensionPoint=EGF Factory Component Invocation EGFTaskfactoryExtensionPoint=EGF Task Factory EGFContractReferencesExtensionPoint=EGF Contract References EGFFactoryComponentReaderExtensionPoint=EGF Factory Component Reader EGFMappingExtensionPoint=EGF Mapping EGFLog4JConfigurerExtensionPoint=EGF Log4J Configurer EGFFactoryComponentNature.name= Factory Component Development Node-path: plugins/org.eclipse.egf.core/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4737 Text-content-md5: 75d5c9c347b16d5b72591dad69228e15 Text-content-sha1: 711c8033eadd00ece4ca03b6251195b1d799321a Content-length: 4782 K 13 svn:mime-type V 10 text/plain PROPS-END Bootstrap factory component. A productive factory component has to depend on it. Node-path: plugins/org.eclipse.egf.core/schema Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/schema/assetConfiguration.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3648 Text-content-md5: 927143b98a56e6b4487ea8775ff29c1c Text-content-sha1: a2294ba4d550328f9996b24b3a9750677298d304 Content-length: 3693 K 13 svn:mime-type V 10 text/plain PROPS-END [Enter description of this extension point.] [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/context.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5376 Text-content-md5: bc8b40bcad1f2e5023644b204605811f Text-content-sha1: 1b42703b8632f5abfa4c31534720b1d156007f97 Content-length: 5421 K 13 svn:mime-type V 10 text/plain PROPS-END Extension point to define a context. Define a readable string value. This value may be interpreted The readable representation of the context element value. A type holder describing the context value, if this context element does not point to a contract element. Thus this attribute is optional. Context element refers directly to identified contract element. Context element is a simple (key, value) holder. [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/contract.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5630 Text-content-md5: f8d46f88468b376da5c090a9514ec41e Text-content-sha1: 5adeda1e74632a3f932b29ba773fe2fe53033aa4 Content-length: 5675 K 13 svn:mime-type V 10 text/plain PROPS-END Extension point to define a contract. Defines a contract element list. Defines a couple (name, type). Type has to be a java class. A contract element can reference another one through contractReferenceId attribute. Contract unique key. Whether or not a context element must match this contract element. If the contract element is mandatory, it should be valued by a context element. If not set, the contract element is mandatory. Define a description node. [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/contractReferences.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3541 Text-content-md5: e28aed698a45b7da76ed773444cbf646 Text-content-sha1: b0759a919175d46b07d84d8556e4eb85365dd0d4 Content-length: 3586 K 13 svn:mime-type V 10 text/plain PROPS-END Extension point to define a contract reference. Deprecated. Keep it only to ensure backward compatibility. [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/factoryComponent.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4430 Text-content-md5: eed29d78a539828df8971c8d3332e4d4 Text-content-sha1: f5da5e9ae964d9f7935d21ef4840ffb80a8b12ff Content-length: 4475 K 13 svn:mime-type V 10 text/plain PROPS-END Extension point to define a factory Component Asset identifier. Reference to a contract extension point through its id. Plug-in path to ecore domain model. Reference to a production plan extension point through its id. Define a description node. [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/factoryComponentReader.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3157 Text-content-md5: dd5824ec6d9377c7a9b6124c9ec15d07 Text-content-sha1: dc6de7ca7d30b07589105f3d80bb6a5ccb67e76f Content-length: 3202 K 13 svn:mime-type V 10 text/plain PROPS-END [This extension-point allows contributors to read EGF elements in different manner.] [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/log4jConfigurer.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2941 Text-content-md5: 6d73feb2c47453b11ce22444b19fa7f5 Text-content-sha1: dc27a09aa2d3dcb284451c2ca25739b8101afa2c Content-length: 2986 K 13 svn:mime-type V 10 text/plain PROPS-END Breaks the dependency towards UI for log4j configuration. Only one contribution is expected. The implementation of the expected services. Must implement ILog4jConfigurer interface (either directly or not). [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/mapping.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3963 Text-content-md5: 4b6596d3195080f7453a0256df88bb9d Text-content-sha1: 28a8aac5b7356d29e375d7aec0ca5a275bd780fb Content-length: 4008 K 13 svn:mime-type V 10 text/plain PROPS-END Extension point to define a mapping. Mapping identifier. Mapping name. The ecore2ecore file defining the mapping. The identifier of asset that hosts the domain used as input in this mapping. The identifier of asset that hosts the domain used as output in this mapping. [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/productionPlan.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3712 Text-content-md5: 464f5b8af2b0e6c30e7e1717a7e669fc Text-content-sha1: 5c2b7e99ad518f1a01f80fdc189fa436982e9919 Content-length: 3757 K 13 svn:mime-type V 10 text/plain PROPS-END Extension point to define a production plan. A production plan is a set of asset configuration id. Reference to an asset configuration extension point through its id. [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/schema/taskFactory.exsd Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3113 Text-content-md5: 300356ec70cdf6714885ef6858b7ac7a Text-content-sha1: 4234ea0e87cf4c789c41404a9aa1dff46dbf5253 Content-length: 3158 K 13 svn:mime-type V 10 text/plain PROPS-END [Enter description of this extension point.] [Enter the first release in which this extension point appears.] [Enter extension point usage example here.] [Enter API information here.] [Enter information about supplied implementation of this extension point.] Node-path: plugins/org.eclipse.egf.core/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/CoreActivator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11673 Text-content-md5: e67f0b8ef6919ef7936e381c708128bf Text-content-sha1: 784fe629543f92b50744c97d91a4bf9cf539a8d7 Content-length: 11718 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core; import java.util.ArrayList; import java.util.Collection; import org.apache.log4j.Logger; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.common.activator.AbstractActivator; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.common.progress.IProgressRunnable; import org.eclipse.egf.common.progress.ProgressReporter; import org.eclipse.egf.core.data.FactoryComponentRegistry; import org.eclipse.egf.core.extensionpoint.IFactoryComponentConstants; import org.eclipse.egf.core.internal.helper.FactoryComponentSortingPriorityHelper; import org.eclipse.egf.core.internal.production.Messages; import org.eclipse.egf.core.internal.production.ProductionManager; import org.eclipse.egf.core.internal.reader.DefaultFactoryComponentReader; import org.eclipse.egf.core.reader.descriptor.FactoryComponentDescriptor; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.ModelActivator; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor; /** * The activator class controls the plug-in life cycle. * @author brocard */ public class CoreActivator extends AbstractActivator { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(CoreActivator.class.getPackage().getName()); /** * Plug-in unique instance. */ private static CoreActivator __plugin; /** * Production manager. */ private ProductionManager _productionManager; /** * FactoryComponent registry. */ private FactoryComponentRegistry _fcRegistry; /** * Get activator shared instance. * @return */ public static CoreActivator getDefault() { return __plugin; } /** * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context_p) throws Exception { super.start(context_p); __plugin = this; // Configure log4j. Log4JConfigurator.configure(getBundle()); } /** * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext context_p) throws Exception { __plugin = null; super.stop(context_p); } /** * Generate given factory component synchronously. * That is execute it in current thread.
* This method should be used in case of dynamically created factory components.
* If not, it is highly recommended to use {@link #generateFactoryComponent(String, IProgressMonitor, boolean)} instead. * @param factoryComponent_p * @return */ public boolean generateFactoryComponentSynchronously(FactoryComponent factoryComponent_p) { boolean result = false; // Precondition. if (null == factoryComponent_p) { return result; } // Add new factory component to factory component registry. FactoryComponentRegistry fcRegistry = getFactoryComponentRegistry(); String fcId = factoryComponent_p.getId(); FactoryComponent alreadyKnownFc = fcRegistry.getFactoryComponent(fcId); boolean removeFromRegistry = false; // Precondition. if ((null != alreadyKnownFc) && (alreadyKnownFc != factoryComponent_p)) { StringBuilder loggerMessage = new StringBuilder("CoreActivator.generateFactoryComponentSynchronously(..) _ "); //$NON-NLS-1$ loggerMessage.append("Prevented corruption status to occur !"); //$NON-NLS-1$ loggerMessage.append("Trying to execute factory component ").append(factoryComponent_p.getName()); //$NON-NLS-1$ loggerMessage.append(" in replacement of ").append(alreadyKnownFc.getName()); //$NON-NLS-1$ loggerMessage.append(" .Both are having the same ID, and yet there are not equal !"); //$NON-NLS-1$ __logger.warn(loggerMessage.toString()); return result; } else if (null == alreadyKnownFc) { removeFromRegistry = true; fcRegistry.addFactoryComponent(fcId, factoryComponent_p); } // Generate it. result = generateFactoryComponent(fcId, null, false); // Finally remove it from factory component registry. if (removeFromRegistry) { fcRegistry.removeFactoryComponent(fcId); } return result; } /** * Generate identified factory component. * @param factoryComponentId_p * @param progressMonitor_p A progress monitor to use in case of a synchronous generation (can be null). * @param forkJob_p Should generation be executed in a job ? If true, given progress monitor remains unused. */ public boolean generateFactoryComponent(final String factoryComponentId_p, IProgressMonitor progressMonitor_p, boolean forkJob_p) { boolean result = true; // Lazy allocation. if (_productionManager == null) { _productionManager = new ProductionManager(); } // Create progress runnable. final ProductionManager productionManager = _productionManager; IProgressRunnable generateFc = new IProgressRunnable() { public String getReportingTitle() { return Messages.ProductionManager_ProgressReporting_Title + factoryComponentId_p; } public boolean run(IProgressMonitor runnableProgressMonitor_p) { return productionManager.generate(factoryComponentId_p, runnableProgressMonitor_p); } }; // Execute it. if (forkJob_p) { ProgressReporter.asyncExec(generateFc); } else { result = ProgressReporter.syncExec(generateFc, progressMonitor_p); } return result; } /** * Get the collection of installed factory components in the running Eclipse instance. * @return a not null collection. */ public Collection getFactoryComponentsInPlatform() { ArrayList resultingFcList = new ArrayList(0); // Get all configuration elements for 'factoryComponent' extension-point. IConfigurationElement[] fcConfigurationElements = ExtensionPointHelper.getConfigurationElements( getPluginID(), IFactoryComponentConstants.FACTORY_COMPONENT_EXTENSION_POINT_ID ); // Instantiate an eclipse platform factory component reader. DefaultFactoryComponentReader factoryComponentReader = new DefaultFactoryComponentReader(); // Loop over retrieved factory components as configuration element. for (int i = 0; i < fcConfigurationElements.length; i++) { // Read the factory component descriptor from the configuration element. FactoryComponentDescriptor fcDescriptor = factoryComponentReader.readFactoryComponent(fcConfigurationElements[i]); resultingFcList.add(getFactoryComponent(fcDescriptor)); } return resultingFcList; } /** * Read a factory component descriptor from specified configuration element got from plug-ins located in platform. * @param configurationElement_p a configuration element that conforms to 'factoryComponent' extension-point. * @return null if specified configuration element is null. */ public IFactoryComponentDescriptor getFactoryComponentDescriptorFromPlatform(IConfigurationElement configurationElement_p) { // Instantiate an eclipse platform factory component reader. DefaultFactoryComponentReader factoryComponentReader = new DefaultFactoryComponentReader(); return factoryComponentReader.readFactoryComponent(configurationElement_p); } /** * Get the plug-in id for the given factory component located in the running Eclipse platform only. * @param factoryComponentId_p * @return the plug-in id or null if not found. */ public String getPluginIdForFactoryComponent(String factoryComponentId_p) { String result = null; // Get the configuration element for 'factoryComponent' extension-point matching specified factory component id. IConfigurationElement fcConfigurationElement = ExtensionPointHelper.getConfigurationElement( getPluginID(), IFactoryComponentConstants.FACTORY_COMPONENT_EXTENSION_POINT_ID, factoryComponentId_p ); if (fcConfigurationElement != null) { // Found it, get the plug-in id from the current configuration element. result = fcConfigurationElement.getContributor().getName(); } return result; } /** * Get the hosting bundle for given model element.
* It means the bundle where the factory component container of given model element is defined. * @param modelElement_p * @return an {@link Bundle} instance if given model element is contained by a factory component located in the runtime; null otherwise. */ public Bundle getBundleForFactoryComponent(NamedModelElementWithId modelElement_p) { Bundle bundle = null; // Get the fc container for given model element FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(modelElement_p); if (fcContainer != null) { // Get the hosting bundle. String pluginID = getPluginIdForFactoryComponent(fcContainer.getId()); if (pluginID != null) { bundle = Platform.getBundle(pluginID); } } return bundle; } /** * Get a factory component for given factory component id. * @param factoryComponentId_p * @return an {@link FactoryComponent} instance or null if not found. */ public FactoryComponent getFactoryComponent(String factoryComponentId_p) { return ModelActivator.getDefault().getFactoryComponentLoadingHelper().getFactoryComponent(factoryComponentId_p); } /** * Get a factory component for given factory component descriptor. * @param fcDescriptor_p * @return an {@link FactoryComponent} instance or null if not found. */ public FactoryComponent getFactoryComponent(IFactoryComponentDescriptor fcDescriptor_p) { return ModelActivator.getDefault().getFactoryComponentLoadingHelper().getFactoryComponent(fcDescriptor_p); } /** * Get the factory component registry. * @return a not null instance of an {@link FactoryComponentRegistry}. */ public FactoryComponentRegistry getFactoryComponentRegistry() { // Lazy loading creation pattern. if (null == _fcRegistry) { _fcRegistry = FactoryComponentRegistry.getInstance(); } return _fcRegistry; } /** * Get the sorting priority for given model element. * @param modelElement_p * @return an integer or -1 if no priority is defined for given element. */ public int getSortingPriority(NamedModelElementWithId modelElement_p) { return FactoryComponentSortingPriorityHelper.getInstance().getSortingPriority(modelElement_p); } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/Log4JConfigurator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6611 Text-content-md5: a8a1b0b94a873bbb735e5d6a0c6ec13d Text-content-sha1: afd7ac4cec6134d697b09a5c2514667b00c0dc40 Content-length: 6656 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core; import java.net.URL; import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.log4j.ILog4jConfigurer; import org.osgi.framework.Bundle; /** * Log4J configurator. * @author Guillaume Brocard */ public class Log4JConfigurator { /** * Extension point "log4jConfigurer" short id. */ private static final String EXTENSION_POINT_SHORT_ID_LOG4J_CONFIGURER = "log4jConfigurer"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_FILE_APPEND = "log4j.appender.FILE.Append"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_FILE_MAX_BACKUP_INDEX = "log4j.appender.FILE.MaxBackupIndex"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_FILE_MAX_FILE_SIZE = "log4j.appender.FILE.MaxFileSize"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_FILE_LAYOUT_CONVERSION_PATTERN = "log4j.appender.FILE.layout.ConversionPattern"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_FILE_LAYOUT = "log4j.appender.FILE.layout"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_FILE_FILE = "log4j.appender.FILE.File"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_FILE = "log4j.appender.FILE"; //$NON-NLS-1$ public static final String LOG4J_ROOT_LOGGER = "log4j.rootLogger"; //$NON-NLS-1$ /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(Log4JConfigurator.class.getPackage().getName()); public static void configure(Bundle bundle_p) throws Exception { // Configure LOG4J output. URL log4jConfigurationURL = bundle_p.getEntry("/log4j.properties"); //$NON-NLS-1$ // Resolve the URL against the platform. URL resolvedURL = FileLocator.resolve(log4jConfigurationURL); // Load given log4j configuration as properties. Properties log4jProperties = new Properties(); log4jProperties.load(resolvedURL.openStream()); // Configure log4j with a file appender located in the workspace. addFileAppender(log4jProperties); // Configure log4j to trace in the Eclipse Console. ILog4jConfigurer log4jConfigurer = handleContributedLog4jConfigurer(log4jProperties); // Change the context class loader to allow log4J plug-in to load our Eclipse console appender class. Thread currentThread = Thread.currentThread(); ClassLoader initialContextClassLoader = currentThread.getContextClassLoader(); currentThread.setContextClassLoader(log4jConfigurer.getClass().getClassLoader()); try { // Initialize log4j with loaded properties. PropertyConfigurator.configure(log4jProperties); } finally { currentThread.setContextClassLoader(initialContextClassLoader); } if (__logger.isDebugEnabled()) { StringBuffer loggerMessage = new StringBuffer("CoreActivator.start(..) _ LOG4J is correctly configured!"); //$NON-NLS-1$ __logger.debug(loggerMessage.toString()); } } /** * Add a file appender to log EGF traces in a file in workspace. * @param properties_p */ private static void addFileAppender(Properties properties_p) { // Add a Rolling file appender. properties_p.put(LOG4J_APPENDER_FILE, "org.apache.log4j.RollingFileAppender"); //$NON-NLS-1$ // Set the file path. URL workspaceURL = Platform.getInstanceLocation().getURL(); String logFilePath = new StringBuilder(workspaceURL.getPath()).append(".metadata/egf.log").toString(); //$NON-NLS-1$ properties_p.put(LOG4J_APPENDER_FILE_FILE, logFilePath); // Set the layout pattern. properties_p.put(LOG4J_APPENDER_FILE_LAYOUT, "org.apache.log4j.PatternLayout"); //$NON-NLS-1$ properties_p.put(LOG4J_APPENDER_FILE_LAYOUT_CONVERSION_PATTERN, "%d %5p [%t] - %m%n"); //$NON-NLS-1$ // Max size set to 1Mo. properties_p.put(LOG4J_APPENDER_FILE_MAX_FILE_SIZE, "1024KB"); //$NON-NLS-1$ // Keep one backup file. properties_p.put(LOG4J_APPENDER_FILE_MAX_BACKUP_INDEX, "1"); //$NON-NLS-1$ // Erase file at each startup. properties_p.put(LOG4J_APPENDER_FILE_APPEND, "false"); //$NON-NLS-1$ // Update the root logger declaration. StringBuilder rootLogger = new StringBuilder((String) properties_p.get(LOG4J_ROOT_LOGGER)); rootLogger.append(ICommonConstants.COMMA_CHARACTER).append(ICommonConstants.WHITE_SPACE_CHARACTER).append("FILE"); //$NON-NLS-1$ properties_p.put(LOG4J_ROOT_LOGGER, rootLogger.toString()); } /** * Add an appender to trace into the Eclipse Console. * @param properties_p */ private static ILog4jConfigurer handleContributedLog4jConfigurer(Properties properties_p) { ILog4jConfigurer log4jConfigurer = null; // Get extensions abiding to user helper extension point. IConfigurationElement[] configurationElements = ExtensionPointHelper.getConfigurationElements(CoreActivator.getDefault().getPluginID(), EXTENSION_POINT_SHORT_ID_LOG4J_CONFIGURER); if ((null != configurationElements) && (configurationElements.length > 0)) { // There should be one implementation only ! // So take the first one, as expected. Object instantiatedClass = ExtensionPointHelper.createInstance(configurationElements[0], ExtensionPointHelper.ATT_CLASS); // Make sure this is the correct resulting type. if (instantiatedClass instanceof ILog4jConfigurer) { log4jConfigurer = (ILog4jConfigurer) instantiatedClass; log4jConfigurer.handleConfiguration(properties_p); } } return log4jConfigurer; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/context Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/context/ProductionContext.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3266 Text-content-md5: e2626705304d506059480babdbee1a88 Text-content-sha1: 30460ee56cca306e3781c8db5766a342efd6c707 Content-length: 3311 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.context; import java.util.HashMap; import java.util.Map; import org.eclipse.egf.common.constant.ICommonConstants; /** * @author fournier */ public class ProductionContext { /** * Map of that defines a context. */ private Map _values; /** * Constructor. */ public ProductionContext() { initializeValues(); } /** * Constructor. Use given context to initialize internal map values.
* Thus new context contains at least all given one values (as accessible at construction time). * @param productionContext_p */ public ProductionContext(ProductionContext productionContext_p) { if (null != productionContext_p) { _values = productionContext_p.getValues(); } else { initializeValues(); } } /** * Add a new context element. * @param name_p * @param value_p * @param fcId_p * Equivalent to {@link #addContextElement(String, Object, String, boolean)} with override set to false. */ public void addContextElement(String name_p, Object value_p, String fcId_p) { addContextElement(name_p, value_p, fcId_p, false); } /** * Add a new context element. * @param name_p * @param value_p * @param fcId_p * @param override_p Should existing value be overridden ? true if so, false otherwise (existing value should remain unmodified). */ public void addContextElement(String name_p, Object value_p, String fcId_p, boolean override_p) { String contextElementKey = fcId_p + ICommonConstants.SLASH_CHARACTER + name_p; // Make sure to avoid external context values to be overridden by the local (e.g production plan) context values. // Unless override was set to true. if (override_p || !_values.containsKey(contextElementKey)) { _values.put(contextElementKey, value_p); } } /** * Get context element value for given name. * @param name_p * @param fcId_p * @return a value or null if not found. */ public Object getContextElementValue(String name_p, String fcId_p) { return _values.get(fcId_p + ICommonConstants.SLASH_CHARACTER + name_p); } /** * Initialize this with an empty map as values holder. */ protected void initializeValues() { _values = new HashMap(0); } /** * Get a clone (shallow) copy of the values map. * @return */ @SuppressWarnings("unchecked") protected Map getValues() { return (Map) ((HashMap) _values).clone(); } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data/FactoryComponentRegistry.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6526 Text-content-md5: f1ad3baec7be33455c87585b70beedaa Text-content-sha1: 462eeb984855930eaccc0dca9c6974b736063ae1 Content-length: 6571 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.data; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.egf.common.listener.AbstractProjectListener; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.data.helper.ModelHelper; /** * A factory component registry contains factory components.
* It provides services to deal with contained elements.
* This registry is a singleton. * @see FactoryComponent * @author fournier */ public class FactoryComponentRegistry { /** * Singleton instance. */ private static FactoryComponentRegistry __instance; /** * Loaded factory components. */ Map _factoryComponents; /** * Constructor. */ private FactoryComponentRegistry() { _factoryComponents = new HashMap(0); // Listener initialization. initializeListeners(); } /** * Initialization of listeners. */ private void initializeListeners() { // Register the factory component registry as a resource changed listener. // The goal is to be notified when the a project is deleted or closed by the end-user. ResourcesPlugin.getWorkspace().addResourceChangeListener(new ProjectListener()); } /** * Get the unique instance. * @return a not null instance. */ public synchronized static FactoryComponentRegistry getInstance() { if (null == __instance) { __instance = new FactoryComponentRegistry(); } return __instance; } /** * Get a factory component for given factory component id. * @param factoryComponentId_p * @return an {@link FactoryComponent} instance or null if not found. */ public synchronized FactoryComponent getFactoryComponent(String factoryComponentId_p) { return _factoryComponents.get(factoryComponentId_p); } /** * Remove a factory component with its given id. * @param factoryComponentId_p * @return the removed factory component or null if not found. */ public synchronized FactoryComponent removeFactoryComponent(String factoryComponentId_p) { return _factoryComponents.remove(factoryComponentId_p); } /** * Remove given collection of factory components from contained factory components. * @param factoryComponents_p components_p */ public synchronized boolean removeFactoryComponents(Collection factoryComponents_p) { return _factoryComponents.values().removeAll(factoryComponents_p); } /** * Add a factory component for given parameters. * @param factoryComponentId_p * @param factoryComponent_p */ public synchronized void addFactoryComponent(String factoryComponentId_p, FactoryComponent factoryComponent_p) { _factoryComponents.put(factoryComponentId_p, factoryComponent_p); } /** * Return a shallow copy of contained factory components. * @return a not null {@link List}. */ public synchronized List getFactoryComponents() { return new ArrayList(_factoryComponents.values()); } /** * Implement a project listener to be able to remove the factory components for removed projects from the workspace. * @author Guillaume Brocard */ class ProjectListener extends AbstractProjectListener { /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectAdded(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectAdded(IProject project_p, IResourceDelta resourceDelta_p) { // Do nothing. } /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectChanged(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectChanged(IProject project_p, IResourceDelta resourceDelta_p) { // Do nothing. } /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectRemoved(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectRemoved(IProject project_p, IResourceDelta resourceDelta_p) { // Remove the related factory component from the factory component registry if any. Iterator iteratorOverFcs = _factoryComponents.values().iterator(); boolean removed = false; // Iterate to remove the related factory component if existing. while (iteratorOverFcs.hasNext() && !removed) { // Get the current model element. FactoryComponent currentFc = iteratorOverFcs.next(); // Get the plug-in model associated to this factory component if any. IProject currentFcProject = ModelHelper.getProject(currentFc); // Check if given project is the one that hosts the current factory component (can have no project if the factory component is coming from the target platform). if (project_p == currentFcProject) { removed = true; // Remove it from the registry. iteratorOverFcs.remove(); } } } /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectClosed(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectClosed(IProject project_p, IResourceDelta resourceDelta_p) { handleProjectRemoved(project_p, resourceDelta_p); } } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data/helper/DataHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 17722 Text-content-md5: ea16ed3291f927d16c41733a6f935eb5 Text-content-sha1: 9cae9c57e1818720f0ce617454bf057265e97a7e Content-length: 17767 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.data.helper; import static org.eclipse.egf.core.extensionpoint.IFactoryComponentConstants.ROOT_FACTORY_COMPONENT_ID; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.apache.log4j.Logger; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.egf.model.Type; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.emf.ecore.EStructuralFeature; /** * Provides useful services based on model elements. * @author fournier */ public class DataHelper extends ModelHelper { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(DataHelper.class.getPackage().getName()); /** * Get a list of {@link ContractElement} that can be used as referenced contract element for a contract. * @param factoryComponent_p * @return a not null collection. */ public static Collection getPossibleReferencedContractElement(FactoryComponent factoryComponent_p) { Set possibleContractElements = new HashSet(0); // Precondition if (null == factoryComponent_p) { return possibleContractElements; } // Get the contract of given fc. Contract referencedFcContract = ModelHelper.getContract(factoryComponent_p); if (null != referencedFcContract) { // Append the contract elements to resulting list. possibleContractElements.addAll(referencedFcContract.getContractElements()); } return possibleContractElements; } /** * Get the list of referenced factory components by given one. * @param factoryComponent_p * @return a not null collection of {@link FactoryComponent}. */ public static Collection getReferencedFactoryComponentsBy(FactoryComponent factoryComponent_p) { Set referencedFcs = new HashSet(0); // Precondition. if (null == factoryComponent_p) { return referencedFcs; } ProductionPlan productionPlan = getProductionPlan(factoryComponent_p); // RootFc does not have a production plan... if (null != productionPlan) { // Get all fc configurations. List fcConfigurations = productionPlan.getFactoryComponentInvocations(); for (FactoryComponentInvocation fcConfiguration : fcConfigurations) { // Get the pointed out fc. String pointedFcId = fcConfiguration.getFactoryComponentId(); FactoryComponent pointedFc = CoreActivator.getDefault().getFactoryComponent(pointedFcId); referencedFcs.add(pointedFc); } } return referencedFcs; } /** * Get a list of {@link ContractElement} related to referenced contract elements for given one as parameter. * @param contractElement_p * @return a not null collection. */ public static Collection getReferencedContractElementsFor(ContractElement contractElement_p) { // Precondition. if (null == contractElement_p) { return Collections.emptyList(); } // Get the contract element references for given contract element. List contractElementReferences = contractElement_p.getContractElementReferences(); // Number of contract element references. int contractElementReferenceCount = contractElementReferences.size(); // Create the resulting list. // Create the resulting list. Set referencedContractElements = new HashSet(contractElementReferenceCount); // Loop over contract element references to get all referenced contract element. for (ContractElementReference contractElementReference : contractElementReferences) { // Resolve the contractElementReference. resolveContractElement(contractElementReference); // Add in resulting list the referenced contract element. referencedContractElements.add(contractElementReference.getReferencedContractElement()); } return referencedContractElements; } /** * Get the referenced contract elements for given contract. * @param contract_p * @return a not null collection. */ public static Collection getReferencedContractElementsFor(Contract contract_p) { // Precondition. if (null == contract_p) { return Collections.emptyList(); } Set referencedContractElements = new HashSet(0); List contractElements = contract_p.getContractElements(); // Loop over the contract elements, and get the referenced contract elements (if defined) for the current contract element. for (ContractElement currentContractElement : contractElements) { // Append to the resulting list the retrieved referenced contract elements. referencedContractElements.addAll(getReferencedContractElementsFor(currentContractElement)); } return referencedContractElements; } /** * Get the referenced contract element for given context element. * @param contextElement_p * @return a {@link ContractElement} instance or null if given context element does not have a reference to a contract element. */ public static ContractElement getReferencedContractElementFor(ContextElement contextElement_p) { ContractElement result = null; // Precondition. if (null == contextElement_p) { return result; } // Get the contract element reference if any. ContractElementReference contractElementReference = contextElement_p.getContractElementReference(); if (null != contractElementReference) { // Resolve the contractElementReference. resolveContractElement(contractElementReference); result = contractElementReference.getReferencedContractElement(); } return result; } /** * Get the referenced contract elements for given context. * @param context_p * @return a not null collection. */ public static Collection getReferencedContractElementsFor(Context context_p) { // Precondition. if (context_p == null) { return Collections.emptyList(); } Set referencedContractElements = new HashSet(0); List contextElements = context_p.getContextElements(); // Loop over the context elements, and get the referenced contract element (if defined) for the current context element. for (ContextElement currentContextElement : contextElements) { ContractElement contractElement = getReferencedContractElementFor(currentContextElement); if (contractElement != null) { referencedContractElements.add(contractElement); } } return referencedContractElements; } /** * Resolve contract elements from given reference.
* All contract elements found in the referencing chain are also resolved. * @param contractElementReference_p */ @SuppressWarnings("deprecation") public static void resolveContractElement(ContractElementReference contractElementReference_p) { // Preconditions. if (null == contractElementReference_p) { return; } // Reference has already been resolved, return existing content. ContractElement contractElement = contractElementReference_p.getReferencedContractElement(); if (null != contractElement) { return; } // Get referenced contract element. // The contract element is retrieved from either the contract element id or contract element name(@deprecated) . EStructuralFeature contractElementMatchingFeature = ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__ID; String contractElementMatchingValue = contractElementReference_p.getReferencedContractElementId(); // Whether or not it is useful to update the contract element id. It depends on the way the contract element is resolved. boolean updateContractElementIdIsNeeded = false; if (null == contractElementMatchingValue) { // @deprecated way to get the referenced contract element. // Ensure compatibility with existing factory components. contractElementMatchingValue = contractElementReference_p.getReferencedContractElementName(); contractElementMatchingFeature = ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__NAME; updateContractElementIdIsNeeded = true; } contractElement = getReferencedContractElement(contractElementReference_p.getReferencedFactoryComponentId(), contractElementMatchingFeature, contractElementMatchingValue); // Make sure, it was retrieved... if (null != contractElement) { contractElementReference_p.setReferencedContractElement(contractElement); // Update the contract element id if it was unknown before resolving it. if (updateContractElementIdIsNeeded) { contractElementReference_p.setReferencedContractElementId(contractElement.getId()); } // Get its references, if any. for (Iterator contractElementRefs = contractElement.getContractElementReferences().iterator(); contractElementRefs.hasNext();) { ContractElementReference reference = contractElementRefs.next(); // Resolve references chain. resolveContractElement(reference); } } } /** * Get the label for given context element. * @param contextElement_p * @return a not null string. */ public static String getLabel(ContextElement contextElement_p) { // Label is either the key or coming from the contract element reference. String label = contextElement_p.getKey(); if (null == label) { ContractElementReference contractElementReference = contextElement_p.getContractElementReference(); if (null != contractElementReference) { // Resolve the contract element. resolveContractElement(contractElementReference); // get the label from referenced contract element. ContractElement referencedContractElement = contractElementReference.getReferencedContractElement(); if (null != referencedContractElement) { label = referencedContractElement.getName(); } } } label = (null == label) ? ICommonConstants.EMPTY_STRING : label; return label; } /** * Get the description for specified model element. * @param element_p * @return */ public static String getDescription(NamedModelElementWithId element_p) { String description = null; // Precondition if (null == element_p) { return description; } description = element_p.getDescription(); // Specific case of the contract element that references another one. if (element_p instanceof ContractElement) { if ((null == description) || ICommonConstants.EMPTY_STRING.equals(description)) { // If contract element description is not defined, try getting it from the referenced contract element if any. Collection referencedContractElements = getReferencedContractElementsFor((ContractElement) element_p); // Check only one contract element is referenced. if (referencedContractElements.size() == 1) { ContractElement referencedContractElement = referencedContractElements.iterator().next(); description = getDescription(referencedContractElement); } } } return description; } /** * Return the TypeHolder class name for given context element. * @param contextElement_p * @return a fully qualified class name or an empty string {@link ICommonConstants#EMPTY_STRING} if not found. */ public static String getContextType(ContextElement contextElement_p) { String result = ICommonConstants.EMPTY_STRING; // Get its type Type contextType = contextElement_p.getContextType(); // Check if the context element has its own type. if (null != contextType) { result = contextType.getTypeHolderClassName(); } else { // Get the type from its contract element reference. ContractElementReference contractElementReference = contextElement_p.getContractElementReference(); if (null != contractElementReference) { // First, resolve the contract element reference. DataHelper.resolveContractElement(contractElementReference); ContractElement referencedContractElement = contractElementReference.getReferencedContractElement(); if (null != referencedContractElement) { result = referencedContractElement.getContractType().getTypeHolderClassName(); } } } if (null == result) { StringBuilder loggerMessage = new StringBuilder("DataHelper.getContextType(..) _ "); //$NON-NLS-1$ loggerMessage.append("Context element:"); //$NON-NLS-1$ loggerMessage.append(contextElement_p.getId()).append(" does not have a Type!!!"); //$NON-NLS-1$ __logger.warn(loggerMessage.toString()); } return result; } /** * Return a list of 'mandatory' contract element owned by specified factory component with no default value. * @param factoryComponent_p * @return an empty list if no one found. */ public static List getMandatoryContractElementWithNoDefaultValue(FactoryComponent factoryComponent_p) { List result = new ArrayList(0); // Precondition. if (factoryComponent_p == null) { return result; } // Get the production plan. ProductionPlan productionPlan = getProductionPlan(factoryComponent_p); if (productionPlan == null) { return result; } // Get its context. Context productionPlanContext = productionPlan.getContext(); if (productionPlanContext == null) { return result; } // Get the referenced contract elements for these ones. Collection referencedContractElementsByProductionPlanContext = getReferencedContractElementsFor(productionPlanContext); // Get all mandatory contract elements. result = getMandatoryContractElement(factoryComponent_p); // Retain only these ones with no default value. result.removeAll(referencedContractElementsByProductionPlanContext); return result; } /** * Whether or not given factory component id points to the boot strap factory component. * @param factoryComponentId_p * @return */ public static boolean isBootstrapFactoryComponent(String factoryComponentId_p) { return ROOT_FACTORY_COMPONENT_ID.equals(factoryComponentId_p); } /** * Get referenced contract element from its containing factory component id and its targeting id. * @param factoryComponentId_p * @param contractElementMatchingFeature_p * @param contractElementMatchingValue_p * @return */ private static ContractElement getReferencedContractElement(String factoryComponentId_p, EStructuralFeature contractElementMatchingFeature_p, String contractElementMatchingValue_p) { ContractElement result = null; FactoryComponent fc = CoreActivator.getDefault().getFactoryComponent(factoryComponentId_p); if (null != fc) { Contract contract = ModelHelper.getContract(fc); for (Iterator contractElements = contract.getContractElements().iterator(); contractElements.hasNext() && (null == result);) { ContractElement contractElement = contractElements.next(); if (contractElementMatchingValue_p.equals(contractElement.eGet(contractElementMatchingFeature_p))) { result = contractElement; } } } else { StringBuffer loggerMessage = new StringBuffer("DataHelper.getReferencedContractElement(..) _ "); //$NON-NLS-1$ loggerMessage.append("could not find factory component "); //$NON-NLS-1$ loggerMessage.append(factoryComponentId_p); loggerMessage.append(" , while searching for contract element "); //$NON-NLS-1$ loggerMessage.append(contractElementMatchingValue_p); loggerMessage.append(" !"); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } return result; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data/validation Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data/validation/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1963 Text-content-md5: addc88aa0fdafe21c54cb1ca07b71bec Text-content-sha1: 19bbeb3d77cc1ccb83c8ac61bce727f6055d0a88 Content-length: 2008 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.data.validation; import org.eclipse.osgi.util.NLS; /** * I18n validation rules messages * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.data.validation.messages"; //$NON-NLS-1$ public static String ModelElementDelegatedValidator_FactoryComponentInvocation_Rule0_Message; public static String ModelElementDelegatedValidator_FactoryComponentInvocation_Rule1_Message; public static String ModelElementDelegatedValidator_FactoryComponentInvocation_Rule2_Message; public static String ModelElementDelegatedValidator_FactoryComponentInvocation_ReferencedFcDiagnostic_Message; public static String ModelElementDelegatedValidator_ContractElementReference_MessageHeader; public static String ModelElementDelegatedValidator_ContractElementReference_Rule0_Message; public static String ModelElementDelegatedValidator_ContractElementReference_Rule1_Message; public static String ModelElementDelegatedValidator_ContractElementReference_Rule2_Message; public static String ModelElementDelegatedValidator_ContractElementReference_Rule3_Message; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data/validation/ModelElementDelegatedValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 19627 Text-content-md5: 93e19c77b9f139223595609f8c2c1a9c Text-content-sha1: 9eca03308e947cd3594014dba88dea29e1be8596 Content-length: 19672 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.data.validation; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.eclipse.egf.common.helper.StringHelper; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.util.ModelSwitch; import org.eclipse.egf.model.util.ModelValidator; import org.eclipse.egf.model.validation.IDelegatedValidator; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.Diagnostician; /** * Model element validator implementation. * @author Guillaume Brocard */ public class ModelElementDelegatedValidator implements IDelegatedValidator { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(ModelElementDelegatedValidator.class.getPackage().getName()); /** * Diagnostic container. */ private DiagnosticChain _diagnostics; /** * The switch delegates to the createXXX methods. */ private ModelSwitch _modelSwitch; public ModelElementDelegatedValidator() { initializeModelSwitch(); } /** * Initialize the model switch that is responsible for model element validation. */ protected void initializeModelSwitch() { _modelSwitch = new ModelSwitch() { /** * @see org.eclipse.egf.model.util.ModelSwitch#caseFactoryComponentInvocation(org.eclipse.egf.model.FactoryComponentInvocation) */ @SuppressWarnings("synthetic-access") @Override public Boolean caseFactoryComponentInvocation(FactoryComponentInvocation fcInvocation_p) { if (__logger.isDebugEnabled()) { StringBuilder loggerMessage = new StringBuilder(".caseFactoryComponentInvocation(..) _ "); //$NON-NLS-1$ __logger.debug(loggerMessage.toString()); } boolean valid = true; String referencedFcId = fcInvocation_p.getFactoryComponentId(); // Rule 0: Check the referenced factory component exists wherever. FactoryComponent referencedFc = CoreActivator.getDefault().getFactoryComponent(referencedFcId); if (null == referencedFc) { valid = false; // Error getDiagnostics().add( new BasicDiagnostic(Diagnostic.ERROR, ModelValidator.DIAGNOSTIC_SOURCE, 0, StringHelper .formatMessage(Messages.ModelElementDelegatedValidator_FactoryComponentInvocation_Rule0_Message, new Object[] { fcInvocation_p .getName(), referencedFcId }), new Object[] { fcInvocation_p })); } else { // Rule 1: Check if the referenced factory component is the BootStrap one. if (DataHelper.isBootstrapFactoryComponent(referencedFcId)) { valid = checkFactoryComponentInvocationReferencingRootFc(fcInvocation_p); } else { // Rule 2: Check if all mandatory contract elements are filled. // Get the referenced factory component. valid = checkFactoryComponentInvocationHasAllMandatoryContractFilled(fcInvocation_p, referencedFc); // Validate the referenced factory component. Diagnostician diagnostician = new Diagnostician(); // Invoke validation. Diagnostic diagnostic = diagnostician.validate(referencedFc); // If on error, display message. boolean validationError = (Diagnostic.ERROR == diagnostic.getSeverity()); if (validationError) { valid = false; // Create sub-diagnostic for the referenced factory component. String formattedMessage = StringHelper.formatMessage(Messages.ModelElementDelegatedValidator_FactoryComponentInvocation_ReferencedFcDiagnostic_Message, new String[] { referencedFc.getName() }); DiagnosticChain referencedFcDiagnostic = new BasicDiagnostic(Diagnostic.ERROR, ModelValidator.DIAGNOSTIC_SOURCE, 0, formattedMessage, new Object[] { referencedFc }); // Then attach all the validation diagnostic children for the referenced factory component. referencedFcDiagnostic.addAll(diagnostic); // Add it to root diagnostic. getDiagnostics().add((Diagnostic) referencedFcDiagnostic); } } } return Boolean.valueOf(valid); } /** * @see org.eclipse.egf.model.util.ModelSwitch#caseContractElementReference(org.eclipse.egf.model.ContractElementReference) */ @SuppressWarnings("synthetic-access") @Override public Boolean caseContractElementReference(ContractElementReference contractElementReference_p) { if (__logger.isDebugEnabled()) { StringBuilder loggerMessage = new StringBuilder(".caseContractElementReference(..) _ "); //$NON-NLS-1$ __logger.debug(loggerMessage.toString()); } boolean valid = true; // Rule 0 : check the referenced factory component is the expected one. valid = checkContractElementRefPointsExpectedFactoryComponent(contractElementReference_p); if (valid) { // Rule 1 : check the referenced factory component exists. valid = checkContractElementRefPointsExistingFactoryComponent(contractElementReference_p); } if (valid) { // Rule 2 : check that all id match existing data. // Get the referenced contract element. ContractElement initialReferencedContractElement = contractElementReference_p.getReferencedContractElement(); try { // Force to reload the referenced contract element. contractElementReference_p.setReferencedContractElement(null); DataHelper.resolveContractElement(contractElementReference_p); ContractElement reloadedReferencedContractElement = contractElementReference_p.getReferencedContractElement(); if (null == reloadedReferencedContractElement) { valid = false; String referencedContractElementIdentifier = contractElementReference_p.getReferencedContractElementId(); addErrorForContractElementRef(contractElementReference_p, Messages.ModelElementDelegatedValidator_ContractElementReference_Rule3_Message, new Object[] { referencedContractElementIdentifier }); } } finally { // Set the initial value afterwards. contractElementReference_p.setReferencedContractElement(initialReferencedContractElement); } } return Boolean.valueOf(valid); } /** * @see org.eclipse.egf.model.util.ModelSwitch#defaultCase(org.eclipse.emf.ecore.EObject) */ @SuppressWarnings("synthetic-access") @Override public Boolean defaultCase(EObject object_p) { if (__logger.isDebugEnabled()) { StringBuilder loggerMessage = new StringBuilder(".defaultCase(..) _ "); //$NON-NLS-1$ loggerMessage.append(object_p.eClass().getName()); __logger.debug(loggerMessage.toString()); } return Boolean.TRUE; } }; } /** * Add a formated message error in diagnostics for specified parameters. * @param contractElementReference_p * @param referencedFactoryComponentId */ protected void addErrorForContractElementRef(ContractElementReference contractElementReference_p, String detailedMessage_p, Object[] detailedMessageArgs_p) { NamedModelElementWithId contractElementRefContainer = (NamedModelElementWithId) contractElementReference_p.eContainer(); String bodyMessage = StringHelper.formatMessage(Messages.ModelElementDelegatedValidator_ContractElementReference_MessageHeader, new Object[] { contractElementRefContainer.eClass().getName(), contractElementRefContainer.getId() }); String detailedFormatedMessage = StringHelper.formatMessage(detailedMessage_p, detailedMessageArgs_p); getDiagnostics().add( new BasicDiagnostic(Diagnostic.ERROR, ModelValidator.DIAGNOSTIC_SOURCE, 0, bodyMessage + detailedFormatedMessage, new Object[] { contractElementRefContainer })); } /** * Check a factory component invocation that references whatever FC different from the Boot Strap one. * @param fcInvocation_p * @param referencedFc_p * @return */ protected boolean checkFactoryComponentInvocationHasAllMandatoryContractFilled(FactoryComponentInvocation fcInvocation_p, FactoryComponent referencedFc_p) { boolean valid = true; // Get all mandatory contract elements exposed by this factory component. List mandatoryContractElements = DataHelper.getMandatoryContractElementWithNoDefaultValue(referencedFc_p); // Check if our local contract elements reference mandatory ones. FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(fcInvocation_p); Contract localContract = ModelHelper.getContract(fcContainer); // Get the referenced contract elements for these ones. Collection referencedContractElementsByLocalContract = DataHelper.getReferencedContractElementsFor(localContract); // Remove them from the mandatory list. mandatoryContractElements.removeAll(referencedContractElementsByLocalContract); if (!mandatoryContractElements.isEmpty()) { // Check local context elements. Context localContext = fcInvocation_p.getContext(); // Get the referenced contract elements for these ones. Collection referencedContractElementsByLocalContext = DataHelper.getReferencedContractElementsFor(localContext); // Remove them from the mandatory list. mandatoryContractElements.removeAll(referencedContractElementsByLocalContext); } if (!mandatoryContractElements.isEmpty()) { valid = false; Iterator iter = mandatoryContractElements.iterator(); while (iter.hasNext()) { ContractElement contractElement = iter.next(); // Error getDiagnostics().add( new BasicDiagnostic(Diagnostic.ERROR, ModelValidator.DIAGNOSTIC_SOURCE, 0, StringHelper .formatMessage(Messages.ModelElementDelegatedValidator_FactoryComponentInvocation_Rule2_Message, new Object[] { fcInvocation_p .getName(), referencedFc_p .getName(), contractElement .getName() }), new Object[] { fcInvocation_p })); } } return valid; } /** * Check referenced factory component in specified contract element reference exists. * @param contractElementReference_p * @return */ protected boolean checkContractElementRefPointsExistingFactoryComponent(ContractElementReference contractElementReference_p) { boolean valid = true; // Retrieve the factory component. String referencedFcId = contractElementReference_p.getReferencedFactoryComponentId(); FactoryComponent referencedFc = CoreActivator.getDefault().getFactoryComponent(referencedFcId); if (null == referencedFc) { valid = false; // Error addErrorForContractElementRef(contractElementReference_p, Messages.ModelElementDelegatedValidator_ContractElementReference_Rule2_Message, new Object[] { referencedFcId }); } return valid; } /** * Check specified contract element reference points to an "allowed" FC.
* If this one is owned by a context element, check its factory component invocation references the same FC.
* Else, this one is owned by a contract, check a factory component invocation references the same FC in the production plan. * @param contractElementReference_p * @return */ protected boolean checkContractElementRefPointsExpectedFactoryComponent(ContractElementReference contractElementReference_p) { boolean valid = true; String referencedFcIdByContractElementRef = contractElementReference_p.getReferencedFactoryComponentId(); EObject owner = contractElementReference_p.eContainer(); if (owner instanceof ContextElement) { owner = owner.eContainer().eContainer(); // Only one case : context element owned by a factory component invocation, because those contained by the production plan are handled by another rule. if (owner instanceof FactoryComponentInvocation) { FactoryComponentInvocation fcInvocation = (FactoryComponentInvocation) owner; String referencedFcId = fcInvocation.getFactoryComponentId(); if (!referencedFcId.equals(referencedFcIdByContractElementRef)) { valid = false; // FactoryComponent configuration is referencing a contract element not provided by this later one. addErrorForContractElementRef(contractElementReference_p, Messages.ModelElementDelegatedValidator_ContractElementReference_Rule0_Message, new Object[] {fcInvocation.getName()}); } } } else if (owner instanceof ContractElement) { // Get the factory component container. FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(contractElementReference_p); // Get its production plan. ProductionPlan productionPlan = ModelHelper.getProductionPlan(fcContainer); boolean found = false; // Loop over factory component invocations, to find out the one that matches the referenced factory component id. for (Iterator iter = productionPlan.getFactoryComponentInvocations().iterator(); iter.hasNext() && !found;) { FactoryComponentInvocation currentFc = iter.next(); if (currentFc.getFactoryComponentId().equals(referencedFcIdByContractElementRef)) { found = true; } } if (!found) { valid = false; // Not allowed to depend on such a contract element because no factory component invocation references the referenced factory component id. addErrorForContractElementRef( contractElementReference_p, Messages.ModelElementDelegatedValidator_ContractElementReference_Rule1_Message, new Object[] { contractElementReference_p.getReferencedContractElementId(), referencedFcIdByContractElementRef }); } } return valid; } /** * Check an factory component invocation that references the root factory component known as Boot Strap FC. * @return */ protected boolean checkFactoryComponentInvocationReferencingRootFc(FactoryComponentInvocation fcInvocation_p) { boolean valid = true; // In this case, check a task factory is provided. if (null == fcInvocation_p.getTaskFactory()) { // Error getDiagnostics().add( new BasicDiagnostic(Diagnostic.ERROR, ModelValidator.DIAGNOSTIC_SOURCE, 0, StringHelper .formatMessage(Messages.ModelElementDelegatedValidator_FactoryComponentInvocation_Rule1_Message, new Object[] { fcInvocation_p .getName() }), new Object[] { fcInvocation_p })); } return valid; } /** * @see org.eclipse.egf.model.validation.IDelegatedValidator#validate(org.eclipse.egf.model.NamedModelElementWithId, * org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) */ public boolean validate(NamedModelElementWithId modelElement_p, DiagnosticChain diagnostics_p, Map context_p) { boolean valid = false; // Precondition. if (!(diagnostics_p instanceof Diagnostic)) { return valid; } _diagnostics = diagnostics_p; // Get the initial diagnostics count. Diagnostic diagnostics = (Diagnostic) diagnostics_p; int initialDiagnosticCount = diagnostics.getChildren().size(); // Validate _modelSwitch.doSwitch(modelElement_p); // Get diagnostic count after business validation. int diagnosticCount = diagnostics.getChildren().size(); valid = (diagnosticCount > initialDiagnosticCount) ? true : false; return valid; } /** * Get the diagnostic container. * @return the diagnostics */ protected DiagnosticChain getDiagnostics() { return _diagnostics; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/data/validation/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1919 Text-content-md5: f861254bdc830ab147122ff49463f389 Text-content-sha1: 090a965f23e2cb50c96edb2d1a29b381b0e2c936 Content-length: 1964 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### ModelElementDelegatedValidator_FactoryComponentInvocation_Rule0_Message=Factory component invocation ''{0}'' references a missing FC with id ''{1}''. ModelElementDelegatedValidator_FactoryComponentInvocation_Rule1_Message=Factory component invocation ''{0}'' referencing the Bootstrap FC must have a task factory. ModelElementDelegatedValidator_FactoryComponentInvocation_Rule2_Message=Factory component invocation ''{0}'' referencing ''{1}'' FC must value contract element ''{2}''. ModelElementDelegatedValidator_FactoryComponentInvocation_ReferencedFcDiagnostic_Message=Diagnosis of referenced FC ''{0}'' ModelElementDelegatedValidator_ContractElementReference_Rule0_Message=references a contract element that is not provided by the FC referenced by the factory component invocation ''{0}''. ModelElementDelegatedValidator_ContractElementReference_MessageHeader={0} ''{1}''' ' ModelElementDelegatedValidator_ContractElementReference_Rule1_Message=is not allowed to reference contract element ''{0}'' because no factory component invocation, in the production plan, references FC ''{1}'' ModelElementDelegatedValidator_ContractElementReference_Rule2_Message=references a contract element from a missing factory component ''{0}'' ModelElementDelegatedValidator_ContractElementReference_Rule3_Message=references an unknown contract element ''{0}'' Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/IContextConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2015 Text-content-md5: d280e35ad50b980d9d06e70e6e167212 Text-content-sha1: f98be618f5c40d08344964327d686f3725eef1ed Content-length: 2060 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to a context into extension point declaration. * @author fournier */ public interface IContextConstants { /** * Define a constant for the context extension-point id. */ static final String CONTEXT_EXTENSION_POINT_ID = "context"; //$NON-NLS-1$ /** * Define a constant for the context extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId(CoreActivator.getDefault().getPluginID(), CONTEXT_EXTENSION_POINT_ID); /** * Define a constant for the context extension-point child. */ static final String CONTEXT_EXTENSION_CHILD = CONTEXT_EXTENSION_POINT_ID; /** * Define a constant for the context child. */ static final String CONTEXT_CHILD = "contextElement"; //$NON-NLS-1$ /** * Simple string key for a context element. */ static final String CONTEXT_ELEMENT_KEY_CHILD = "key"; //$NON-NLS-1$ /** * Context value child node. */ static final String CONTEXT_ELEMENT_VALUE_CHILD = "contextValue"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/IContractConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3094 Text-content-md5: 6b8288706abe2b2006adde177148a813 Text-content-sha1: faba9869afe2c9d9d33229ee120da36da8ffbbbf Content-length: 3139 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to a contract into extension point declaration. * @author fournier */ public interface IContractConstants { /** * Define a constant for the contract extension-point id. */ static final String CONTRACT_EXTENSION_POINT_ID = "contract"; //$NON-NLS-1$ /** * Define a constant for the contract extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId( CoreActivator.getDefault().getPluginID(), CONTRACT_EXTENSION_POINT_ID ); /** * Define a constant for the contract extension-point child. */ static final String CONTRACT_EXTENSION_CHILD = CONTRACT_EXTENSION_POINT_ID; /** * Define a constant for the 'id' attribute. */ static final String CONTRACT_ATT_ID = "id"; //$NON-NLS-1$ /** * Define a constant for the contract child. */ static final String CONTRACT_ELEMENT_CHILD = "contractElement"; //$NON-NLS-1$ /** * Define a constant for the 'id' attribute. */ static final String CONTRACT_ELEMENT_ATT_ID = "id"; //$NON-NLS-1$ /** * Define a constant for the 'name' attribute. */ static final String CONTRACT_ELEMENT_ATT_NAME = "name"; //$NON-NLS-1$ /** * Define a constant for the 'value' attribute. */ static final String CONTRACT_ELEMENT_CHILD_ATT_VALUE = "value"; //$NON-NLS-1$ /** * Define a constant for the 'type' attribute. */ static final String CONTRACT_ELEMENT_ATT_TYPE = "type"; //$NON-NLS-1$ /** * Define a constant for the 'mandatory' attribute. */ static final String CONTRACT_ELEMENT_ATT_MANDATORY = "mandatory"; //$NON-NLS-1$ /** * Define a constant for the 'description' extension-point child. */ static final String CONTRACT_ELEMENT_EXTENSION_CHILD_DESCRIPTION = "description"; //$NON-NLS-1$ /** * Define a constant for the 'contractElementRef' extension-point child. */ static final String CONTRACT_ELEMENT_EXTENSION_CHILD_CONTRACT_ELEMENT_REFERENCE = "contractElementRef"; //$NON-NLS-1$ /** * Define a constant for the 'contractElementReferenceId' attribute. */ static final String CONTRACT_ELEMENT_REFERENCE_ATT_REF_ID = "contractElementReferenceId"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/IContractReferenceConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2389 Text-content-md5: 3f16418311f3782d3f4c847c2b9d5907 Text-content-sha1: d92a248b4797babafcbab8d458247e4d91e00d7d Content-length: 2434 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to a contract reference into extension point declaration. * @author fournier */ public interface IContractReferenceConstants { /** * Define a constant for the contract reference extension-point id. */ static final String CONTRACT_REFERENCE_EXTENSION_POINT_ID = "contractReferences"; //$NON-NLS-1$ /** * Define a constant for the contract reference extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId(CoreActivator.getDefault().getPluginID(), CONTRACT_REFERENCE_EXTENSION_POINT_ID); /** * Define a constant for the contract reference extension-point child. */ static final String CONTRACT_REFERENCE_EXTENSION_POINT_CHILD = "contractElementReference"; //$NON-NLS-1$ /** * Define a constant for the 'referencedContractElementName' attribute. * @deprecated */ static final String CONTRACT_REFERENCE_ATT_REFERENCED_CONTRACT_ELEMENT_NAME = "referencedContractElementName"; //$NON-NLS-1$ /** * Define a constant for the 'referencedContractElementName' attribute. */ static final String CONTRACT_REFERENCE_ATT_REFERENCED_CONTRACT_ELEMENT_ID = "referencedContractElementId"; //$NON-NLS-1$ /** * Define a constant for the referenced factory component Id attribute. */ static final String CONTRACT_REFERENCE_ATT_REFERENCED_FACTORY_COMPONENT_ID = "referencedAssetId"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/IFactoryComponentConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3039 Text-content-md5: 2e03bb232ee433c3d228dbff3637fb0e Text-content-sha1: bb243e3afb4c30772929b233f561e15d3ff1d87c Content-length: 3084 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to a factory component into extension point declaration. * @author fournier */ public interface IFactoryComponentConstants { /** * Define a constant for the factoryComponent extension-point id. */ static final String FACTORY_COMPONENT_EXTENSION_POINT_ID = "factoryComponent"; //$NON-NLS-1$ /** * Define a constant for the factoryComponent extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId( CoreActivator.getDefault().getPluginID(), FACTORY_COMPONENT_EXTENSION_POINT_ID ); /** * Define a constant for the factoryComponent extension-point child. */ static final String FACTORY_COMPONENT_EXTENSION_CHILD = FACTORY_COMPONENT_EXTENSION_POINT_ID; /** * Define a constant for the description extension-point child. */ static final String FACTORY_COMPONENT_EXTENSION_CHILD_DESCRIPTION = "description"; //$NON-NLS-1$ /** * Define a constant for the 'id' attribute. */ static final String FACTORY_COMPONENT_ATT_ID = "id"; //$NON-NLS-1$ /** * Define a constant for the 'name' attribute. */ static final String FACTORY_COMPONENT_ATT_NAME = "name"; //$NON-NLS-1$ /** * Define a constant for the 'domain' attribute. */ static final String FACTORY_COMPONENT_ATT_DOMAIN = "domain"; //$NON-NLS-1$ /** * Define a constant for the 'contractId' attribute. */ static final String FACTORY_COMPONENT_ATT_CONTRACT_ID = "contractId"; //$NON-NLS-1$ /** * Define a constant for the 'productionPlanId' attribute. */ static final String FACTORY_COMPONENT_ATT_PRODUCTION_PLAN_ID = "productionPlanId"; //$NON-NLS-1$ /** * Define the factory component id for the bootstrap factoryComponent. */ static final String ROOT_FACTORY_COMPONENT_ID = "rootAsset"; //$NON-NLS-1$ /** * Define a constant for the contract reference id attribute. */ static final String ATT_CONTRACT_ELEMENT_REFERENCE_ID = "contractElementReferenceId"; //$NON-NLS-1$ /** * Contract reference key for a context element. */ static final String CONTRACT_REF_CHILD = "contractElementRef"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/IFactoryComponentInvocationConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2473 Text-content-md5: ea0e5a151cc75e0c7bbea27d8f5bfb0b Text-content-sha1: 10283e199b9f74d7bc58b62a4e7a57d77c562c98 Content-length: 2518 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to an factory component invocation into extension point declaration. * @author fournier */ public interface IFactoryComponentInvocationConstants { /** * Define a constant for the FactoryComponentInvocation extension-point id. */ static final String FACTORY_COMPONENT_INVOCATION_EXTENSION_POINT_ID = "assetConfiguration"; //$NON-NLS-1$ /** * Define a constant for the factory component invocation extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId(CoreActivator.getDefault().getPluginID(), FACTORY_COMPONENT_INVOCATION_EXTENSION_POINT_ID); /** * Define a constant for the FactoryComponentInvocation extension-point child. */ static final String FACTORY_COMPONENT_INVOCATION_EXTENSION_CHILD = FACTORY_COMPONENT_INVOCATION_EXTENSION_POINT_ID; /** * Define a constant for the 'name' attribute. */ static final String FACTORY_COMPONENT_INVOCATION_ATT_NAME = "name"; //$NON-NLS-1$ /** * Define a constant for the factory component Id attribute. */ static final String FACTORY_COMPONENT_INVOCATION_ATT_FC_ID = "assetId"; //$NON-NLS-1$ /** * Define a constant for the 'taskFactoryId' attribute. */ static final String FACTORY_COMPONENT_INVOCATION_ATT_TASK_FACTORY_ID = "taskFactoryId"; //$NON-NLS-1$ /** * Define a constant for the 'contextId' attribute. */ static final String FACTORY_COMPONENT_INVOCATION_ATT_CONTEXT_ID = "contextId"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/IMappingConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2043 Text-content-md5: 855dda316b3182ce94b3adf17d3ba7f1 Text-content-sha1: cc214295cc783ac726fd5c63416668cee4633b7b Content-length: 2088 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to a mapping into extension-point declaration. * @author Guillaume Brocard */ public interface IMappingConstants { /** * Define a constant for the mapping extension-point id. */ static final String MAPPING_EXTENSION_POINT_ID = "mapping"; //$NON-NLS-1$ /** * Define a constant for the mapping extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId(CoreActivator.getDefault().getPluginID(), MAPPING_EXTENSION_POINT_ID); /** * Define a constant for the mapping extension-point child. */ static final String MAPPING_EXTENSION_CHILD = MAPPING_EXTENSION_POINT_ID; /** * Define a constant for the 'path' attribute. */ static final String MAPPING_ATT_PATH = "path"; //$NON-NLS-1$ /** * Define a constant for the 'source' attribute. */ static final String MAPPING_ATT_SOURCE = "assetIdAsSource"; //$NON-NLS-1$ /** * Define a constant for the 'target' attribute. */ static final String MAPPING_ATT_TARGET = "assetIdAsTarget"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/IProductionPlanConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2175 Text-content-md5: 2b43e7bff7263e7ca8773d19e25766d9 Text-content-sha1: 72f5709a370a8e29110649f99ac48b08ef7ff586 Content-length: 2220 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to a production plan into extension point declaration. * @author fournier */ public interface IProductionPlanConstants { /** * Define a constant for the production plan extension-point id. */ static final String PRODUCTION_PLAN_EXTENSION_POINT_ID = "productionPlan"; //$NON-NLS-1$ /** * Define a constant for the production plan extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId( CoreActivator.getDefault().getPluginID(), PRODUCTION_PLAN_EXTENSION_POINT_ID ); /** * Define a constant for the production plan extension-point child. */ static final String PRODUCTION_PLAN_EXTENSION_CHILD = PRODUCTION_PLAN_EXTENSION_POINT_ID; /** * Define a constant for the 'id' attribute. */ static final String PRODUCTION_PLAN_ATT_ID = "id"; //$NON-NLS-1$ /** * Define a constant for the 'contextId' attribute. */ static final String PRODUCTION_PLAN_ATT_CONTEXT_ID = "contextId"; //$NON-NLS-1$ /** * Define a constant for the production plan child. */ static final String PRODUCTION_PLAN_CHILD_ASSET_CONFIGURATION = "assetConfiguration"; //$NON-NLS-1$ /** * Define a constant for the 'id' attribute. */ static final String ASSET_CONFIGURATION_ATT_ID = "id"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/extensionpoint/ITaskFactoryConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1673 Text-content-md5: 37591785caffb7c9208208d37bcbe4bd Text-content-sha1: 5727b807b953f811fe3f8a11236355b56a597a76 Content-length: 1718 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.extensionpoint; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; /** * Defines all constants related to a task factory into extension point declaration. * @author fournier */ public interface ITaskFactoryConstants { /** * Define a constant for the task factory extension-point id. */ static final String TASK_FACTORY_EXTENSION_POINT_ID = "taskFactory"; //$NON-NLS-1$ /** * Define a constant for the task factory extension-point id as a fully qualified id. */ static final String FULLY_QUALIFIED_EXTENSION_POINT_ID = ExtensionPointHelper.getExtensionPointId(CoreActivator.getDefault().getPluginID(), TASK_FACTORY_EXTENSION_POINT_ID); /** * Define a constant for the task factory extension-point child. */ static final String TASK_FACTORY_EXTENSION_POINT_CHILD = TASK_FACTORY_EXTENSION_POINT_ID; } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/helper/EclipseBuilderHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5752 Text-content-md5: 625c0917d1df9d2a9225cbcb85301e84 Text-content-sha1: 7e8c98e156f3ca31bfd869ee82952d551bd3fedb Content-length: 5797 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.core.helper; import org.eclipse.core.resources.ICommand; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; public class EclipseBuilderHelper { public static void addNatureToProject(IProject proj, String natureId, IProgressMonitor monitor) throws CoreException { IProjectDescription description = proj.getDescription(); String[] prevNatures = description.getNatureIds(); String[] newNatures = new String[prevNatures.length + 1]; System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length); newNatures[prevNatures.length] = natureId; description.setNatureIds(newNatures); proj.setDescription(description, monitor); } public static void addToFrontofBuildSpec(IProject project_p, String builderId_p) throws CoreException { if (project_p == null || builderId_p == null) { return; } IProjectDescription description = project_p.getDescription(); ICommand builderCommand = getBuilderCommand(description, builderId_p); if (builderCommand == null) { // Add a new build spec ICommand command = description.newCommand(); command.setBuilderName(builderId_p); setFrontBuilderCommand(project_p, description, command); } } public static void addToBuildSpec(IProject project_p, String builderId_p) throws CoreException { if (project_p == null || builderId_p == null) { return; } IProjectDescription description = project_p.getDescription(); ICommand builderCommand = getBuilderCommand(description, builderId_p); if (builderCommand == null) { // Add a new build spec ICommand command = description.newCommand(); command.setBuilderName(builderId_p); setBuilderCommand(project_p, description, command); } } public static ICommand getBuilderCommand(IProjectDescription description_p, String builderId_p) { ICommand[] commands = description_p.getBuildSpec(); for (int i = 0; i < commands.length; ++i) { if (commands[i].getBuilderName().equals(builderId_p)) { return commands[i]; } } return null; } public static void removeFromBuildSpec(IProject project_p, String builderId_p) throws CoreException { if (project_p == null || builderId_p == null) { return; } IProjectDescription description = project_p.getDescription(); ICommand[] commands = description.getBuildSpec(); for (int i = 0; i < commands.length; ++i) { if (commands[i].getBuilderName().equals(builderId_p)) { ICommand[] newCommands = new ICommand [commands.length - 1]; System.arraycopy(commands, 0, newCommands, 0, i); System.arraycopy(commands, i + 1, newCommands, i, commands.length - i - 1); description.setBuildSpec(newCommands); return; } } } public static void setBuilderCommand(IProject project_p, IProjectDescription description_p, ICommand newCommand_p) throws CoreException { if (project_p == null || description_p == null || newCommand_p == null) { return; } ICommand[] oldCommands = description_p.getBuildSpec(); ICommand oldBuilderCommand = getBuilderCommand(description_p, newCommand_p.getBuilderName()); ICommand[] newCommands; if (oldBuilderCommand == null) { // Add a build spec after other builders newCommands = new ICommand [oldCommands.length + 1]; System.arraycopy(oldCommands, 0, newCommands, 0, oldCommands.length); newCommands[oldCommands.length] = newCommand_p; } else { for (int i = 0, max = oldCommands.length; i < max; i++) { if (oldCommands[i] == oldBuilderCommand) { oldCommands[i] = newCommand_p; break; } } newCommands = oldCommands; } // Commit the spec change into the project description_p.setBuildSpec(newCommands); project_p.setDescription(description_p, null); } public static void setFrontBuilderCommand(IProject project_p, IProjectDescription description_p, ICommand newCommand_p) throws CoreException { if (project_p == null || description_p == null || newCommand_p == null) { return; } ICommand[] oldCommands = description_p.getBuildSpec(); ICommand oldBuilderCommand = getBuilderCommand(description_p, newCommand_p.getBuilderName()); ICommand[] newCommands; if (oldBuilderCommand == null) { // Add a build spec in front of other builders newCommands = new ICommand [oldCommands.length + 1]; System.arraycopy(oldCommands, 0, newCommands, 1, oldCommands.length); newCommands[0] = newCommand_p; } else { for (int i = 0, max = oldCommands.length; i < max; i++) { if (oldCommands[i] == oldBuilderCommand) { oldCommands[i] = newCommand_p; break; } } newCommands = oldCommands; } // Commit the spec change into the project description_p.setBuildSpec(newCommands); project_p.setDescription(description_p, null); } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/helper Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/helper/FactoryComponentLoadingHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 30761 Text-content-md5: fdab61002859ea230c376b5f34bd563a Text-content-sha1: 12466daa9114c3a29814c59846a281febe10476e Content-length: 30806 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. 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: Thales * Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.internal.helper; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.constant.IPatternConstants; import org.eclipse.egf.common.descriptor.IDescriptor; import org.eclipse.egf.common.descriptor.pattern.helper.IPatternDescriptorHandler; import org.eclipse.egf.common.descriptor.pattern.helper.PatternDescriptorStrategy; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.data.FactoryComponentRegistry; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.extensionpoint.IMappingConstants; import org.eclipse.egf.core.internal.reader.FactoryComponentReaderChain; import org.eclipse.egf.core.reader.descriptor.FactoryComponentDescriptor; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.egf.model.Domain; import org.eclipse.egf.model.Factory; import org.eclipse.egf.model.MappingModel; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.model.PatternViewpoint; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.egf.model.TaskFactoryHolder; import org.eclipse.egf.model.Type; import org.eclipse.egf.model.ViewpointType; import org.eclipse.egf.model.contract.type.ITypeHolder; import org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentInvocationDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IContextDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IContextElementDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IContractDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IContractElementDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IContractElementReferenceDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IProductionPlanDescriptor; import org.eclipse.egf.model.data.reader.descriptor.ITaskFactoryDescriptor; import org.eclipse.egf.model.internal.data.ModelElement; /** * This class provides services to load elements from extensions declared in a plug-in. * @author fournier */ public class FactoryComponentLoadingHelper implements IFactoryComponentLoadingHelper { /** * Log4j reference logger. */ static final Logger __logger = Logger.getLogger(FactoryComponentLoadingHelper.class.getPackage().getName()); /** * Reference to factory component registry. */ private FactoryComponentRegistry _factoryComponentRegistry; /** * Constructor. */ public FactoryComponentLoadingHelper() { // Get the factory component registry. _factoryComponentRegistry = FactoryComponentRegistry.getInstance(); } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#getFactoryComponent(java.lang.String) */ public FactoryComponent getFactoryComponent(final String factoryComponentId_p) { FactoryComponent factoryComponent = null; // Precondition. if (null == factoryComponentId_p) { return factoryComponent; } // Get the factory component from loaded factory components. factoryComponent = getFactoryComponentFromRegistry(factoryComponentId_p); // If not found, load it. if (null == factoryComponent) { factoryComponent = loadFactoryComponent(factoryComponentId_p); // Store it in the factory component registry. _factoryComponentRegistry.addFactoryComponent(factoryComponentId_p, factoryComponent); } return factoryComponent; } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#getFactoryComponent(org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor) */ public FactoryComponent getFactoryComponent(final IFactoryComponentDescriptor factoryComponentDescriptor_p) { FactoryComponent factoryComponent = null; // Precondition. if (null == factoryComponentDescriptor_p) { return factoryComponent; } // Get the factory component id from the registry. String factoryComponentId = factoryComponentDescriptor_p.getId(); // Get the factory component from loaded factory components. factoryComponent = getFactoryComponentFromRegistry(factoryComponentId); // If not found, load it. if (null == factoryComponent) { factoryComponent = createFactoryComponent(factoryComponentDescriptor_p); // Store it in the factory component registry. _factoryComponentRegistry.addFactoryComponent(factoryComponentId, factoryComponent); } return factoryComponent; } /** * Get a factory component from the factory component registry for given id. * @param factoryComponentId_p * @return */ private FactoryComponent getFactoryComponentFromRegistry(String factoryComponentId_p) { return _factoryComponentRegistry.getFactoryComponent(factoryComponentId_p); } /** * Create a factory component from an {@link FactoryComponentDescriptor} instance. * @param fcDescriptor_p * @return a {@link FactoryComponent} instance if successfully created or null otherwise. */ protected FactoryComponent createFactoryComponent(IFactoryComponentDescriptor fcDescriptor_p) { FactoryComponent factoryComponent = null; if (null != fcDescriptor_p) { factoryComponent = ModelFactory.eINSTANCE.createFactoryComponent(); // Set the reader ((ModelElement) factoryComponent).setFactoryComponentReader(fcDescriptor_p.getFactoryComponentReader()); // Set factory component id. String fcId = fcDescriptor_p.getId(); factoryComponent.setId(fcId); // Set factory component name. factoryComponent.setName(fcDescriptor_p.getName()); // Set description factoryComponent.setDescription(fcDescriptor_p.getDescription()); // Set domain path. Domain domain = ModelFactory.eINSTANCE.createDomain(); factoryComponent.setDomain(domain); String domainPath = fcDescriptor_p.getDomainPath(); if ((null != domainPath) && (!ICommonConstants.EMPTY_STRING.equals(domainPath))) { domain.setPath(domainPath); } // Set the contract id (if defined) String contractId = fcDescriptor_p.getContractId(); if ((null != contractId) && (!ICommonConstants.EMPTY_STRING.equals(contractId))) { // Add the pattern viewpoint id in viewpoint id list. ModelHelper.addViewpointTypeId(contractId, ViewpointType.CONTRACT, factoryComponent); } // Add a default pattern viewpoint id in viewpoint id list to force pattern libraries loading... ModelHelper.addViewpointTypeId(ModelFactory.eINSTANCE.createPatternViewpoint().getId(), ViewpointType.PATTERN, factoryComponent); // Add a default mapping viewpoint id in viewpoint id list to force mapping loading... ModelHelper.addViewpointTypeId(ModelFactory.eINSTANCE.createMappingViewpoint().getId(), ViewpointType.MAPPING, factoryComponent); // Set the production plan (if defined) String productionPlanId = fcDescriptor_p.getProductionPlanId(); // Create the factory component factory. Factory factory = ModelFactory.eINSTANCE.createFactory(); // Set the created factory in newly created factory component. factoryComponent.setFactory(factory); if ((null != productionPlanId) && (!ICommonConstants.EMPTY_STRING.equals(productionPlanId))) { // Set the production plan id. factory.setProductionPlanId(productionPlanId); } else if (!DataHelper.isBootstrapFactoryComponent(fcId)) { // Output an error into logs only if current factory component is not the root factory component (root factory component is only the one without a // production plan). StringBuffer loggerMessage = new StringBuffer("FactoryComponentLoadingHelper.createFactoryComponent(..) _ "); //$NON-NLS-1$ loggerMessage.append("No production plan defined for factory component "); //$NON-NLS-1$ loggerMessage.append(fcId); __logger.error(loggerMessage.toString()); } } return factoryComponent; } /** * Load a factory component from its id. * @param factoryComponentId_p * @return a {@link FactoryComponent} instance if successfully loaded or null otherwise. */ protected FactoryComponent loadFactoryComponent(String factoryComponentId_p) { // Get the factory component descriptor from the factory component reader chain. IFactoryComponentDescriptor descriptor = FactoryComponentReaderChain.getInstance().readFactoryComponent(factoryComponentId_p); return createFactoryComponent(descriptor); } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadContract(java.lang.String, java.lang.String) */ public List loadContract(String contractId_p, String factoryComponentId_p) { List result = new ArrayList(0); // Precondition if ((null == contractId_p) || (null == factoryComponentId_p)) { return result; } // Get the contract descriptor from the factory component reader chain. IContractDescriptor descriptor = FactoryComponentReaderChain.getInstance().readContract(contractId_p, factoryComponentId_p); if (null != descriptor) { // Load contract element children. Iterator contractElementDescriptors = descriptor.getContractElementDescriptors().iterator(); while (contractElementDescriptors.hasNext()) { IContractElementDescriptor contractElementDescriptor = contractElementDescriptors.next(); // Load a contract element. ContractElement contractElement = loadContractElement(contractElementDescriptor); // Set contract element factory component id. contractElement.setFactoryComponentId(factoryComponentId_p); // Add it to the resulting list. result.add(contractElement); } } return result; } /** * Load a contract element from its description. * @param contractElementConfigurationElement_p * @return a {@link ContractElement} instance if successfully loaded. */ private ContractElement loadContractElement(IContractElementDescriptor contractElementDescriptor_p) { ContractElement contractElement = ModelFactory.eINSTANCE.createContractElement(); // Set the id. contractElement.setId(contractElementDescriptor_p.getId()); String contractElementName = contractElementDescriptor_p.getContractElementName(); // Set contract element name. contractElement.setName(contractElementName); // Set the concrete type class name. ModelHelper.setContractType(contractElement, contractElementDescriptor_p.getTypeHolderClassName()); // Set type holder where concrete type is stored. ITypeHolder typeHolder = contractElementDescriptor_p.getTypeHolder(); // Could be null, if this piece of data is retrieved from a factory component located within the workspace. if (null != typeHolder) { contractElement.getContractType().setTypeHolder(typeHolder); } // Set the mandatory value. contractElement.setMandatory(contractElementDescriptor_p.isMandatory()); // Set the description contractElement.setDescription(contractElementDescriptor_p.getDescription()); // Get contract element references. contractElement.getContractReferenceIds().addAll(contractElementDescriptor_p.getContractReferenceIds()); return contractElement; } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadContractElementReference(java.lang.String, java.lang.String) */ @SuppressWarnings("deprecation") public ContractElementReference loadContractElementReference(String contractReferenceId_p, String factoryComponentId_p) { ContractElementReference referenceToContractElement = null; // Precondition if (null == contractReferenceId_p) { return referenceToContractElement; } // Get the contract element reference descriptor from the factory component reader chain. IContractElementReferenceDescriptor descriptor = FactoryComponentReaderChain.getInstance().readContractElementReference(contractReferenceId_p, factoryComponentId_p); if (null != descriptor) { // Retrieve contract element reference attribute values. referenceToContractElement = ModelFactory.eINSTANCE.createContractElementReference(); // Set its id. referenceToContractElement.setId(contractReferenceId_p); // Get the referenced contract element id. String contractElementId = descriptor.getContractElementId(); if ((null != contractElementId) && (!ICommonConstants.EMPTY_STRING.equals(contractElementId))) { referenceToContractElement.setReferencedContractElementId(contractElementId); } else { // @deprecated way to get the referenced contract element. // Ensure compatibility with existing factory components. // Set the contract element name. referenceToContractElement.setReferencedContractElementName(descriptor.getContractElementName()); } // Set the reference factory component id. String referencedFcId = descriptor.getReferencedFcId(); if ((null != referencedFcId) && (!ICommonConstants.EMPTY_STRING.equals(referencedFcId))) { referenceToContractElement.setReferencedFactoryComponentId(referencedFcId); } } return referenceToContractElement; } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadProductionPlan(java.lang.String, java.lang.String) */ public ProductionPlan loadProductionPlan(String productionPlanId_p, String factoryComponentId_p) { ProductionPlan productionPlan = null; // Precondition if (null == productionPlanId_p) { return productionPlan; } // Get the production plan descriptor from the factory component reader chain. IProductionPlanDescriptor descriptor = FactoryComponentReaderChain.getInstance().readProductionPlan(productionPlanId_p, factoryComponentId_p); if (null != descriptor) { productionPlan = ModelFactory.eINSTANCE.createProductionPlan(); // Set production plan id. productionPlan.setId(productionPlanId_p); // Set the context String contextId = descriptor.getContextId(); if ((null != contextId) && (!ICommonConstants.EMPTY_STRING.equals(contextId))) { productionPlan.setContextId(contextId); } // Load production plan children. List fcInvocationIds = descriptor.getFactoryComponentInvocationIds(); productionPlan.getFactoryComponentInvocationIds().addAll(fcInvocationIds); } else { StringBuffer loggerMessage = new StringBuffer("FactoryComponentLoadingHelper.loadProductionPlan(..) _ "); //$NON-NLS-1$ loggerMessage.append("Production plan "); //$NON-NLS-1$ loggerMessage.append(productionPlanId_p); loggerMessage.append(" is not found !"); //$NON-NLS-1$ __logger.warn(loggerMessage.toString()); } return productionPlan; } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadFactoryComponentInvocation(java.lang.String, java.lang.String) */ public FactoryComponentInvocation loadFactoryComponentInvocation(String factoryComponentInvocationId_p, String factoryComponentId_p) { FactoryComponentInvocation fcInvocation = null; // Precondition if (null == factoryComponentInvocationId_p) { return fcInvocation; } // Get the factory component invocation descriptor from the factory component reader chain. IFactoryComponentInvocationDescriptor descriptor = FactoryComponentReaderChain.getInstance().readFactoryComponentInvocation(factoryComponentInvocationId_p, factoryComponentId_p); if (null != descriptor) { fcInvocation = ModelFactory.eINSTANCE.createFactoryComponentInvocation(); // Set factory component invocation id. fcInvocation.setId(factoryComponentInvocationId_p); // Set factory component invocation name. fcInvocation.setName(descriptor.getName()); // Set referenced factory component. String referencedFcId = descriptor.getReferencedFactoryComponentId(); if ((null != referencedFcId) && (!ICommonConstants.EMPTY_STRING.equals(referencedFcId))) { fcInvocation.setFactoryComponentId(referencedFcId); } // Set the task factory, if defined String taskFactoryId = descriptor.getTaskFactoryId(); if ((null != taskFactoryId) && (!ICommonConstants.EMPTY_STRING.equals(taskFactoryId))) { fcInvocation.setTaskFactoryId(taskFactoryId); } // Set the context String contextId = descriptor.getContextId(); if ((null != contextId) && (!ICommonConstants.EMPTY_STRING.equals(contextId))) { fcInvocation.setContextId(contextId); } } return fcInvocation; } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadTaskFactory(java.lang.String, java.lang.String) */ public TaskFactoryHolder loadTaskFactory(String taskFactoryId_p, String factoryComponentId_p) { TaskFactoryHolder taskFactoryHolder = null; // Precondition if (null == taskFactoryId_p) { return taskFactoryHolder; } // Get the context descriptor from the factory component reader chain. ITaskFactoryDescriptor descriptor = FactoryComponentReaderChain.getInstance().readTaskFactory(taskFactoryId_p, factoryComponentId_p); if (null != descriptor) { taskFactoryHolder = ModelFactory.eINSTANCE.createTaskFactoryHolder(); // Set task factory id. taskFactoryHolder.setId(taskFactoryId_p); // Set task factory class name taskFactoryHolder.setFactoryClass(descriptor.getTaskFactoryClass()); // Set task factory implementation. Object taskFactory = descriptor.getTaskFactory(); // Could be null, if this piece of data is retrieved from a factory component located within the workspace. if (null != taskFactory) { taskFactoryHolder.setFactory(taskFactory); } } return taskFactoryHolder; } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadContext(java.lang.String, java.lang.String) */ public Context loadContext(String contextId_p, String factoryComponentId_p) { Context context = null; // Precondition if (null == contextId_p) { return context; } // Get the context descriptor from the factory component reader chain. IContextDescriptor descriptor = FactoryComponentReaderChain.getInstance().readContext(contextId_p, factoryComponentId_p); // Set context elements. if (null != descriptor) { context = ModelFactory.eINSTANCE.createContext(); // Set context id. context.setId(contextId_p); // Load context element children. Iterator contextElementDescriptors = descriptor.getContextElementDescriptors().iterator(); while (contextElementDescriptors.hasNext()) { IContextElementDescriptor contextElementDescriptor = contextElementDescriptors.next(); ContextElement contextElement = loadContextElement(contextElementDescriptor); if (null != contextElement) { context.getContextElements().add(contextElement); } } } return context; } /** * Load a context element from its descriptor. * @param contextElementDescriptor_p * @return {@link ContextElement} instance if successfully loaded. */ private ContextElement loadContextElement(IContextElementDescriptor contextElementDescriptor_p) { ContextElement contextElement = ModelFactory.eINSTANCE.createContextElement(); // Set context element id String contextElementId = contextElementDescriptor_p.getId(); contextElement.setId(contextElementId); // Set the id of the plug-in that defines this context element. contextElement.setPluginId(contextElementDescriptor_p.getPluginId()); // Get context key : it is either a string or a reference to a contract element. // Try contract element reference first. // Get contract element reference. String contractRefIdOrKeyValue = contextElementDescriptor_p.getContractReferenceId(); if (null != contractRefIdOrKeyValue) { contextElement.setContractReferenceId(contractRefIdOrKeyValue); } else { // Then try key name. contractRefIdOrKeyValue = contextElementDescriptor_p.getKey(); if (null != contractRefIdOrKeyValue) { // Retrieve key name and set it as key for the context element. contextElement.setKey(contractRefIdOrKeyValue); } } // Get the readable value. String readableValue = contextElementDescriptor_p.getReadableValue(); if (null == readableValue) { StringBuffer loggerMessage = new StringBuffer("FactoryComponentLoadingHelper.loadContextElement(..) _ "); //$NON-NLS-1$ loggerMessage.append("Context element readable value must be set!"); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } else { contextElement.setReadableValue(readableValue); } // Get type. Type type = contextElementDescriptor_p.getType(); if (null != type) { contextElement.setContextType(type); } else if (null == contextElement.getContractReferenceId()) { StringBuilder loggerMessage = new StringBuilder("FactoryComponentLoadingHelper.loadContextElement(..) _ "); //$NON-NLS-1$ loggerMessage.append("Could not instanciate type holder for ").append(contextElement.getId()).append(" !").append(ICommonConstants.EOL_CHARACTER); //$NON-NLS-1$ //$NON-NLS-2$ loggerMessage.append("No reference to a contract element could be found either !").append(ICommonConstants.EOL_CHARACTER); //$NON-NLS-1$ loggerMessage.append("It is likely this context element will be useless."); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } return contextElement; } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadPatternLibraries(java.lang.String) */ public void loadPatternLibraries(String factoryComponentId_p, PatternViewpoint patternViewpoint_p) { // Preconditions. if ((null == factoryComponentId_p) || (null == patternViewpoint_p)) { return; } // Get the pattern library descriptor from the factory component reader chain. IDescriptor libraryDescriptors = FactoryComponentReaderChain.getInstance().readPatternLibraries(factoryComponentId_p); // Create an handler to fill in the pattern viewpoint with libraries and patterns read from descriptors. PatternDescriptorHandler handler = new PatternDescriptorHandler(patternViewpoint_p); // Create a pattern strategy to execute the handler against library descriptors. PatternDescriptorStrategy patternStrategy = new PatternDescriptorStrategy(); // patternStrategy.iterateThroughPatternExtensionDescriptor(handler, libraryDescriptors); } /** * @see org.eclipse.egf.model.data.helper.IFactoryComponentLoadingHelper#loadMappings(java.lang.String) */ public List loadMappings(String factoryComponentId_p) { List result = new ArrayList(0); // Precondition. if (null == factoryComponentId_p) { return result; } // Get the mappings descriptor from the factory component reader chain. IDescriptor mappingDescriptors = FactoryComponentReaderChain.getInstance().readMappings(factoryComponentId_p); Iterator mappings = mappingDescriptors.getChildren().iterator(); while (mappings.hasNext()) { IDescriptor currentMappingDescriptor = mappings.next(); MappingModel mapping = ModelFactory.eINSTANCE.createMappingModel(); // Set the mapping id. mapping.setId((String) currentMappingDescriptor.getValue(ExtensionPointHelper.ATT_ID)); // Set the mapping name. mapping.setName((String) currentMappingDescriptor.getValue(ExtensionPointHelper.ATT_NAME)); // Set the path. mapping.setPath((String) currentMappingDescriptor.getValue(IMappingConstants.MAPPING_ATT_PATH)); // Set the source. mapping.setSource((String) currentMappingDescriptor.getValue(IMappingConstants.MAPPING_ATT_SOURCE)); // Set the target. mapping.setTarget((String) currentMappingDescriptor.getValue(IMappingConstants.MAPPING_ATT_TARGET)); // Add it to the mappings in the mapping viewpoints. result.add(mapping); } return result; } /** * This handler handles the library descriptors parsing to retrieve the libraries with patterns as children. * @author Guillaume Brocard */ class PatternDescriptorHandler implements IPatternDescriptorHandler { private PatternViewpoint _patternViewpoint; /** * Constructor. * @param patternViewpoint_p */ public PatternDescriptorHandler(PatternViewpoint patternViewpoint_p) { _patternViewpoint = patternViewpoint_p; } /** * @see org.eclipse.egf.common.descriptor.pattern.helper.IPatternDescriptorHandler#handleDescriptor(org.eclipse.egf.common.descriptor.IDescriptor) */ public void handleDescriptor(IDescriptor descriptor_p) { // Do nothing. } /** * @see org.eclipse.egf.common.descriptor.pattern.helper.IPatternDescriptorHandler#handleLibraryDescriptor(org.eclipse.egf.common.descriptor.IDescriptor, * java.lang.String) */ public void handleLibraryDescriptor(IDescriptor descriptor_p, String libraryFullId_p) { // Create a library for given descriptor. PatternLibrary newPatternLibrary = ModelFactory.eINSTANCE.createPatternLibrary(); // Set the library id. newPatternLibrary.setId(libraryFullId_p); // Set the library name. newPatternLibrary.setName((String) descriptor_p.getValue(ExtensionPointHelper.ATT_NAME)); // Set the library production orchestration. newPatternLibrary.setProductionOrchestration((String) descriptor_p.getValue(IPatternConstants.LIBRARY_PRODUCTION_ORCHESTRATION_ATTRIBUTE_NAME)); // Set the library runtime orchestration. newPatternLibrary.setRuntimeOrchestration((String) descriptor_p.getValue(IPatternConstants.LIBRARY_RUNTIME_ORCHESTRATION_ATTRIBUTE_NAME)); // Get the parent library of the created library. PatternLibrary parentLibrary = getParentLibrary(newPatternLibrary); // If the parent library exists, add the newly created one to it. if (null != parentLibrary) { parentLibrary.getPatternElements().add(newPatternLibrary); } else { // The newly created library is a root library, add it to the pattern viewpoint directly. _patternViewpoint.getLibraries().add(newPatternLibrary); } } /** * @see org.eclipse.egf.common.descriptor.pattern.helper.IPatternDescriptorHandler#handlePatternDescriptor(org.eclipse.egf.common.descriptor.IDescriptor, * java.lang.String) */ public void handlePatternDescriptor(IDescriptor descriptor_p, String patternFullId_p) { // Create a pattern model for given descriptor. PatternModel newPatternModel = ModelFactory.eINSTANCE.createPatternModel(); // Set the pattern id. newPatternModel.setId(patternFullId_p); // Set the pattern name. newPatternModel.setName((String) descriptor_p.getValue(ExtensionPointHelper.ATT_NAME)); // Set the pattern path (ie pattern definition). newPatternModel.setPath((String) descriptor_p.getValue(IPatternConstants.PATTERN_MODEL_ATTRIBUTE_NAME)); // Get the parent library of the created pattern. PatternLibrary parentLibrary = getParentLibrary(newPatternModel); // If the parent library exists, add the newly created one to it. if (null != parentLibrary) { parentLibrary.getPatternElements().add(newPatternModel); } else { // Pattern must have a parent library. StringBuilder loggerMessage = new StringBuilder("PatternDescriptorHandler.handlePatternDescriptor(..) _ "); //$NON-NLS-1$ loggerMessage.append("Pattern model id:").append(patternFullId_p).append(" must have a parent library!"); //$NON-NLS-1$ //$NON-NLS-2$ __logger.error(loggerMessage.toString()); } } /** * Return the parent library for specified child id.
* A child is either or library or a pattern. * @param childId_p * @return null if given library id represent a root library. */ private PatternLibrary getParentLibrary(AbstractPatternElement patternElement_p) { PatternLibrary parentLibrary = null; // Search the last libraries/patterns separator in child id. String parentLibraryId = ModelHelper.getParentLibraryId(patternElement_p); // Check, the parent id is different from the child id. if (null != parentLibraryId) { parentLibrary = ModelHelper.getLibrary(parentLibraryId, _patternViewpoint); } return parentLibrary; } } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/helper/FactoryComponentSortingPriorityHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5695 Text-content-md5: 24263236fe2c7936bc1c6fceb704b8ac Text-content-sha1: e46c2382d6ea266552a5755211f2ee898ee6c8bb Content-length: 5740 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.internal.helper; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.Domain; import org.eclipse.egf.model.Factory; import org.eclipse.egf.model.MappingModel; import org.eclipse.egf.model.MappingViewpoint; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.model.PatternViewpoint; import org.eclipse.egf.model.Specification; import org.eclipse.egf.model.util.ModelSwitch; /** * Helper to sort model elements defined in EGF model. * @author fournier */ public class FactoryComponentSortingPriorityHelper { /** * Sorting priority for the Domain model element. */ private static final int SORTING_PRIORITY_DOMAIN = 0; /** * Sorting priority for the Specification model element. */ private static final int SORTING_PRIORITY_SPECIFICATION = 1; /** * Sorting priority for the Factory model element. */ private static final int SORTING_PRIORITY_FACTORY = 2; /** * Sorting priority for the Contract model element. */ private static final int SORTING_PRIORITY_CONTRACT = 3; /** * Sorting priority for the Pattern viewpoint model element. */ private static final int SORTING_PRIORITY_PATTERN_VIEWPOINT = 4; /** * Sorting priority for the Pattern library model element. */ private static final int SORTING_PRIORITY_PATTERN_LIBRARY = 5; /** * Sorting priority for the Pattern model element. */ private static final int SORTING_PRIORITY_PATTERN_MODEL = 6; /** * Sorting priority for the Mapping viewpoint model element. */ private static final int SORTING_PRIORITY_MAPPING_VIEWPOINT = 7; /** * Sorting priority for the Mapping model element. */ private static final int SORTING_PRIORITY_MAPPING_MODEL = 8; /** * Singleton instance. */ private static FactoryComponentSortingPriorityHelper __instance; /** * The switch delegates to the createXXX methods. */ private ModelSwitch _modelSwitch; private FactoryComponentSortingPriorityHelper() { initialize(); } /** * Get the unique instance. * @return a not null instance. */ public static FactoryComponentSortingPriorityHelper getInstance() { if (null == __instance) { __instance = new FactoryComponentSortingPriorityHelper(); } return __instance; } /** * Initialize the model switch. */ private void initialize() { _modelSwitch = new ModelSwitch() { /** * @see org.eclipse.egf.core.model.util.ModelSwitch#caseDomain(org.eclipse.egf.core.model.Domain) */ @Override public Integer caseDomain(Domain object_p) { return Integer.valueOf(SORTING_PRIORITY_DOMAIN); } /** * @see org.eclipse.egf.core.model.util.ModelSwitch#caseFactory(org.eclipse.egf.core.model.Factory) */ @Override public Integer caseFactory(Factory object_p) { return Integer.valueOf(SORTING_PRIORITY_FACTORY); } /** * @see org.eclipse.egf.core.model.util.ModelSwitch#caseSpecification(org.eclipse.egf.core.model.Specification) */ @Override public Integer caseSpecification(Specification object_p) { return Integer.valueOf(SORTING_PRIORITY_SPECIFICATION); } @Override public Integer caseContract(Contract object_p) { return Integer.valueOf(SORTING_PRIORITY_CONTRACT); } @Override public Integer casePatternLibrary(PatternLibrary object_p) { return Integer.valueOf(SORTING_PRIORITY_PATTERN_LIBRARY); } @Override public Integer casePatternModel(PatternModel object_p) { return Integer.valueOf(SORTING_PRIORITY_PATTERN_MODEL); } @Override public Integer casePatternViewpoint(PatternViewpoint object_p) { return Integer.valueOf(SORTING_PRIORITY_PATTERN_VIEWPOINT); } /** * @see org.eclipse.egf.model.util.ModelSwitch#caseMappingModel(org.eclipse.egf.model.MappingModel) */ @Override public Integer caseMappingModel(MappingModel object_p) { return Integer.valueOf(SORTING_PRIORITY_MAPPING_MODEL); } /** * @see org.eclipse.egf.model.util.ModelSwitch#caseMappingViewpoint(org.eclipse.egf.model.MappingViewpoint) */ @Override public Integer caseMappingViewpoint(MappingViewpoint object_p) { return Integer.valueOf(SORTING_PRIORITY_MAPPING_VIEWPOINT); } }; } /** * Get the sorting priority for the target. * @param target_p the object that a priority is got for. * @return an integer or -1 if no priority is defined for given element. */ public int getSortingPriority(NamedModelElementWithId modelElement_p) { Integer doSwitch = _modelSwitch.doSwitch(modelElement_p); return (null != doSwitch) ? doSwitch.intValue() : -1; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/natures Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/natures/BaseProject.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 893 Text-content-md5: 84b7915e96540fd7e7cfcea6e140e3fd Text-content-sha1: eb9c8b9302ee1976383189d8ae51ad8085cce3b5 Content-length: 938 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2000, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation */ package org.eclipse.egf.core.internal.natures; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectNature; import org.eclipse.core.runtime.PlatformObject; /** */ public abstract class BaseProject extends PlatformObject implements IProjectNature { private IProject _project; public BaseProject() { super(); } public IProject getProject() { return _project; } public void setProject(IProject project_p) { _project = project_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/natures/FactoryComponentProject.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1430 Text-content-md5: ed0ce79c73096a3c7d8ea0136ee1a3d3 Text-content-sha1: 8b958916c325f37b53fa988ad79d3d89d6939137 Content-length: 1475 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.core.internal.natures; import org.eclipse.core.runtime.CoreException; import org.eclipse.egf.core.helper.EclipseBuilderHelper; import org.eclipse.egf.core.natures.FactoryComponentNatures; public class FactoryComponentProject extends BaseProject { /** * FactoryComponentNature constructor comment. */ public FactoryComponentProject() { super(); } public void configure() throws CoreException { EclipseBuilderHelper.addToBuildSpec(getProject(), FactoryComponentNatures.PATTERN_BUILDER_ID); EclipseBuilderHelper.addToBuildSpec(getProject(), FactoryComponentNatures.PATTERN_TEMPLATE_BUILDER_ID); } public void deconfigure() throws CoreException { EclipseBuilderHelper.removeFromBuildSpec(getProject(), FactoryComponentNatures.PATTERN_BUILDER_ID); EclipseBuilderHelper.removeFromBuildSpec(getProject(), FactoryComponentNatures.PATTERN_TEMPLATE_BUILDER_ID); } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/production Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/production/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1096 Text-content-md5: 6ee52bc486621a41af253ec695441fb2 Text-content-sha1: dd227ca449301e2cf9c5d0f808b3203ec1e050f3 Content-length: 1141 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.internal.production; import org.eclipse.osgi.util.NLS; /** * @author brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.internal.production.messages"; //$NON-NLS-1$ public static String ProductionManager_ProgressReporting_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { // Nothing to do, static initialization. } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/production/ProductionManager.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 15360 Text-content-md5: 4cc1d5b298016bfc2f4a6fcf7597b39d Text-content-sha1: 2e7b7537c30176fc87b2864c36d4d0c4bec1af48 Content-length: 15405 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.internal.production; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.SubMonitor; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.progress.ProgressReporter; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.context.ProductionContext; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.task.AbstractTask; import org.eclipse.egf.core.task.ITaskFactory; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.egf.model.TaskFactoryHolder; import org.eclipse.egf.model.contract.type.ITypeHolder; import org.eclipse.egf.model.data.helper.ModelHelper; /** * Provides services to generate a factory component. * @author fournier */ public class ProductionManager { /** * Log4j reference logger. */ static final Logger __logger = Logger.getLogger(ProductionManager.class.getPackage().getName()); /** * Generate identified factory component, reporting using given progress monitor. * @param factoryComponentId_p * @param progressMonitor_p Null if no reporting is to be done. * @return */ public boolean generate(String factoryComponentId_p, IProgressMonitor progressMonitor_p) { boolean result = true; IProgressMonitor progressMonitor = progressMonitor_p; // Just make sure a monitor is being used. if (null == progressMonitor) { progressMonitor = new NullProgressMonitor(); } // Construct list of tasks to execute. List tasksList = new ArrayList(0); // Production context is unknown at this time. // As for progress reporting, there is no easy way to assume how much time computation of tasks will take. // Since we'd like a linear progress monitor (in terms of number of tasks executed), this part of the generation is // ignored. generate(factoryComponentId_p, null, tasksList); // Do generate by executing these tasks. String generationMessage = Messages.ProductionManager_ProgressReporting_Title + factoryComponentId_p; try { // Convert progress monitor to sub monitor. SubMonitor subMonitor = SubMonitor.convert(progressMonitor_p, generationMessage, tasksList.size() * ProgressReporter.TASK_DEFAULT_TICKS_COUNT); // Do go for the execution of all tasks. // Check for cancellation each time. for (Iterator tasks = tasksList.iterator(); tasks.hasNext() && !progressMonitor.isCanceled();) { result &= tasks.next().execute(subMonitor.newChild(ProgressReporter.TASK_DEFAULT_TICKS_COUNT), ProgressReporter.TASK_DEFAULT_TICKS_COUNT); } } finally { // Whatever happened, always complete the progress monitor. progressMonitor.done(); // Return false if cancellation happened. result &= !progressMonitor.isCanceled(); } return result; } /** * Generate a factory component related to its id. * @param factoryComponentId_p factory component identifier * @param productionContext_p can be null (for instance at first call) * @param resultingTasks_p The list of tasks to execute so as to generate the factory component */ private void generate(String factoryComponentId_p, ProductionContext productionContext_p, final List resultingTasks_p) { // Get the factory component from factory component registry. FactoryComponent fc = CoreActivator.getDefault().getFactoryComponent(factoryComponentId_p); // Precondition if (null == fc) { StringBuffer loggerMessage = new StringBuffer("ProductionManager.generate(..) _ "); //$NON-NLS-1$ loggerMessage.append("Unable to generate factory component:"); //$NON-NLS-1$ loggerMessage.append(factoryComponentId_p); loggerMessage.append(", factory component not found."); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); return; } // Create a new production context from the one given as parameter. ProductionContext productionContext = new ProductionContext(productionContext_p); // Execute its production plan. ProductionPlan productionPlan = ModelHelper.getProductionPlan(fc); Context productionPlanContext = productionPlan.getContext(); // Initialize the production context with context elements from the production plan context. List contractElements = null; Contract contract = ModelHelper.getContract(fc); if (null != contract) { contractElements = contract.getContractElements(); } else { contractElements = Collections.emptyList(); } feedProductionContext(productionContext, productionPlanContext, factoryComponentId_p, contractElements); // Execute the production plan means to execute all its contained factory component invocations. Iterator fcInvocations = productionPlan.getFactoryComponentInvocations().iterator(); // Iterate over all contained factory component invocations. while (fcInvocations.hasNext()) { FactoryComponentInvocation fcInvocation = fcInvocations.next(); // Get factory component invocation context. Context fcInvocationContext = fcInvocation.getContext(); // Create a dedicated production context to current factory component invocation. ProductionContext fcInvocationProductionContext = new ProductionContext(productionContext); // Initialize this dedicated production context with context elements from current factory component invocation context. feedProductionContext(fcInvocationProductionContext, fcInvocationContext, fcInvocation.getFactoryComponentId()); // Get factory component invocation factory. // If defined, let's execute the task provided by the factory. String taskFactoryId = fcInvocation.getTaskFactoryId(); if (null != taskFactoryId) { // Get the task factory holder. TaskFactoryHolder taskFactoryHolder = fcInvocation.getTaskFactory(); // Get the task factory implementation ITaskFactory taskFactory = (ITaskFactory) taskFactoryHolder.getFactory(); AbstractTask task = taskFactory.createTask(); task.setFactoryComponentId(factoryComponentId_p); task.setProductionContext(fcInvocationProductionContext); resultingTasks_p.add(task); } else { // No factory component factory is defined, let's generate the referenced factory component by the current factory component invocation. generate(fcInvocation.getFactoryComponentId(), fcInvocationProductionContext, resultingTasks_p); } } } /** * Add local context values to a production context (that represents the whole execution context before (inclusive) reaching this factory component). * @param productionContext_p the initialized production context. * @param context_p the provider of context elements. * @param localFactoryComponentId_p The factory component id which the context is being initialized. */ private void feedProductionContext(ProductionContext productionContext_p, Context context_p, String localFactoryComponentId_p) { // Preconditions if (null == productionContext_p || null == context_p) { return; } Iterator contextElements = context_p.getContextElements().iterator(); // Iterate over context elements. while (contextElements.hasNext()) { ContextElement contextElement = contextElements.next(); // Get the id of the plug-in that defines this context element. String contextElementPluginId = contextElement.getPluginId(); // Context value. Object contextValue = null; // Get the name as a key for the current contextElement from its contractReference. ContractElementReference contractElementReference = contextElement.getContractElementReference(); // Use contract reference as a key. if (null != contractElementReference) { addContractElementReferenceValue(productionContext_p, contractElementReference, contextElement.getReadableValue(), true, contextElementPluginId); } else { // Or use a name as a key. // Type is then provided by the context element directly. ITypeHolder typeHolder = (ITypeHolder) contextElement.getContextType().getTypeHolder(); // Set the id of the plug-in that defines the context element. typeHolder.setPluginId(contextElementPluginId); contextValue = typeHolder.getValue(contextElement.getReadableValue()); if (null != contextValue) { productionContext_p.addContextElement(contextElement.getKey(), contextValue, localFactoryComponentId_p); } else { StringBuilder loggerMessage = new StringBuilder("ProductionManager.initializeProductionContext(..) _ "); //$NON-NLS-1$ loggerMessage.append("Could not interpret ").append(contextElement.getReadableValue()); //$NON-NLS-1$ loggerMessage.append(" using registered ").append(typeHolder.getClass().getName()).append(" !"); //$NON-NLS-1$ //$NON-NLS-2$ __logger.error(loggerMessage.toString()); } } } } /** * Add local context values to a production context (that represents the whole execution context before (inclusive) reaching this factory component).
* Also try to resolve contract elements values that are referencing other contract elements values. * @param productionContext_p the initialized production context. * @param context_p the provider of context elements. * @param localFactoryComponentId_p The factory component id which the context is being initialized. * @param contractElements_p Contract elements of current factory component (local factory component). */ private void feedProductionContext(ProductionContext productionContext_p, Context productionPlanContext_p, String localFactoryComponentId_p, List contractElements_p) { // First of all, fill production context with local context. feedProductionContext(productionContext_p, productionPlanContext_p, localFactoryComponentId_p); // Then try and resolve pending contract elements. if (contractElements_p.isEmpty()) { // Nothing to do. return; } // Cycle through contract elements. for (ContractElement contractElement : contractElements_p) { // Search for an already assigned value in the production context. Object value = productionContext_p.getContextElementValue(contractElement.getName(), localFactoryComponentId_p); if (null != value) { // If so, might need to propagate it to pointed contract elements. // Cycle through its references, if any. for (ContractElementReference contractElementReference : contractElement.getContractElementReferences()) { addContractElementReferenceValue(productionContext_p, contractElementReference, value, false, null); } } } } /** * Add contract element reference value for current step. * @param productionContext_p The production context hosting the values. * @param reference_p The reference that should be valued. * @param value_p The value of the reference. Either directly the typed one, or its readable form (String). * @param decodeValue_p Should value be decoded ? true if so (then value_p is to be the readable form, ie a String), * false otherwise (then value_p is to be the expected typed value). * @param pluginId_p Plug-in id hosting allowing for decoding, if it is required. null if no decoding should be done (along with * decodeValue_p set to false). */ private void addContractElementReferenceValue(ProductionContext productionContext_p, ContractElementReference reference_p, Object value_p, boolean decodeValue_p, String pluginId_p) { DataHelper.resolveContractElement(reference_p); ContractElement contractElement = reference_p.getReferencedContractElement(); // Add context value for declared (contract element) name. String contractElementName = contractElement.getName(); String contractElementFcId = contractElement.getFactoryComponentId(); Object existingValue = productionContext_p.getContextElementValue(contractElementName, contractElementFcId); // Precondition. // This reference has already been valued, do nothing here. if (null != existingValue) { return; } // Value. Object value = null; // Value should be decoded, it is assumed to be a String then. if (decodeValue_p) { // Type holder. ITypeHolder typeHolder = (ITypeHolder) contractElement.getContractType().getTypeHolder(); // Set the id of the plug-in that defines the element. if (null != pluginId_p) { typeHolder.setPluginId(pluginId_p); } // Decode value. value = typeHolder.getValue((String) value_p); if (null == value) { StringBuffer loggerMessage = new StringBuffer("ProductionManager.addContractElementReferenceValue(..) _ "); //$NON-NLS-1$ loggerMessage.append("ContractElement "); //$NON-NLS-1$ loggerMessage.append(contractElementName); loggerMessage.append(" and Element are not compatible.").append(ICommonConstants.EOL_CHARACTER); //$NON-NLS-1$ loggerMessage.append("ContractElement expected type holder :"); //$NON-NLS-1$ loggerMessage.append(typeHolder.getClass().getName()).append(ICommonConstants.EOL_CHARACTER); loggerMessage.append("Element value :"); //$NON-NLS-1$ loggerMessage.append(decodeValue_p); __logger.error(loggerMessage.toString()); } } else { // Use provided value, directly. value = value_p; } // Check context value against contract element declared type. if (null != value) { productionContext_p.addContextElement(contractElementName, value, contractElementFcId); } } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/production/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 618 Text-content-md5: 8fbf28b49ae172e8ad8fa35c045885a6 Text-content-sha1: 5c2606ef3c45c56d51a06e30d50716cc09453087 Content-length: 663 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### ProductionManager_ProgressReporting_Title=Generating Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/reader Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/reader/DefaultFactoryComponentReader.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 23806 Text-content-md5: a915deccb16ff4a47e8dbedcd0c19fa5 Text-content-sha1: 353830b2d6353c2706916278e5bf848326b0a944 Content-length: 23851 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.internal.reader; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.egf.common.descriptor.IDescriptor; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.extensionpoint.IFactoryComponentInvocationConstants; import org.eclipse.egf.core.extensionpoint.IFactoryComponentConstants; import org.eclipse.egf.core.extensionpoint.IContextConstants; import org.eclipse.egf.core.extensionpoint.IContractConstants; import org.eclipse.egf.core.extensionpoint.IContractReferenceConstants; import org.eclipse.egf.core.extensionpoint.IMappingConstants; import org.eclipse.egf.core.extensionpoint.IProductionPlanConstants; import org.eclipse.egf.core.extensionpoint.ITaskFactoryConstants; import org.eclipse.egf.core.reader.descriptor.FactoryComponentInvocationDescriptor; import org.eclipse.egf.core.reader.descriptor.FactoryComponentDescriptor; import org.eclipse.egf.core.reader.descriptor.ContextDescriptor; import org.eclipse.egf.core.reader.descriptor.ContextElementDescriptor; import org.eclipse.egf.core.reader.descriptor.ContractDescriptor; import org.eclipse.egf.core.reader.descriptor.ContractElementDescriptor; import org.eclipse.egf.core.reader.descriptor.ContractElementReferenceDescriptor; import org.eclipse.egf.core.reader.descriptor.MappingDescriptor; import org.eclipse.egf.core.reader.descriptor.ProductionPlanDescriptor; import org.eclipse.egf.core.reader.descriptor.TaskFactoryDescriptor; import org.eclipse.egf.core.task.ITaskFactory; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.Type; import org.eclipse.egf.model.contract.type.ITypeHolder; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; /** * Default factory component reader uses the Eclipse platform registry to retrieve data. * @author fournier */ public class DefaultFactoryComponentReader implements IFactoryComponentReader { /** * Define the plug-in id value for the plug-in that defines all extension points used into this class. */ public static final String PLUGIN_ID = CoreActivator.getDefault().getPluginID(); /** * Read the description of given configuration element. * @param element_p * @return null if no description is read. */ private String readDescription(IConfigurationElement element_p) { String description = null; IConfigurationElement[] descriptions = element_p.getChildren(ExtensionPointHelper.ELEMENT_DESCRIPTION); if (descriptions.length > 0) { // The description element must be unique (see the extension-point schemas). description = descriptions[0].getValue(); } return description; } /** * See extension point : org.eclipse.egf.core.factoryComponent * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readFactoryComponent(java.lang.String) */ public FactoryComponentDescriptor readFactoryComponent(String fcId_p) { return readFactoryComponent( ExtensionPointHelper.getConfigurationElement( PLUGIN_ID, IFactoryComponentConstants.FACTORY_COMPONENT_EXTENSION_POINT_ID, fcId_p ) ); } /** * Read a factory component from its related configuration element. * @param factoryComponentConfigurationElement_p * @return */ public FactoryComponentDescriptor readFactoryComponent(IConfigurationElement factoryComponentConfigurationElement_p) { FactoryComponentDescriptor descriptor = null; if (null != factoryComponentConfigurationElement_p) { descriptor = new FactoryComponentDescriptor(this); descriptor.setId(ExtensionPointHelper.getId(factoryComponentConfigurationElement_p)); // Set name String fcName = factoryComponentConfigurationElement_p.getAttribute(IFactoryComponentConstants.FACTORY_COMPONENT_ATT_NAME); if (null != fcName) { descriptor.setName(fcName); } // Read the description. String description = readDescription(factoryComponentConfigurationElement_p); if (null == description) { // No description found. // Read it directly form the current element (@deprecated, but necessary to ensure compatibility) description = factoryComponentConfigurationElement_p.getValue(); } // Set the description descriptor.setDescription(description); // Set domain path. String domainPath = factoryComponentConfigurationElement_p.getAttribute(IFactoryComponentConstants.FACTORY_COMPONENT_ATT_DOMAIN); if (null != domainPath) { descriptor.setDomainPath(domainPath); } // Set the contract id (if defined) String contractId = factoryComponentConfigurationElement_p.getAttribute(IFactoryComponentConstants.FACTORY_COMPONENT_ATT_CONTRACT_ID); if (null != contractId) { descriptor.setContractId(contractId); } // Set the production plan (if defined) String productionPlanId = factoryComponentConfigurationElement_p.getAttribute(IFactoryComponentConstants.FACTORY_COMPONENT_ATT_PRODUCTION_PLAN_ID); if (null != productionPlanId) { descriptor.setProductionPlanId(productionPlanId); } } return descriptor; } /** * See extension point : org.eclipse.egf.core.productionPlan * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readProductionPlan(java.lang.String, java.lang.String) */ public ProductionPlanDescriptor readProductionPlan(String productionPlanId_p, String fcId_p) { ProductionPlanDescriptor descriptor = null; IConfigurationElement productionPlanConfigurationElement = ExtensionPointHelper .getConfigurationElement(PLUGIN_ID, IProductionPlanConstants.PRODUCTION_PLAN_EXTENSION_POINT_ID, productionPlanId_p); if (null != productionPlanConfigurationElement) { descriptor = new ProductionPlanDescriptor(this); descriptor.setId(productionPlanId_p); // Set the context. String contextId = productionPlanConfigurationElement.getAttribute(IProductionPlanConstants.PRODUCTION_PLAN_ATT_CONTEXT_ID); if (null != contextId) { descriptor.setContextId(contextId); } // Load production plan children. IConfigurationElement[] fcInvocationElements = productionPlanConfigurationElement.getChildren(IProductionPlanConstants.PRODUCTION_PLAN_CHILD_ASSET_CONFIGURATION); // Set an factory component invocation id for each retrieved configuration element. for (int i = 0; i < fcInvocationElements.length; i++) { String fcInvocationId = fcInvocationElements[i].getAttribute(ExtensionPointHelper.ATT_ID); descriptor.addFactoryComponentInvocationId(fcInvocationId); } } return descriptor; } /** * See extension point : org.eclipse.egf.core.factoryComponentConfiguration * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readFactoryComponentInvocation(java.lang.String, java.lang.String) */ public FactoryComponentInvocationDescriptor readFactoryComponentInvocation(String factoryComponentInvocationId_p, String fcId_p) { FactoryComponentInvocationDescriptor descriptor = null; IConfigurationElement fcInvocationConfigurationElement = ExtensionPointHelper .getConfigurationElement( PLUGIN_ID, IFactoryComponentInvocationConstants.FACTORY_COMPONENT_INVOCATION_EXTENSION_POINT_ID, factoryComponentInvocationId_p); if (null != fcInvocationConfigurationElement) { descriptor = new FactoryComponentInvocationDescriptor(this); descriptor.setId(factoryComponentInvocationId_p); // Set factory component invocation name String fcInvocationName = fcInvocationConfigurationElement.getAttribute(IFactoryComponentInvocationConstants.FACTORY_COMPONENT_INVOCATION_ATT_NAME); descriptor.setName(fcInvocationName); // Set referenced factory component. String referencedFcId = fcInvocationConfigurationElement.getAttribute(IFactoryComponentInvocationConstants.FACTORY_COMPONENT_INVOCATION_ATT_FC_ID); if (null != referencedFcId) { descriptor.setReferencedFactoryComponentId(referencedFcId); } // Set the task factory, if defined String taskFactoryId = fcInvocationConfigurationElement.getAttribute(IFactoryComponentInvocationConstants.FACTORY_COMPONENT_INVOCATION_ATT_TASK_FACTORY_ID); if (null != taskFactoryId) { descriptor.setTaskFactoryId(taskFactoryId); } // Set the context String contextId = fcInvocationConfigurationElement.getAttribute(IFactoryComponentInvocationConstants.FACTORY_COMPONENT_INVOCATION_ATT_CONTEXT_ID); if (null != contextId) { descriptor.setContextId(contextId); } } return descriptor; } /** * See extension point : org.eclipse.egf.core.contract * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readContract(java.lang.String, java.lang.String) */ public ContractDescriptor readContract(String contractId_p, String fcId_p) { ContractDescriptor descriptor = null; IConfigurationElement contractConfigurationElement = ExtensionPointHelper.getConfigurationElement(PLUGIN_ID, IContractConstants.CONTRACT_EXTENSION_POINT_ID, contractId_p); if (null != contractConfigurationElement) { descriptor = new ContractDescriptor(this); descriptor.setId(contractId_p); // Load contract element children. IConfigurationElement[] contractElements = contractConfigurationElement.getChildren(IContractConstants.CONTRACT_ELEMENT_CHILD); for (int i = 0; i < contractElements.length; i++) { // Load a contract element. ContractElementDescriptor contractElementDescriptor = readContractElement(contractElements[i]); // Add retrieved contract element in contract. if (null != contractElementDescriptor) { // Add it to contract. descriptor.addContractElementDescriptor(contractElementDescriptor); } } } return descriptor; } /** * Read a contract element (see extension point : org.eclipse.egf.core.contract). * @param configurationElement_p * @return */ private ContractElementDescriptor readContractElement(IConfigurationElement contractElementConfigurationElement_p) { ContractElementDescriptor descriptor = new ContractElementDescriptor(this); // Set the id. descriptor.setId(contractElementConfigurationElement_p.getAttribute(ExtensionPointHelper.ATT_ID)); String contractElementName = contractElementConfigurationElement_p.getAttribute(IContractConstants.CONTRACT_ELEMENT_ATT_NAME); // Set contract element name. descriptor.setContractElementName(contractElementName); // Load a Type instance through extension mechanism to avoid Eclipse class loader issues. ITypeHolder typeHolder = (ITypeHolder) ExtensionPointHelper.createInstance(contractElementConfigurationElement_p, IContractConstants.CONTRACT_ELEMENT_ATT_TYPE); // Set type holder where concrete type is stored. descriptor.setTypeHolder(typeHolder); // Set concrete type name got from the type holder. descriptor.setTypeHolderClassName(typeHolder.getClass().getName()); // Set the mandatory value. String mandatory = contractElementConfigurationElement_p.getAttribute(IContractConstants.CONTRACT_ELEMENT_ATT_MANDATORY); // If not defined, the contract element is mandatory. boolean isMandatory = (null != mandatory) ? Boolean.parseBoolean(mandatory) : true; descriptor.setMandatory(isMandatory); // Read the description. String description = readDescription(contractElementConfigurationElement_p); if (null == description) { // No description found. // Read it directly form the current element (@deprecated, but necessary to ensure compatibility) description = contractElementConfigurationElement_p.getValue(); } // Set the description. descriptor.setDescription(description); // Get contract element references. IConfigurationElement[] contractReferences = contractElementConfigurationElement_p.getChildren(IFactoryComponentConstants.CONTRACT_REF_CHILD); for (IConfigurationElement contractRef : contractReferences) { // Get contract element reference id. String contractReferenceId = contractRef.getAttribute(IFactoryComponentConstants.ATT_CONTRACT_ELEMENT_REFERENCE_ID); descriptor.addContractReferenceId(contractReferenceId); } return descriptor; } /** * See extension point : org.eclipse.egf.core.context * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readContext(java.lang.String, java.lang.String) */ public ContextDescriptor readContext(String contextId_p, String fcId_p) { ContextDescriptor descriptor = null; IConfigurationElement contextConfigurationElement = ExtensionPointHelper.getConfigurationElement(PLUGIN_ID, IContextConstants.CONTEXT_EXTENSION_POINT_ID, contextId_p); if (null != contextConfigurationElement) { descriptor = new ContextDescriptor(this); descriptor.setId(contextId_p); // Load context element children. IConfigurationElement[] contextElements = contextConfigurationElement.getChildren(IContextConstants.CONTEXT_CHILD); for (int i = 0; i < contextElements.length; i++) { ContextElementDescriptor contextElementDescriptor = readContextElementDescriptor(contextElements[i]); // Add retrieved context element descriptor in context descriptor. if (null != contextElementDescriptor) { descriptor.addContextElementDescriptor(contextElementDescriptor); } } } return descriptor; } /** * See extension point : org.eclipse.egf.core.context
* Read a context Element descriptor. * @param configurationElement_p * @return */ private ContextElementDescriptor readContextElementDescriptor(IConfigurationElement contextElementConfigurationElement_p) { ContextElementDescriptor descriptor = new ContextElementDescriptor(this); // Set the id. descriptor.setId(contextElementConfigurationElement_p.getAttribute(ExtensionPointHelper.ATT_ID)); // Set the id of the plug-in that contributes (ie define this context element) this context element configuration element. String pluginId = contextElementConfigurationElement_p.getContributor().getName(); descriptor.setPluginId(pluginId); // Get context key : it is either a string value or a reference to a contract element. // Try contract element reference first. IConfigurationElement[] keyChild = contextElementConfigurationElement_p.getChildren(IFactoryComponentConstants.CONTRACT_REF_CHILD); if (keyChild.length > 0) { // Get contract element reference. String contractReferenceId = keyChild[0].getAttribute(IFactoryComponentConstants.ATT_CONTRACT_ELEMENT_REFERENCE_ID); descriptor.setContractReferenceId(contractReferenceId); } else { // Then try key name. keyChild = contextElementConfigurationElement_p.getChildren(IContextConstants.CONTEXT_ELEMENT_KEY_CHILD); if (keyChild.length > 0) { // Retrieve key name and set it as key for the context element. String key = keyChild[0].getAttribute(ExtensionPointHelper.ATT_NAME); descriptor.setKey(key); } } // Get readable context value. String readableValue = null; IConfigurationElement[] valueChild = contextElementConfigurationElement_p.getChildren(IContextConstants.CONTEXT_ELEMENT_VALUE_CHILD); if (valueChild.length > 0) { readableValue = valueChild[0].getAttribute(IContractConstants.CONTRACT_ELEMENT_CHILD_ATT_VALUE); // Get type. String className = valueChild[0].getAttribute(ExtensionPointHelper.ATT_CLASS); if (null != className) { Object typeHolder = ExtensionPointHelper.createInstance(valueChild[0], ExtensionPointHelper.ATT_CLASS); if (null != typeHolder) { Type type = ModelFactory.eINSTANCE.createType(); type.setTypeHolder(typeHolder); type.setTypeHolderClassName(typeHolder.getClass().getName()); descriptor.setType(type); } } } // Set readable value descriptor.setReadableValue(readableValue); return descriptor; } /** * See extension point : org.eclipse.egf.core.taskFactory * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readTaskFactory(java.lang.String, java.lang.String) */ public TaskFactoryDescriptor readTaskFactory(String taskFactoryId_p, String fcId_p) { TaskFactoryDescriptor descriptor = null; ITaskFactory taskFactory = (ITaskFactory) ExtensionPointHelper.createExecutableExtension(PLUGIN_ID, ITaskFactoryConstants.TASK_FACTORY_EXTENSION_POINT_ID, taskFactoryId_p); if (null != taskFactory) { descriptor = new TaskFactoryDescriptor(this); // Set task factory id. descriptor.setId(taskFactoryId_p); // Set task factory implementation. descriptor.setTaskFactory(taskFactory); // Set task factory class name. descriptor.setTaskFactoryClass(taskFactory.getClass().getName()); } return descriptor; } /** * See extension point : org.eclipse.egf.core.contractReferences * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readContractElementReference(java.lang.String, java.lang.String) */ @SuppressWarnings("deprecation") public ContractElementReferenceDescriptor readContractElementReference(String contractReferenceId_p, String fcId_p) { ContractElementReferenceDescriptor descriptor = null; IConfigurationElement contractReference = ExtensionPointHelper.getConfigurationElement(PLUGIN_ID, IContractReferenceConstants.CONTRACT_REFERENCE_EXTENSION_POINT_ID, contractReferenceId_p); if (null != contractReference) { descriptor = new ContractElementReferenceDescriptor(this); descriptor.setId(contractReferenceId_p); // Get the contract element id. String contractElementId = contractReference.getAttribute(IContractReferenceConstants.CONTRACT_REFERENCE_ATT_REFERENCED_CONTRACT_ELEMENT_ID); if (null != contractElementId) { descriptor.setContractElementId(contractElementId); } else { // @deprecated way to get the referenced contract element. // Read the contract element name to ensure compatibility with existing factory components. String contractElementName = contractReference.getAttribute(IContractReferenceConstants.CONTRACT_REFERENCE_ATT_REFERENCED_CONTRACT_ELEMENT_NAME); // Set the contract element name. descriptor.setContractElementName(contractElementName); } // Set the reference factory component id String referencedFcId = contractReference.getAttribute(IContractReferenceConstants.CONTRACT_REFERENCE_ATT_REFERENCED_FACTORY_COMPONENT_ID); descriptor.setReferencedFcId(referencedFcId); } return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readPatternLibraries(java.lang.String) */ public IDescriptor readPatternLibraries(String fcId_p) { // Do nothing. return null; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readMappings(java.lang.String) */ public IDescriptor readMappings(String fcId_p) { MappingDescriptor result = new MappingDescriptor(); // Precondition. if (null == fcId_p) { return result; } // Get the core activator instance. CoreActivator coreActivator = CoreActivator.getDefault(); // Get the hosting plug-in id. String pluginId = coreActivator.getPluginIdForFactoryComponent(fcId_p); IConfigurationElement[] mappingConfigurationElements = ExtensionPointHelper .getConfigurationElements(PLUGIN_ID, IMappingConstants.MAPPING_EXTENSION_POINT_ID, pluginId); // Loop over every configuration element related to a mapping. for (IConfigurationElement mappingElement : mappingConfigurationElements) { MappingDescriptor currentMappingDescriptor = new MappingDescriptor(); // Set the id. currentMappingDescriptor.setValue(ExtensionPointHelper.ATT_ID, ExtensionPointHelper.getId(mappingElement)); // Set the name. currentMappingDescriptor.setValue(ExtensionPointHelper.ATT_NAME, mappingElement.getAttribute(ExtensionPointHelper.ATT_NAME)); // Set the path. currentMappingDescriptor.setValue(IMappingConstants.MAPPING_ATT_PATH, mappingElement.getAttribute(IMappingConstants.MAPPING_ATT_PATH)); // Set the source. currentMappingDescriptor.setValue(IMappingConstants.MAPPING_ATT_SOURCE, mappingElement.getAttribute(IMappingConstants.MAPPING_ATT_SOURCE)); // Set the target. currentMappingDescriptor.setValue(IMappingConstants.MAPPING_ATT_TARGET, mappingElement.getAttribute(IMappingConstants.MAPPING_ATT_TARGET)); // Add the created descriptor as a child of the result. result.addChild(currentMappingDescriptor); } return result; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/internal/reader/FactoryComponentReaderChain.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11945 Text-content-md5: 4ee0868dfa626c8833c557332b893db0 Text-content-sha1: 7973868bca32a294cd2ef8a7ce0b99a1ac8275e2 Content-length: 11990 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.internal.reader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.egf.common.descriptor.IDescriptor; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.reader.descriptor.AbstractDescriptor; import org.eclipse.egf.core.reader.descriptor.FactoryComponentInvocationDescriptor; import org.eclipse.egf.core.reader.descriptor.ContextDescriptor; import org.eclipse.egf.core.reader.descriptor.ContractDescriptor; import org.eclipse.egf.core.reader.descriptor.ContractElementReferenceDescriptor; import org.eclipse.egf.core.reader.descriptor.ProductionPlanDescriptor; import org.eclipse.egf.core.reader.descriptor.TaskFactoryDescriptor; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.IProductionPlanDescriptor; import org.eclipse.egf.model.data.reader.descriptor.ITypedDescriptor; import org.eclipse.egf.model.internal.data.ModelElement; /** * Factory Component reader chain entry point.
* For every service, the factory component reader chain delegates the called service to registered {@link IFactoryComponentReader} instances until one of them * succeeds in instantiating a result. * @author fournier */ public class FactoryComponentReaderChain implements IFactoryComponentReader { /** * Extension-point id to contribute other reader. */ private static final String FACTORY_COMPONENT_READER_EXTENSION_POINT_ID = "factoryComponentReader"; //$NON-NLS-1$ private static FactoryComponentReaderChain __instance; private List _factoryComponentReaders; /** * Private constructor for singleton pattern. */ private FactoryComponentReaderChain() { _factoryComponentReaders = new ArrayList(1); // Add default reader _factoryComponentReaders.add(new DefaultFactoryComponentReader()); // Load other readers provided by contribution. IConfigurationElement[] configurationElementReaders = ExtensionPointHelper.getConfigurationElements(CoreActivator.getDefault().getPluginID(), FACTORY_COMPONENT_READER_EXTENSION_POINT_ID); for (IConfigurationElement configurationElement : configurationElementReaders) { IFactoryComponentReader reader = (IFactoryComponentReader) ExtensionPointHelper.createInstance(configurationElement, ExtensionPointHelper.ATT_CLASS); _factoryComponentReaders.add(reader); } } /** * Get the singleton instance. * @return */ public static IFactoryComponentReader getInstance() { if (null == __instance) { __instance = new FactoryComponentReaderChain(); } return __instance; } /** * Get the factory component reader for given factory component id. * @param factoryComponentId_p * @return an {@link IFactoryComponentReader} instance or null if not found. */ private IFactoryComponentReader getFactoryComponentReader(String factoryComponentId_p) { IFactoryComponentReader retrievedReader = null; FactoryComponent fc = CoreActivator.getDefault().getFactoryComponent(factoryComponentId_p); if (null != fc) { retrievedReader = ((ModelElement) fc).getFactoryComponentReader(); } return retrievedReader; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readFactoryComponent(java.lang.String) */ public IFactoryComponentDescriptor readFactoryComponent(String fcId_p) { IFactoryComponentDescriptor descriptor = null; // Iterate over all registered factory component readers. Iterator readers = _factoryComponentReaders.iterator(); // Stop iterating as soon as a descriptor is instantiated. while (readers.hasNext() && (null == descriptor)) { IFactoryComponentReader reader = readers.next(); descriptor = reader.readFactoryComponent(fcId_p); } return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readProductionPlan(java.lang.String, java.lang.String) */ public IProductionPlanDescriptor readProductionPlan(final String productionPlanId_p, final String fcId_p) { IProductionPlanDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public ITypedDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readProductionPlan(productionPlanId_p, fcId_p); } }; // Do proceed. descriptor = (ProductionPlanDescriptor) doRead(fcId_p, command, true); return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readFactoryComponentInvocation(java.lang.String, java.lang.String) */ public FactoryComponentInvocationDescriptor readFactoryComponentInvocation(final String factoryComponentInvocationId_p, final String fcId_p) { FactoryComponentInvocationDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public ITypedDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readFactoryComponentInvocation(factoryComponentInvocationId_p, fcId_p); } }; // Do proceed. descriptor = (FactoryComponentInvocationDescriptor) doRead(fcId_p, command, true); return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readContract(java.lang.String, java.lang.String) */ public ContractDescriptor readContract(final String contractId_p, final String fcId_p) { ContractDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public ITypedDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readContract(contractId_p, fcId_p); } }; // Do proceed. descriptor = (ContractDescriptor) doRead(fcId_p, command, true); return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readContext(java.lang.String, java.lang.String) */ public ContextDescriptor readContext(final String contextId_p, final String fcId_p) { ContextDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public ITypedDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readContext(contextId_p, fcId_p); } }; // Do proceed. descriptor = (ContextDescriptor) doRead(fcId_p, command, true); return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readTaskFactory(java.lang.String, java.lang.String) */ public TaskFactoryDescriptor readTaskFactory(final String taskFactoryId_p, final String fcId_p) { TaskFactoryDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public ITypedDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readTaskFactory(taskFactoryId_p, fcId_p); } }; // Do proceed. descriptor = (TaskFactoryDescriptor) doRead(fcId_p, command, true); return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readContractElementReference(java.lang.String, java.lang.String) */ public ContractElementReferenceDescriptor readContractElementReference(final String contractReferenceId_p, final String fcId_p) { ContractElementReferenceDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public ITypedDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readContractElementReference(contractReferenceId_p, fcId_p); } }; // Do proceed. descriptor = (ContractElementReferenceDescriptor) doRead(fcId_p, command, true); return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readPatternLibraries(java.lang.String) */ public IDescriptor readPatternLibraries(final String fcId_p) { IDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public IDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readPatternLibraries(fcId_p); } }; // Do proceed. descriptor = doRead(fcId_p, command, false); return descriptor; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader#readMappings(java.lang.String) */ public IDescriptor readMappings(final String fcId_p) { IDescriptor descriptor = null; AbstractReadingCommand command = new AbstractReadingCommand() { @Override public IDescriptor execute(IFactoryComponentReader reader_p) { return reader_p.readMappings(fcId_p); } }; // Do proceed. descriptor = doRead(fcId_p, command, true); return descriptor; } /** * Execute the reading command provided as parameter. * @param fcId_p * @param command_p * @param usefactoryComponentReader_p true means re-use the factory component reader of the factory component related to given factory component id.
* Re-using the factory component reader improves the performances but caller must be sure the reader that is able to process the command is the same as the one * used to read the factory component. * @return */ private IDescriptor doRead(String fcId_p, AbstractReadingCommand command_p, boolean usefactoryComponentReader_p) { IDescriptor descriptor = null; // Retrieve the factory component reader if defined (it should). IFactoryComponentReader retrievedfactoryComponentReader = (usefactoryComponentReader_p) ? getFactoryComponentReader(fcId_p) : null; if (null != retrievedfactoryComponentReader) { descriptor = command_p.execute(retrievedfactoryComponentReader); } else { // Iterate over all registered factory component readers. Iterator readers = _factoryComponentReaders.iterator(); // Stop iterating as soon as a descriptor is instantiated. while (readers.hasNext() && (null == descriptor)) { IFactoryComponentReader reader = readers.next(); descriptor = command_p.execute(reader); } } return descriptor; } /** * Base class to implement reading commands * @author fournier */ abstract class AbstractReadingCommand { /** * Execute a reading command with given reader. * @param reader_p * @return an {@link AbstractDescriptor} instance or null. */ public abstract IDescriptor execute(IFactoryComponentReader reader_p); } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/log4j Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/log4j/ILog4jConfigurer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 938 Text-content-md5: a5635aea1cdf1b5893613e31b957e26b Text-content-sha1: 28a55c567e56d1754e4480b98189ac2106952b15 Content-length: 983 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.log4j; import java.util.Properties; /** * Allow to add or modify log4j configuration. * @author Guillaume Brocard */ public interface ILog4jConfigurer { /** * Handle Log4J configuration. * @param log4jConfiguration_p * @return */ public void handleConfiguration(Properties log4jConfiguration_p); } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/natures Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/natures/FactoryComponentNatures.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1303 Text-content-md5: 19f6658319ae9887c7a7253a51bd5c78 Text-content-sha1: ab229beb56dffa308bddaa4d69331914109ea97e Content-length: 1348 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.core.natures; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.egf.core.CoreActivator; public class FactoryComponentNatures { public static final String FACTORY_COMPONENT_NATURE = "org.eclipse.egf.core.FactoryComponentNature"; //$NON-NLS-1$ public static final String PATTERN_BUILDER_ID = "org.eclipse.egf.pattern.PatternBuilder"; //$NON-NLS-1$ public static final String PATTERN_TEMPLATE_BUILDER_ID = "org.eclipse.egf.pattern.PatternTemplateBuilder"; //$NON-NLS-1$ public static boolean hasFactoryComponentNature(IProject project) { try { return project.hasNature(FACTORY_COMPONENT_NATURE); } catch (CoreException e) { CoreActivator.getDefault().log(e); return false; } } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/AbstractDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2718 Text-content-md5: c173c2f59467a9a4609effab3ea69dc3 Text-content-sha1: d1876f3099194c398120a6324828f277c0cc2a0a Content-length: 2763 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import org.eclipse.egf.common.descriptor.GenericDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.ITypedDescriptor; /** * Base class to describe the content of a EGF model element read from {@link IFactoryComponentReader} instance. * @author fournier */ public abstract class AbstractDescriptor extends GenericDescriptor implements ITypedDescriptor { /** * Reference to the factory component reader that creates this descriptor. */ private IFactoryComponentReader _factoryComponentReader; /** * Reference to the id. */ private String _id; private String _description; /** * Default constructor. */ protected AbstractDescriptor() { this(null); } /** * Constructor. * @param reader_p */ protected AbstractDescriptor(IFactoryComponentReader reader_p) { _factoryComponentReader = reader_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.ITypedDescriptor#getFactoryComponentReader() */ public IFactoryComponentReader getFactoryComponentReader() { return _factoryComponentReader; } /** * Set given factory component reader as the one that creates this descriptor. * @param factoryComponentReader_p */ public void setFactoryComponentReader(IFactoryComponentReader factoryComponentReader_p) { _factoryComponentReader = factoryComponentReader_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.ITypedDescriptor#getId() */ public String getId() { return _id; } /** * Set the identifier. * @param id_p */ public void setId(String id_p) { _id = id_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.ITypedDescriptor#getDescription() */ public String getDescription() { return _description; } /** * Set the description. * @param description_p */ public void setDescription(String description_p) { _description = description_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/ContextDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2016 Text-content-md5: b58b24ab14436aa279828049be1c828a Text-content-sha1: 9a7ef69f4963d58f2fbf9bca96c0f2f2a85fa9f4 Content-length: 2061 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import java.util.ArrayList; import java.util.List; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.IContextDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IContextElementDescriptor; /** * Describe the content of a context read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class ContextDescriptor extends AbstractDescriptor implements IContextDescriptor { private List _contextElementDescriptors; /** * Constructor. */ public ContextDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public ContextDescriptor(IFactoryComponentReader reader_p) { super(reader_p); _contextElementDescriptors = new ArrayList(0); } /** * Add given context element descriptor. * @param contextElementDescriptor_p */ public void addContextElementDescriptor(IContextElementDescriptor contextElementDescriptor_p) { _contextElementDescriptors.add(contextElementDescriptor_p); } /** * Get the context element descriptor list. * @return the contextElementDescriptors */ public List getContextElementDescriptors() { return _contextElementDescriptors; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/ContextElementDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3056 Text-content-md5: 234c79aeb4c438d88badc05c8fb76f09 Text-content-sha1: d2ca391c45e8cb41fc0c7b65e457c4157ac53a2c Content-length: 3101 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import org.eclipse.egf.model.Type; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.IContextElementDescriptor; /** * Describe the content of a context element read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class ContextElementDescriptor extends AbstractDescriptor implements IContextElementDescriptor { private String _contractReferenceId; private String _key; private String _readableValue; private Type _type; private String _pluginId; /** * Constructor. */ public ContextElementDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public ContextElementDescriptor(IFactoryComponentReader reader_p) { super(reader_p); } /** * Get the contract reference id. * @return can be null. */ public String getContractReferenceId() { return _contractReferenceId; } /** * Set given contract reference id. * @param contractReferenceId_p */ public void setContractReferenceId(String contractReferenceId_p) { _contractReferenceId = contractReferenceId_p; } /** * Get the key * @return can be null. */ public String getKey() { return _key; } /** * Set given key. * @param key_p */ public void setKey(String key_p) { _key = key_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IContextElementDescriptor#getReadableValue() */ public String getReadableValue() { return _readableValue; } /** * Set given readable value. * @param readableValue_p */ public void setReadableValue(String readableValue_p) { _readableValue = readableValue_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IContextElementDescriptor#getType() */ public Type getType() { return _type; } /** * Set direct type. * @param */ public void setType(Type type_p) { _type = type_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IContextElementDescriptor#getPluginId() */ public String getPluginId() { return _pluginId; } /** * Set the plug-in id. * @param pluginId_p the pluginId to set */ public void setPluginId(String pluginId_p) { _pluginId = pluginId_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/ContractDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2035 Text-content-md5: c0be5d7a9e02be72aaadd22199827513 Text-content-sha1: fabbdb34c01094d0b78ff1ef7b8e91ec0ae8d462 Content-length: 2080 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import java.util.ArrayList; import java.util.List; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.IContractDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IContractElementDescriptor; /** * Describe the content of a contract read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class ContractDescriptor extends AbstractDescriptor implements IContractDescriptor { private List _contractElementDescriptors; /** * Constructor. */ public ContractDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public ContractDescriptor(IFactoryComponentReader reader_p) { super(reader_p); _contractElementDescriptors = new ArrayList(0); } /** * Get the contract element descriptors. * @return the contractElementDescriptors */ public List getContractElementDescriptors() { return _contractElementDescriptors; } /** * Add given contract element descriptor. * @param contractElementDescriptor_p */ public void addContractElementDescriptor(IContractElementDescriptor contractElementDescriptor_p) { _contractElementDescriptors.add(contractElementDescriptor_p); } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/ContractElementDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3650 Text-content-md5: b967b6b16f6894049603feb1c4cf556e Text-content-sha1: 8562be5e3803022bc2a73335a9ffcc72769131b1 Content-length: 3695 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import java.util.ArrayList; import java.util.List; import org.eclipse.egf.model.contract.type.ITypeHolder; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.IContractElementDescriptor; /** * Describe the content of a contract element read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class ContractElementDescriptor extends AbstractDescriptor implements IContractElementDescriptor { private String _contractElementName; private List _contractReferenceIds; private boolean _isMandatory; /** * Type holder instance. */ private ITypeHolder _typeHolder; /** * Fully qualified type holder class name. */ private String _typeHolderClassName; /** * Constructor. */ public ContractElementDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public ContractElementDescriptor(IFactoryComponentReader reader_p) { super(reader_p); _contractReferenceIds = new ArrayList(0); } /** * Get the contract element name. * @return */ public String getContractElementName() { return _contractElementName; } /** * Set given contract element name. * @param contractElementName_p */ public void setContractElementName(String contractElementName_p) { _contractElementName = contractElementName_p; } /** * Get the type holder. * @return */ public ITypeHolder getTypeHolder() { return _typeHolder; } /** * Set given type holder. * @param typeHolder_p */ public void setTypeHolder(ITypeHolder typeHolder_p) { _typeHolder = typeHolder_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IContractElementDescriptor#getTypeHolderClassName() */ public String getTypeHolderClassName() { return _typeHolderClassName; } /** * Set type holder fully qualified class name. * @param typeHolderClassName_p fully qualified class name. */ public void setTypeHolderClassName(String typeHolderClassName_p) { _typeHolderClassName = typeHolderClassName_p; } /** * Get the contract reference id list. * @return the contractReferenceIds */ public List getContractReferenceIds() { return _contractReferenceIds; } /** * Add given contractReference id. * @param contractReferenceId_p */ public void addContractReferenceId(String contractReferenceId_p) { _contractReferenceIds.add(contractReferenceId_p); } /** * @see org.eclipse.egf.model.data.reader.descriptor.IContractElementDescriptor#isMandatory() */ public boolean isMandatory() { return _isMandatory; } /** * Set the mandatory value. * @param isMandatory_p the mandatory value to set. */ public void setMandatory(boolean isMandatory_p) { _isMandatory = isMandatory_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/ContractElementReferenceDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2551 Text-content-md5: e09dad5f69b0d72874c35f933bec6324 Text-content-sha1: 9f7f911d7e79610b6fb46e289fc11b66246ff1e7 Content-length: 2596 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.IContractElementReferenceDescriptor; /** * Describe the content of a contract element reference read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class ContractElementReferenceDescriptor extends AbstractDescriptor implements IContractElementReferenceDescriptor { private String _contractElementName; private String _contractElementId; private String _referencedFcId; /** * Constructor. */ public ContractElementReferenceDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public ContractElementReferenceDescriptor(IFactoryComponentReader reader_p) { super(reader_p); } /** * Get the contract element id. * @return */ public String getContractElementId() { return _contractElementId; } /** * Get the contract element name. * @deprecated * @return */ public String getContractElementName() { return _contractElementName; } /** * Set given contract element id. * @param contractElementId_p */ public void setContractElementId(String contractElementId_p) { _contractElementId = contractElementId_p; } /** * Set given contract element name. * @deprecated * @param contractElementName_p */ public void setContractElementName(String contractElementName_p) { _contractElementName = contractElementName_p; } /** * Get the referenced factory component id. * @return */ public String getReferencedFcId() { return _referencedFcId; } /** * Set given referenced factory component id. * @param referencedFcId_p */ public void setReferencedFcId(String referencedFcId_p) { _referencedFcId = referencedFcId_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/FactoryComponentDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2779 Text-content-md5: 74c04e34e0ecc49e3f0034dc5745e6e5 Text-content-sha1: 0077e011eeecd807ff4b5dd295be4af9d03edcc8 Content-length: 2824 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; /** * Describe the content of a factory component read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class FactoryComponentDescriptor extends AbstractDescriptor implements IFactoryComponentDescriptor { private String _name; private String _domainPath; private String _contractId; private String _productionPlanId; /** * Constructor. */ public FactoryComponentDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public FactoryComponentDescriptor(IFactoryComponentReader reader_p) { super(reader_p); } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor#getName() */ public String getName() { return _name; } /** * Set factory component name. * @param name_p the name to set */ public void setName(String name_p) { _name = name_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor#getDomainPath() */ public String getDomainPath() { return _domainPath; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor#getContractId() */ public String getContractId() { return _contractId; } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentDescriptor#getProductionPlanId() */ public String getProductionPlanId() { return _productionPlanId; } /** * @param domainPath_p */ public void setDomainPath(String domainPath_p) { _domainPath = domainPath_p; } /** * Set given contract id. * @param contractId_p */ public void setContractId(String contractId_p) { _contractId = contractId_p; } /** * Set given production plan id. * @param productionPlanId_p */ public void setProductionPlanId(String productionPlanId_p) { _productionPlanId = productionPlanId_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/FactoryComponentInvocationDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2857 Text-content-md5: d5fbafb0639d126f616296f1911d6315 Text-content-sha1: 5b5c447cfd00382536ee577f2644c3c776b775ab Content-length: 2902 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentInvocationDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; /** * Describe the content of an factory component invocation read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class FactoryComponentInvocationDescriptor extends AbstractDescriptor implements IFactoryComponentInvocationDescriptor { private String _name; private String _referencedFactoryComponentId; private String _taskFactoryId; private String _contextId; /** * Constructor. */ public FactoryComponentInvocationDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public FactoryComponentInvocationDescriptor(IFactoryComponentReader reader_p) { super(reader_p); } /** * @see org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentInvocationDescriptor#getName() */ public String getName() { return _name; } /** * Get the referenced factory component id. * @return */ public String getReferencedFactoryComponentId() { return _referencedFactoryComponentId; } /** * Get the task factory id. * @return */ public String getTaskFactoryId() { return _taskFactoryId; } /** * Get the context id. * @return the contextId */ public String getContextId() { return _contextId; } /** * Set given factory component invocation name. * @param fcInvocationName_p */ public void setName(String fcInvocationName_p) { _name = fcInvocationName_p; } /** * Set given referenced factory component id. * @param referencedFcId_p */ public void setReferencedFactoryComponentId(String referencedFcId_p) { _referencedFactoryComponentId = referencedFcId_p; } /** * Set given task factory id. * @param taskFactoryId_p */ public void setTaskFactoryId(String taskFactoryId_p) { _taskFactoryId = taskFactoryId_p; } /** * Set given context id. * @param contextId_p */ public void setContextId(String contextId_p) { _contextId = contextId_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/MappingDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1400 Text-content-md5: c510051282976713662a46c4590c6302 Text-content-sha1: 4ff243602aa1642b7053a4b612c68f84473a5a1b Content-length: 1445 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import org.eclipse.egf.common.descriptor.GenericDescriptor; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; /** * Describe the content of a mapping read from an {@link IFactoryComponentReader} instance.
* Finally, we only use the generic API but for an inheritance issue we can't directly use a {@link GenericDescriptor}.
* We have to use something that inherits from {@link AbstractDescriptor}. * @author Guillaume Brocard */ public class MappingDescriptor extends AbstractDescriptor { /** * Constructor. */ public MappingDescriptor() { super(); } /** * Constructor. * @param reader_p */ public MappingDescriptor(IFactoryComponentReader reader_p) { super(reader_p); } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/ProductionPlanDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2198 Text-content-md5: b9e6d800d9e60360334851215a22b717 Text-content-sha1: 58f2a4cf1f96d3950fe957b622f7153956abee94 Content-length: 2243 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import java.util.ArrayList; import java.util.List; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.IProductionPlanDescriptor; /** * Describe the content of a production plan read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class ProductionPlanDescriptor extends AbstractDescriptor implements IProductionPlanDescriptor { private List _fcInvocationIds; private String _contextId; /** * Constructor. */ public ProductionPlanDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public ProductionPlanDescriptor(IFactoryComponentReader reader_p) { super(reader_p); _fcInvocationIds = new ArrayList(0); } /** * Add given factory component invocation id. * @param fcInvocationId_p */ public void addFactoryComponentInvocationId(String fcInvocationId_p) { _fcInvocationIds.add(fcInvocationId_p); } /** * Get factory component invocation id list. * @return the factoryComponentInvocationIds */ public List getFactoryComponentInvocationIds() { return _fcInvocationIds; } /** * Get the context id. * @return the contextId */ public String getContextId() { return _contextId; } /** * Set the specified context id. * @param contextId_p the contextId to set */ public void setContextId(String contextId_p) { _contextId = contextId_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/reader/descriptor/TaskFactoryDescriptor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2336 Text-content-md5: cee6c729e0c1ff64eba83ca4410d2501 Text-content-sha1: 3b2c58aedc1784bb82a6573cc489da0774709fca Content-length: 2381 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.reader.descriptor; import org.eclipse.egf.core.task.ITaskFactory; import org.eclipse.egf.model.data.reader.descriptor.IFactoryComponentReader; import org.eclipse.egf.model.data.reader.descriptor.ITaskFactoryDescriptor; /** * Describe the content of a task factory read from an {@link IFactoryComponentReader} instance. * @author fournier */ public class TaskFactoryDescriptor extends AbstractDescriptor implements ITaskFactoryDescriptor { /** * Task factory instance. */ private ITaskFactory _taskFactory; /** * Fully qualified concrete task factory class name. Must be the same that the one contained in ITaskFactory instance. */ private String _taskFactoryClass; /** * Constructor. */ public TaskFactoryDescriptor() { this(null); } /** * Constructor. * @param reader_p */ public TaskFactoryDescriptor(IFactoryComponentReader reader_p) { super(reader_p); } /** * @see org.eclipse.egf.model.data.reader.descriptor.ITaskFactoryDescriptor#getTaskFactory() */ public ITaskFactory getTaskFactory() { return _taskFactory; } /** * Set given task factory. * @param taskFactory_p */ public void setTaskFactory(ITaskFactory taskFactory_p) { _taskFactory = taskFactory_p; } /** * @see org.eclipse.egf.model.data.reader.descriptor.ITaskFactoryDescriptor#getTaskFactoryClass() */ public String getTaskFactoryClass() { return _taskFactoryClass; } /** * Set given class name. * @param taskFactoryClass_p fully qualified class name. */ public void setTaskFactoryClass(String taskFactoryClass_p) { _taskFactoryClass = taskFactoryClass_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/task/AbstractTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3902 Text-content-md5: ff9ff86b7baeeb5c2825cfa6d6733b2d Text-content-sha1: 68e2d045bcbd539ecbcdeee5d6c1f8af6d5d73b7 Content-length: 3947 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.task; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.egf.common.progress.ProgressReporter; import org.eclipse.egf.core.context.ProductionContext; /** * Base class to implement a task. * @author fournier */ public abstract class AbstractTask { /** * Provides data in task execution. */ private ProductionContext _productionContext; /** * Id of the factory component that declares the task (through a task factory). */ private String _fcId; /** * Total amount of available ticks. */ private int _ticksCount; /** * Execute this task. * @param progressMonitor_p * a new progress monitor usable for the execution of the task. By default, it is allocated {@link ProgressReporter#TASK_DEFAULT_TICKS_COUNT} ticks * (which in the end should be more than sufficient). * @return true if the execution was successful, false otherwise. */ public final boolean execute(IProgressMonitor progressMonitor_p, int ticksCount_p) { boolean result = false; // Usual progress monitor use pattern. try { // Begin unique task. progressMonitor_p.beginTask(getReportingMessage(), ticksCount_p); _ticksCount = ticksCount_p; result = doExecute(progressMonitor_p); } finally { // Complete monitor. progressMonitor_p.done(); } return result; } /** * Do execute this task. * @param progressMonitor_p * A progress monitor with {@link ProgressReporter#TASK_DEFAULT_TICKS_COUNT} ticks available.
* Important note : {@link IProgressMonitor#beginTask(String, int)} must never be called on given progress monitor.
* Instead call {@link IProgressMonitor#worked(int)} or (exclusive) create a new {@link SubProgressMonitor}.
* Likewise, a call to {@link IProgressMonitor#done()} is forbidden too. * @return true if the execution was successful, false otherwise. */ protected abstract boolean doExecute(final IProgressMonitor progressMonitor_p); /** * Get reporting message for this task.
* By default, return the factory component id containing this task. * @return */ protected String getReportingMessage() { return _fcId; } /** * Set a new context to this task. * @param productionContext_p */ public void setProductionContext(ProductionContext productionContext_p) { _productionContext = productionContext_p; } /** * Get the context bound to this task. * @return the context */ protected ProductionContext getProductionContext() { return _productionContext; } /** * Get the value of contract element for given name. * @param contractElementName_p * @return an Object or null if not found. */ protected Object getContextElementValue(String contractElementName_p) { ProductionContext context = getProductionContext(); return context.getContextElementValue(contractElementName_p, _fcId); } /** * Set containing factory component id. * @param fcId_p */ public void setFactoryComponentId(String fcId_p) { _fcId = fcId_p; } /** * Get available ticks count. * @return */ protected int getTicksCount() { return _ticksCount; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/task/CompoundTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2718 Text-content-md5: 88042a3f43e17da249d48a932ede8ab0 Text-content-sha1: 2d0977f6810d081d5aff47c441adf0d3093753b9 Content-length: 2763 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.task; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.egf.common.progress.ProgressReporter; /** * A compound task contains other {@link AbstractTask} objects. * @author fournier */ public class CompoundTask extends AbstractTask { /** * Contained tasks. */ private List _tasks; /** * Should the task execution stop on error ? */ private boolean _failOnError; /** * Create a compound task. Default behavior is to stop execution on failure. */ public CompoundTask() { super(); _failOnError = true; } /** * Add a new task. * @param task_p */ public void addTask(AbstractTask task_p) { if (null == _tasks) { _tasks = new ArrayList(0); } _tasks.add(task_p); } /** * Remove a task. * @param task_p */ public void removeTask(AbstractTask task_p) { if (null != _tasks) { _tasks.remove(task_p); } } /** * @see org.eclipse.egf.core.task.AbstractTask#doExecute(org.eclipse.core.runtime.IProgressMonitor) */ @Override protected boolean doExecute(IProgressMonitor progressMonitor_p) { boolean result = true; boolean stop = false; if ((null != _tasks) && !_tasks.isEmpty()) { Iterator iterator = _tasks.iterator(); int ticksCount = ProgressReporter.TASK_DEFAULT_TICKS_COUNT / _tasks.size(); while (iterator.hasNext() && !stop) { AbstractTask task = iterator.next(); result &= task.execute(new SubProgressMonitor(progressMonitor_p, ticksCount), ticksCount); if (!result && _failOnError) { stop = true; } } } return result; } /** * Set or unset the fail on error flag. * @param failOnError_p * the failOnError to set */ public void setFailOnError(boolean failOnError_p) { _failOnError = failOnError_p; } } Node-path: plugins/org.eclipse.egf.core/src/org/eclipse/egf/core/task/ITaskFactory.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 898 Text-content-md5: 5c4d3d03bf9271f0d02acd27712e07de Text-content-sha1: b21c45a128da6899c7fa866bf5b8f149fd1e3615 Content-length: 943 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.task; /** * A task factory provides a method to create a task. * @author fournier */ public interface ITaskFactory { /** * Create a task that performs a concrete processing. * @return a not null {@link AbstractTask} instance. */ public AbstractTask createTask(); } Node-path: plugins/org.eclipse.egf.core.fc/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 332 Text-content-md5: 9b4d9e952d6b00b29268b5bfa9be281f Text-content-sha1: 05c7b36fbab4ca0d1ab135dea6de98a858e98957 Content-length: 377 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 684 Text-content-md5: a817bd9ffeeba5da5d0ff5be97f22167 Text-content-sha1: e943138c5ee938cb8e862e38dd0a0b2ee95ebbcc Content-length: 729 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.core.fc org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.core.fc/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: f05521b2d0a076bfc192b681730c79b8 Text-content-sha1: 80495ceb76b6ac5e5449c2061c90e19639942471 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Thu Feb 26 10:50:49 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.core.fc/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 283 Text-content-md5: 4d168c2a92ea1343e13d5057d071e6d7 Text-content-sha1: df83bf86bef9d12dacbecf2ba22bd85858e33e6d Content-length: 328 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.core.fc Bundle-Version: 0.1.0.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.core.fc/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core.fc/about.ini Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 598 Text-content-md5: 867b1d7281fe7447bcf603ff112260ca Text-content-sha1: 3c662ecd1ff55393ab54aec9569cb26a327b27c0 Content-length: 643 K 13 svn:mime-type V 10 text/plain PROPS-END # about.ini # contains information about a feature # java.util.Properties file (ISO-8859-1 with "\" escapes) # "%key" are externalized strings defined in about.properties # This file does not need to be translated. # Property "aboutText" contains blurb for "About" dialog (translated) aboutText=%featureText # Property "featureImage" contains path to feature image (32x32) featureImage=fc32.gif # Property "appName" contains name of the application (translated) appName=%featureName # Property "welcomePage" contains path to welcome page (special XML-based format) welcomePage=$nl$/welcome.xml Node-path: plugins/org.eclipse.egf.core.fc/about.mappings Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 173 Text-content-md5: 16638c899b66a2fb62dd78d9fbf452ca Text-content-sha1: 5df1b4751123b65b8bea3b4bec0043c9333f9e86 Content-length: 183 PROPS-END # about.mappings # contains fill-ins for about.properties # java.util.Properties file (ISO-8859-1 with "\" escapes) # This file does not need to be translated. 0=@buildId@ Node-path: plugins/org.eclipse.egf.core.fc/about.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1638 Text-content-md5: 9c29a2d2d873cb2cc4388a2044a3b868 Text-content-sha1: 3b1e955455c97cbb0433bc4de0a5ff7b20491fdf Content-length: 1683 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # about.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # NLS_MESSAGEFORMAT_VAR # ============================================================================== # Do not change the properties between this line and the last line containing: # %%% END OF TRANSLATED PROPERTIES %%% # Instead, either redefine an existing property, or create a new property, # append it to the end of the file, and change the code to use the new name. # ============================================================================== featureName=Eclipse Generation Factories (EGF) Core Factory Components (Incubation) featureText=Eclipse Generation Factories (EGF) Core Factory Components \n\ \n\ Version: {featureVersion}\n\ Build id: {0}\n\ \n\ (c) Copyright Eclipse contributors and others. 2009. All rights reserved.\n\ \n\ Visit http://www.eclipse.org/egf # ============================================================================== # %%% END OF TRANSLATED PROPERTIES %%% # The above properties have been shipped for translation. # ============================================================================== Node-path: plugins/org.eclipse.egf.core.fc/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/bin/org/eclipse/egf/core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/bin/org/eclipse/egf/core/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc/bin/org/eclipse/egf/core/fc/Activator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 898 Text-content-md5: 8f8cf3088f32ffe6d88ee668da873cbe Text-content-sha1: 93810641fd07abbe07c94da8a8eb542a0dfb7217 Content-length: 957 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&!org/eclipse/egf/core/fc/Activator&org/eclipse/ui/plugin/AbstractUIPlugin PLUGIN_IDLjava/lang/String; ConstantValue org.eclipse.egf.core.fcplugin#Lorg/eclipse/egf/core/fc/Activator;()VCode  LineNumberTableLocalVariableTablethisstart%(Lorg/osgi/framework/BundleContext;)V Exceptionsjava/lang/Exception    context"Lorg/osgi/framework/BundleContext;stop !  getDefault%()Lorg/eclipse/egf/core/fc/Activator; SourceFileActivator.java!  3*   F *+*   F *+ %& '   "#$/$% Node-path: plugins/org.eclipse.egf.core.fc/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 642 Text-content-md5: e46316c2df79e43e735e2058cc15163c Text-content-sha1: 5cefd811627261ea05487af4e618e530b7d33b2e Content-length: 687 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.properties,\ about.html,\ about.ini,\ about.mappings,\ about.properties,\ fc32.gif Node-path: plugins/org.eclipse.egf.core.fc/fc32.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 749 Text-content-md5: d66169817d679160604fff1d134af4de Text-content-sha1: 9f4f742c9c6d5ed7b91bca7c620a085bef644be2 Content-length: 808 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a [@AABCCEEMPRTWo`R["rcU]#^%tfYjjj`(wi[b*mmmxk]c+nnnf4h7rrrl;lA>:.69Ȇ̈́ϰхӻՃ׫ق۱33&!3@F (VX XHJڜLD tD)(SNے&l٢3Ҥ&Z.+DLdIGPD FG&An TQ !)Ua (ǐP˘3'ϠCF@ӨS^=@hׯ; Node-path: plugins/org.eclipse.egf.core.fc/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 519 Text-content-md5: dc36c20f84b3c36c965948110b903616 Text-content-sha1: d40301bdc696d59784e66a35c20446967b373abc Content-length: 564 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName = Eclipse Generation Factories Factory Components Core (Incubation) providerName = Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.core.fc.feature/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 403 Text-content-md5: 11ce9ff9db29aa477b013f9961a702d6 Text-content-sha1: 086183e795c889085ec1d1d98f85ecd73671264f Content-length: 448 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.core.fc.feature org.eclipse.pde.FeatureBuilder org.eclipse.pde.FeatureNature Node-path: plugins/org.eclipse.egf.core.fc.feature/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc.feature/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 719 Text-content-md5: 9b667c846fbc505311c1693638bf392b Text-content-sha1: c69d7a71fe2affe37dca687fba4d0e46951fc7a6 Content-length: 764 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## generate.feature@org.eclipse.egf.core.fc.source=org.eclipse.egf.core.fc bin.includes = feature.xml,\ features.properties,\ epl-v10.html,\ license.html,\ eclipse_update_120.jpg root=file:rootfiles/epl-v10.html,file:rootfiles/notice.html Node-path: plugins/org.eclipse.egf.core.fc.feature/eclipse_update_120.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 21695 Text-content-md5: 94342845ae786e586e4f8552cf91c7f8 Text-content-sha1: c6cb40a8c82cfdae40b105d065274343bf6f78e0 Content-length: 21754 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2005:06:17 09:55:47xx&(.kHHJFIFHH Adobe_CMAdobed            xx"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I!")Jh*AZRRʉi *d!I$JRI$I$$I)I!"U6PKtwpWOdؕpCfS%*^; vxmgEml>Klz DFWioZMԒqv 5'.'I4򠅖6yU?I| 2(e>s<;B]NI潡2:rI$S8m>#&fXC Lqi@#vJ:+P%q>[hk?IŽqoMWZ\Q7"ʡuQS6㪵}*R AIJK) qOw௬PF(K^HuJI)LJ_-ExKF)&ۺ^"ւ8gou@g>i?><#ɾE*12˿yڕ2R.P%Klz DFWioZMԒqv 5'.'I4򠅖6yU?I| 2(e>s<;B]NI潡2:rI$S8m>#&fXC Lqi@#vJ:+P%q>[hk?IŽqoMWZ\Q7"ʡuQS6㪵}*R AIJK) qOw௬PF(K^HuJI)LJ_-ExKF)&ۺ^"ւ8gou@g>i?><#ɾE*12˿yڕ2R.P% 1 120 120 1 72/1 72/1 2 2005-06-17T09:55:47-05:00 2005-06-17T09:55:47-05:00 2005-06-17T09:55:47-05:00 Adobe Photoshop CS Windows adobe:docid:photoshop:5dd9930e-df37-11d9-b295-daca1d068cfc image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@xx     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?aɰ?A{ߺ\ ?݂1*h=onS>T.T.U׺u{{^׺u{{^Щ$̓ P]Y*ǾP6Uzz /YZVAZ U>})kbG8"F*UksnG!@^H]:QpߏX?.ecqæ|#E5rK{'I$:Lu߿u{{^׺u{{^ѩ_>c54S9WCˋ?*FVnаT ]G"Z9t?4`$%t,ުU_k ު.L=*;W#M{a7'Wҝܵ䊓]V 5MH{\fxMpFaoWgulJ},~UM H! f;8T=E>^?sVnp@I7]UqmIB~tI.Jg4`OdtKwoPWR<W3]?jgtqzS%\ OTrWcſ&KG'(?Imp<^ Q{ID#\@GOcЕtjֹ @,"WzV!]Y.-æTWЋ:ߺ^׽uҩ9.x#q ipeܑã(F0--e,ORGR>}* "8GSc8֨zuy,POu[tr^iX\-LcT!*2S@t.H}}2l?o_oUb#+T Jt 8AG$dϯGW[*6 j7ΩqgfydbڞF.ͽybO7;<#cĜTiE?PO5{OD+M_s(#?m=XX]CS G)7އt>#nyi2.Ot!5JX?EI>2[wC^c7:0bJ~߷|nJ/CMT%U\bH'P*AV +qȓ"UCFQSzuӬ{[)œQ`uM8*=%P֨='xm N")O}C"@?^TQJFú n udtȺO_Judž\icل Iꥦt~yPOG{n%kЖjtHqP?y~gV~ݨvV*9d @T D$ymWKvԀ:I1ts4T qVTVn)9?{Qj::έ $QuInW3_7?텽@\Sg_O?8HIo?Ӑ OX'=)AQLp~!JCOTvbc&?2;z(X莱nlM_H )!g˯^Y~|ǘ7=rA{ԩFPASBYU8څZiݔ^dtomw,D!-&7) x[']R4i%752{y6%Gˡ/bd c$Zr6T^HּBB,HA#H>;܅z1kyny3| 3$j4+ݚ]DRykܛ9؊Y@~9-S}E[xFw9kNJ'ra%r9c o8$噹7>}['y@(V?ɷoi}D ?S??J"ңb[Ey`_ i_5gU@N>9P#\,Κ }gոmtH5-@ p?>?ν-Aթo}1R58oCNG[7UNZ*ҶU_On 0ǯSO6Zw ¹iBct!B'JZN8ApƴJ@DJq?Ýd[[Zjc?DbgpouqZBq8v#+9$CG~?n]6b};sX6{ǤRē7˴ZaI ޑ9bo<~ğv$^OϬ6-{DƤҴC[EFckSӀpbumo }K",iSJWђ (l 8RS֪44.>y;c FtE-D/N۟t=z ֬ ÌU*l\M>cDq=76o׵Ay@=x.o4 ^;XYVcƻ+S%2- $de<tjSPr ҟχEV] ִC"3"TA_{-ܟ '=ά2mo]-k_֔QOu upkt=QӏIݏ?T%gg=Ǧ)%.~}q괯Qi_Ii}XLiLGp/o?>16767W'~<ߟ'lt.F:s?w!PsфKR:S( [kqkҲB|:~`¾?vȿ\9M\z?=]>n?sAשo}8@S`K}l,ea#R.>~D-7z_0k-ȞH>z4/fϝ⥃w1WM;"Y:xj#/oWdĕ%mh-:S}\햗h܃0+Mg>u{YO^|IѰm6C(8q{s~=W)k?7^厢spit?ub28Qcp:UtFXsTFGϬf' 'I7zn~JeQib{Cjd;U0}K4nOљ:tKЩVfA$, zVᎃ3'kf+ ڨ"x{L?~΄v0 ⃡7Ng2fZG>HO)1@'Ldoтҿ>=b65'D]X?gN;gGG3BXڂy>45ţ,/Ϸ!6Bx;6˫&ˏ?˭_;i&m$ԓQV,ѴSE7n~~u/_[:^zoyx_kÏNǩȽw6Vr MՖAU?0z _сt&ѬMՎD4sJmH} xW\PQ3޾A )~Xdr4xɱK U;I  Z#pm@˨Qtra? k'm\,yH#uRqoׂ| *no~-Eiӂ2i^<JܟZˮ/0j$^j5#?'S5{Ztc :GϤc-$NY}/.\=?t^UvM嚧a^(LnE )7N$b(Ao&z?貯X&ndЪ:=ˠ}aIҩaŭǾdק wS`jx,G(K#\ !Bƃ = UvpRJ%sisQ!E $d\bۚV%guЧu)NOXUT}P!pQa h-2 9p,mo ">_}z6dE|ET^j \y!\nE462)|,D&K) gd O: .O5],%|N2ݻ-QXzeM<4c`FR5[ ǰ=nGEw[]Ք%Xzf?dģzpHUM\\N!'#[9p?ޭ;uZ7UgQzKeR噏*I7kצ P3Љ>?nMSo~CY2"Q%.w:D$G ;PUrǷđhmkI'ʜcSM *Qu0AARbTtmQRƱS¡c(<}v±Ơ*`:&zkI iDwөo}1f G$&?$_N[wTAV= FhS<%*7Lvs&:6כKc϶]Ml-cQM#K`)J kpDKS(*o~}:#I=Ei*H 1ֺԩZYH FG Qs Mz "3U'RO^:S2чozUz=El[Pܑ:C-DJM#K<^I\ܟtW.jz6Ѳta)-P)ҧ3?1o?۪h Wj}zY\vAb#Wi7?װDtaN:ǚ1St4پ?_zOul7G>K>.re}Ϸ>g&?SY{BDֹy\ڕON&}7;>"Ӣz>龽{խ8q_Ffb %n c IH" NI,I44JI'ɯL9ꀑé0y5eP?<=O!KR1hyZiZQ[ ty5SJQ>1]ԥ<. #6_?zV'G"駼'ϨrUoŏI.׷><>*VrzS{^׺ Node-path: plugins/org.eclipse.egf.core.fc.feature/epl-v10.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 15551 Text-content-md5: 039e1069dd729da8eb5dcb88a61f5fc8 Text-content-sha1: 84d3d14778e83b9515f3ebbf2f4aa3295fd8d841 Content-length: 15596 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

Node-path: plugins/org.eclipse.egf.core.fc.feature/feature.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 7355 Text-content-md5: 667e2e75d03957f185bea9a61caf6f6c Text-content-sha1: 0bd058d55dd9cd1a90510f12d244a8a90afecc7a Content-length: 7400 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # feature.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # NLS_MESSAGEFORMAT_VAR # "featureName" property - name of the feature featureName=EGF FC Core - Eclipse Generation Factories Factory Components Core (Incubation) # "providerName" property - name of the company that provides the feature providerName=Eclipse.org # "description" property - description of the feature description=EGF FC Core - Eclipse Generation Factories Factory Components Core. # "EMFUpdateSiteName" property - label for the update site (on download1.eclipse.org) EMFUpdateSiteName=Eclipse Modeling Framework (EMF) Updates EMFTUpdateSiteName=Eclipse Modeling Framework Technologies (EMFT) Updates # "licenseURL" property - URL of the "Feature License" # do not translate value - just change to point to a locale-specific HTML page licenseURL=license.html # "license" property - text of the "Feature Update License" # should be plain text version of license agreement pointed to be "licenseURL" license=\ ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\ March 17, 2005\n\ \n\ Usage Of Content\n\ \n\ THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\ OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\ USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\ AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\ NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\ AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\ AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\ OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\ TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\ OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\ BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\ \n\ Applicable Licenses\n\ \n\ Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\ is provided to you under the terms and conditions of the Eclipse Public\n\ License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\ Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\ For purposes of the EPL, "Program" will mean the Content.\n\ \n\ Content includes, but is not limited to, source code, object code,\n\ documentation and other files maintained in the Eclipse.org CVS\n\ repository ("Repository") in CVS modules ("Modules") and made available\n\ as downloadable archives ("Downloads").\n\ \n\ - Content may be structured and packaged into modules to facilitate delivering,\n\ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\ plug-in fragments ("Fragments"), and features ("Features").\n\ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java ARchive)\n\ in a directory named "plugins".\n\ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\ Each Feature may be packaged as a sub-directory in a directory named "features".\n\ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\ - Features may also include other Features ("Included Features"). Within a Feature, files\n\ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\ \n\ Features may also include other Features ("Included Features"). Files named\n\ "feature.xml" may contain a list of the names and version numbers of\n\ Included Features.\n\ \n\ The terms and conditions governing Plug-ins and Fragments should be\n\ contained in files named "about.html" ("Abouts"). The terms and\n\ conditions governing Features and Included Features should be contained\n\ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\ Licenses may be located in any directory of a Download or Module\n\ including, but not limited to the following locations:\n\ \n\ - The top-level (root) directory\n\ - Plug-in and Fragment directories\n\ - Inside Plug-ins and Fragments packaged as JARs\n\ - Sub-directories of the directory named "src" of certain Plug-ins\n\ - Feature directories\n\ \n\ Note: if a Feature made available by the Eclipse Foundation is installed using the\n\ Eclipse Update Manager, you must agree to a license ("Feature Update\n\ License") during the installation process. If the Feature contains\n\ Included Features, the Feature Update License should either provide you\n\ with the terms and conditions governing the Included Features or inform\n\ you where you can locate them. Feature Update Licenses may be found in\n\ the "license" property of files named "feature.properties". Such Abouts,\n\ Feature Licenses and Feature Update Licenses contain the terms and\n\ conditions (or references to such terms and conditions) that govern your\n\ use of the associated Content in that directory.\n\ \n\ THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\ TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\ SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\ \n\ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\ - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\ \n\ IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\ TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\ is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\ govern that particular Content.\n\ \n\ Cryptography\n\ \n\ Content may contain encryption software. The country in which you are\n\ currently may have restrictions on the import, possession, and use,\n\ and/or re-export to another country, of encryption software. BEFORE\n\ using any encryption software, please check the country's laws,\n\ regulations and policies concerning the import, possession, or use,\n\ and re-export of encryption software, to see if this is permitted.\n\ \n\ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n ########### end of license property ########################################## Node-path: plugins/org.eclipse.egf.core.fc.feature/feature.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3179 Text-content-md5: 330351ec08e72137b14170997d5bdcf7 Text-content-sha1: 902aa1f73f08192568aaa6aa1f2111b86f696f2c Content-length: 3224 K 13 svn:mime-type V 10 text/plain PROPS-END %description Copyright (c) 2009 Thales Corporate Services S.A.S. 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 %license Node-path: plugins/org.eclipse.egf.core.fc.feature/license.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6481 Text-content-md5: 34cb3dd8ed1e802c5c6f29224424ecb0 Text-content-sha1: 7ad0f4cfae9f5ff9c9edb378a3a4859a3d03adb6 Content-length: 6526 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse.org Software User Agreement

Eclipse Foundation Software User Agreement

March 17, 2005

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Node-path: plugins/org.eclipse.egf.core.fc.feature/rootfiles Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc.feature/rootfiles/epl-v10.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 15944 Text-content-md5: 5928073a19039f426966d2ee99d4a473 Text-content-sha1: eb90ed65b93036f08b0b50fcf8c0fd9c1c14ff86 Content-length: 15989 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

Node-path: plugins/org.eclipse.egf.core.fc.feature/rootfiles/notice.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6346 Text-content-md5: 4609bcd89164e9d5c98856ec66c23ae6 Text-content-sha1: dd8095fca0596058f9220f0aeb31fe468e15fe7d Content-length: 6391 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse.org Software User Agreement

Eclipse Foundation Software User Agreement

March 17, 2005

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateBundle Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateBundle/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateBundle/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 517 Text-content-md5: 0293bf78c8ad20e00532c1589c33ae6a Text-content-sha1: 700d83adc2ac4f85a8f7969069febe3f452d2c5f Content-length: 562 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Core Factory Components Developer Resources Bundle (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateFeature Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateFeature/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 504 Text-content-md5: 89cc0a32d770e72e503b97ffddf86e0a Text-content-sha1: 29b522cc57757eec9870f309e94b5cbc99f09a13 Content-length: 549 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## bin.includes =\ epl-v10.html,\ feature.xml,\ feature.properties,\ eclipse_update_120.jpg,\ license.html Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateFeature/eclipse_update_120.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 14641 Text-content-md5: a1e1b8bcbf29349adb8d30041de57a47 Text-content-sha1: 23274bde59d041017c39598eec267ab9e6bc4f49 Content-length: 14700 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFHH Photoshop 3.08BIMHH8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM gppPKJFIFHH&File written by Adobe Photoshop 5.0Adobed            pp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ܬ{[uqڳ{I_(ՌeOo) gu6J"Z#/5$Mo)N\E/!<(ӗLr{JElhBxV^g{wI!r-=%ԀQI66FIȤ:60^.h Zq_STfkOr#d ʻ1NLDXRMUq\U3X]7Aek4)drNlgbH|r\URZػds2jz*ֵGyI@{P9r Oڎ桸xD ,'E#g7BH aM5@cYTøX_/ d]'p#Ate^?_TԭC_ۿt+>mCoR"4]WH}t^>XO!Qk?yBm^f G.K*U*O8Jf]UYGRXgPD)@J. I@>)z.ю1gSTNTH1A8/d\&SeaUkꜢµѻqvWBgB0Vt>н/Ρi?K7OzئܫKrIPL\S*.*GJX|ʯcjcN$J8uUS~9V( u#H{`h)9_TZ0X:J&'s{2;AYz-n7wѿ}%u#Ѱ6[׆ikzsZ'϶(ĎUv>CC\~RJgQIJd;sݬ>#o7yXHYկ>!E=B%@!*H{,ؠkkS~6d~0@} wAK\:zv5rj?rS|\KOɮ]Pi=H 0R g,CD*O*2R6e*Lr@E?_SUPQTV-G9wƿe!5g'([M:ǐCAǂLonΌD:)ɗmɗm5=E/{Rئb$oe{R_ǷwE =uPGgǷwE7س?=ۿ(Sd)of{RoǷwE4bQJ6ꚛYm\LLQcZ,as08BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km&File written by Adobe Photoshop 5.0Adobed@xx     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?_;);Pc޻ugiiiS^AOH@TPy{{.~N +@A@Fp*x ڣػaxaF]9۷]}TM~'e 7cA ~%ɹz?~Io>#LjORO;-$R)X~g)$OJdoz}$9wy=[R7X}v57wN{?Q~g}[/`R1|#vgwA*N*VvX)A{,};}n2e=ޏxT rx~ex.v?V1 ;CdC>ɧoX%pzMݞH?#}vZrq״ |s{.nD-}۟?܇ ?.t"`o)+w𫤫jsf)ꩧE==DּSA4LUсVRAh޷7)w i`dPAA )P:E [|n$۟yzܷףZq|x) uICMek=:^.G؆riAAќQyoX8qs-@(]Nה't<=XqCфVniMI_ؠF b%zmWo'YPcRX-eq>gzg5:b8vbҢDz{ȁ.5~Ҷ{&Bq|:MS%q~GDz^馉xu@!ʶw! ӧ`ػ}[t=h d2kyuVc1oZbJ{bubcOdz#=p>4;'EIUN&T[r50~~ޛhC[k3]=qQE"2mt{?qPףU=*@nC}R+3CS") SSP sK_c 待D#AєDt$qc}Ѥ7Gh ddK/W8sfQǵ7o/~CoZ~D9vI,0ea5c(YT!IPD1^BMܾ}$^k')pr; aPCn= ` 0#oIjJ@pǟN3ҿ eb'V~.naynEWYu)  Q`??}̪;ܙIr~Ϋ'k^iXw&@qU<y4R>q?!vbkT;[}Z_;{1ztWkq7N}48r/HڲU74Pz}E*z%]+$CP.xU p'5YJ ¨2?qӤ*N2nf:y{'xI~9lg{?>(1DFOHV l*M(:OVLdb_6zijgk[?hǫ&8fT c%VTME#ץe-HjH$6DؓxMcp-Οlr&cOJğ~?޽uI[JgxZe9޶/UƟ}&cKEo֝AP{mz4͚2h ' ~+Xw\:8oiKȖ+[^UIMؙ&F~o`h#N[ ]*_=0dCI&/JN:}S=fs{}i؁^y t4BG#Ҿ{骤iRM< '$窑S8/\ \G?_+(:ictr\I "Jq BBOݳl;\R8*>tțQ/=I78#yU9w` !Ld*wԎh4;^@R-7u$U1ץhDw?\ރKΊ+U1QŏY)8?gQe'?w?{B R g=Taϴ2KӞq]4`c V4F>^Ȯ^fzwiI_͈?o?su@Ms㎃JJ}|E㣤"I.Oc{|a E=<2߷ >dtӈwi%@gs@yv STM,slUZ0Wϥpz:!ܸ@.wv n'ci-mGc\h-ou_yl.T}OCn c{-=朦|)ǠmX={>5Y䭫Kƕa"~%b)=&Cي\Jie@NzY& N[z >Q| gnOG93[<>V,}[/QjLj$2UÇj\0B`/ S 즊04[DS]"r@R$jbbܔqDV0@bKtXścn4S+A<3:永?_}.jzq^}wWm;y[?~RzEqQ7c(=UUuSHeifmW:/k{0Fz2dfH??^},sn=ݓ-2O4#"yX#RT_2-КBbߪuU|m/Pn*s酢[ǷiDb&ɨ_ˣKr&,T_ϡX,}*3]pYY Ɩ\0\dK/j_}uħo|:/ۯ7nȪ,RWсQK*UHՁ^x$[qîHċW?xxlkя`/̴zR/"ߛ^X0 P =ff&zyoo[J ?˪35; XUŠ>D4}a|[HIJ{MqDl }c6cW9s$Xi"-$&b y6\?P-xڥ'Ri7Q%"dvcr/O̗J(4. QҾRMk} QIdn}&5ͭ=zI:$Ϯ*ջc \6Ko9 =6UpsҟE7{̍m;霋^Sx ~PW#>ک"XJe:Ȏ5iD\m F9drB{)NA+\)lAZ҆ Ʋ576 n=: (u3$ܓۢ`2Nz3]U:Uq>I!f=H8hn9'Y܄4Xӊɾݏ o5gB{tޫWPzfoXh}6. 5R8Q?}'ˉ`GL=$H6 Hʪy?+Cꪣӹ2Ozg5H[6x]ƾ}iDk<r~Ohf>.W5Cc~?MM|HG|6sґr R?6zKJPLGkgX̏؛Kw?[W߶IQbgaIaCC^ҷضw_B ymFg%KW^gkNܗce]#% $HzҽGJ,L} ap4RO@pYBz}n9%7$I/zP^G`o#aאָ:P5Y':8HawW_>$椓!??GkލH'mR~mή'㞣ac [.V Hz_%=`g p9.|O5>Oe]VZ=:GRoeí $ &uMan6w-n^Ziӳ#i;CGFŏ=^'Gq/7YǤEzG##e&P^.IbN:zavӁOW0@NyxoaQ5GǞl9?vb Q1qk iuğqӋ_^oW秕Ǭ&E?_iR<|8h䕽zc:XRJGW x~??ԥr~Ohe:4HW?GͿ8X+yG$-tMDC=ӟ;VP=WG[EU-]&TRg+{=<8dtbH[˾ɽ]4Mu)R" A-##_]ZJPj4<:B7WvQ?.7;qwNbٯ? I߸/7XVvWo3'm?2 ?,7Co}EѾ_?ypo)4$:#?I/7XOf ۭ~vog-pI@tGD Mno :pY'7XSv_>3sFemoO]Qy?~u`77[}?7OwM'ӢpO:M7l}d]m]Vg_d,& O:K??'sa0_4o/:z';n^_nM/k+O}=c؃$}o5d\CyoGl}:˱ܧ^ӷ,sq{i^y߳=_AٝuY_כGU}eftt-MMUTᦦUHٷ,r4Aܻ=/_ no(UQ*fbI&T+,em:ϯ Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateFeature/epl-v10.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 16946 Text-content-md5: 7121b1291986b569e092386968278fd8 Text-content-sha1: de6c7b5097acef51e9ae1b4d0c36773faa8e28cb Content-length: 16991 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

 

Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateFeature/feature.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 7412 Text-content-md5: f89556f9b2ed9d76609ca89ba5d39aa2 Text-content-sha1: c543747b0d89bf0121386df573fc839bd28cbf5a Content-length: 7457 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # feature.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # NLS_MESSAGEFORMAT_VAR # "featureName" property - name of the feature featureName=Eclipse Generation Factories Core Factory Components Developer Resources (Incubation) # "providerName" property - name of the company that provides the feature providerName=Eclipse Modeling Project # "description" property - description of the feature description=API documentation and source code for Eclipse Generation Factories Core Factory Components. # "EMFUpdateSiteName" property - label for the update site (on download1.eclipse.org) EMFUpdateSiteName=Eclipse Modeling Framework (EMF) Updates EMFTUpdateSiteName=Eclipse Modeling Framework Technologies (EMFT) Updates # "licenseURL" property - URL of the "Feature License" # do not translate value - just change to point to a locale-specific HTML page licenseURL=license.html # "license" property - text of the "Feature Update License" # should be plain text version of license agreement pointed to be "licenseURL" license=\ ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\ March 17, 2005\n\ \n\ Usage Of Content\n\ \n\ THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\ OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\ USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\ AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\ NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\ AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\ AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\ OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\ TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\ OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\ BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\ \n\ Applicable Licenses\n\ \n\ Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\ is provided to you under the terms and conditions of the Eclipse Public\n\ License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\ Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\ For purposes of the EPL, "Program" will mean the Content.\n\ \n\ Content includes, but is not limited to, source code, object code,\n\ documentation and other files maintained in the Eclipse Modeling Project CVS\n\ repository ("Repository") in CVS modules ("Modules") and made available\n\ as downloadable archives ("Downloads").\n\ \n\ - Content may be structured and packaged into modules to facilitate delivering,\n\ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\ plug-in fragments ("Fragments"), and features ("Features").\n\ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\ in a directory named "plugins".\n\ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\ Each Feature may be packaged as a sub-directory in a directory named "features".\n\ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\ - Features may also include other Features ("Included Features"). Within a Feature, files\n\ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\ \n\ Features may also include other Features ("Included Features"). Files named\n\ "feature.xml" may contain a list of the names and version numbers of\n\ Included Features.\n\ \n\ The terms and conditions governing Plug-ins and Fragments should be\n\ contained in files named "about.html" ("Abouts"). The terms and\n\ conditions governing Features and Included Features should be contained\n\ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\ Licenses may be located in any directory of a Download or Module\n\ including, but not limited to the following locations:\n\ \n\ - The top-level (root) directory\n\ - Plug-in and Fragment directories\n\ - Inside Plug-ins and Fragments packaged as JARs\n\ - Sub-directories of the directory named "src" of certain Plug-ins\n\ - Feature directories\n\ \n\ Note: if a Feature made available by the Eclipse Foundation is installed using the\n\ Eclipse Update Manager, you must agree to a license ("Feature Update\n\ License") during the installation process. If the Feature contains\n\ Included Features, the Feature Update License should either provide you\n\ with the terms and conditions governing the Included Features or inform\n\ you where you can locate them. Feature Update Licenses may be found in\n\ the "license" property of files named "feature.properties". Such Abouts,\n\ Feature Licenses and Feature Update Licenses contain the terms and\n\ conditions (or references to such terms and conditions) that govern your\n\ use of the associated Content in that directory.\n\ \n\ THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\ TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\ SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\ \n\ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\ - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\ \n\ IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\ TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\ is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\ govern that particular Content.\n\ \n\ Cryptography\n\ \n\ Content may contain encryption software. The country in which you are\n\ currently may have restrictions on the import, possession, and use,\n\ and/or re-export to another country, of encryption software. BEFORE\n\ using any encryption software, please check the country's laws,\n\ regulations and policies concerning the import, possession, or use,\n\ and re-export of encryption software, to see if this is permitted.\n\ \n\ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n ########### end of license property ########################################## Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplateFeature/license.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6371 Text-content-md5: 32e5fcf9ee24d923bf7d2cf2343b84ee Text-content-sha1: 0fa87abcfd9a8f73546e6164a0d0d5a0eb783000 Content-length: 6416 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse.org Software User Agreement

Eclipse Foundation Software User Agreement

March 17, 2005

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin/about.ini Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 598 Text-content-md5: 867b1d7281fe7447bcf603ff112260ca Text-content-sha1: 3c662ecd1ff55393ab54aec9569cb26a327b27c0 Content-length: 643 K 13 svn:mime-type V 10 text/plain PROPS-END # about.ini # contains information about a feature # java.util.Properties file (ISO-8859-1 with "\" escapes) # "%key" are externalized strings defined in about.properties # This file does not need to be translated. # Property "aboutText" contains blurb for "About" dialog (translated) aboutText=%featureText # Property "featureImage" contains path to feature image (32x32) featureImage=fc32.gif # Property "appName" contains name of the application (translated) appName=%featureName # Property "welcomePage" contains path to welcome page (special XML-based format) welcomePage=$nl$/welcome.xml Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin/about.mappings Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 173 Text-content-md5: 16638c899b66a2fb62dd78d9fbf452ca Text-content-sha1: 5df1b4751123b65b8bea3b4bec0043c9333f9e86 Content-length: 183 PROPS-END # about.mappings # contains fill-ins for about.properties # java.util.Properties file (ISO-8859-1 with "\" escapes) # This file does not need to be translated. 0=@buildId@ Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin/about.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1678 Text-content-md5: 0fbe1121245cdb9d5056b50015a0e0b3 Text-content-sha1: c85677988f839572b5c8b0ed73b3b421e3b0f0c1 Content-length: 1723 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # about.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # NLS_MESSAGEFORMAT_VAR # ============================================================================== # Do not change the properties between this line and the last line containing: # %%% END OF TRANSLATED PROPERTIES %%% # Instead, either redefine an existing property, or create a new property, # append it to the end of the file, and change the code to use the new name. # ============================================================================== featureName=Eclipse Generation Factories (EGF) Core Factory Components Developer Resources (Incubation) featureText=Eclipse Generation Factories (EGF) Core Factory Components Developer Resources \n\ \n\ Version: {featureVersion}\n\ Build id: {0}\n\ \n\ (c) Copyright Eclipse contributors and others. 2009. All rights reserved.\n\ \n\ Visit http://www.eclipse.org/egf # ============================================================================== # %%% END OF TRANSLATED PROPERTIES %%% # The above properties have been shipped for translation. # ============================================================================== Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 868 Text-content-md5: 8009c7bde77f1233e658dfee07fdc577 Text-content-sha1: 350304a18703f27f56d655a42e96cb9566c4e1d0 Content-length: 913 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## bin.includes = fc32.gif,\ about.html,\ about.ini,\ about.mappings,\ about.properties,\ plugin.xml,\ plugin.properties,\ src/**,\ META-INF/,\ eclipse_update_120.jpg,\ epl-v10.html,\ feature.properties,\ feature.xml,\ license.html sourcePlugin=true src.includes = about.html Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin/fc32.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 749 Text-content-md5: d66169817d679160604fff1d134af4de Text-content-sha1: 9f4f742c9c6d5ed7b91bca7c620a085bef644be2 Content-length: 808 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a [@AABCCEEMPRTWo`R["rcU]#^%tfYjjj`(wi[b*mmmxk]c+nnnf4h7rrrl;lA>:.69Ȇ̈́ϰхӻՃ׫ق۱33&!3@F (VX XHJڜLD tD)(SNے&l٢3Ҥ&Z.+DLdIGPD FG&An TQ !)Ua (ǐP˘3'ϠCF@ӨS^=@hׯ; Node-path: plugins/org.eclipse.egf.core.fc.feature/sourceTemplatePlugin/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 535 Text-content-md5: ca7ab434b1c00c3abe2a4ffa2de7e78a Text-content-sha1: 80a56314f179f1e7a1fd32d83e36286c80c63951 Content-length: 580 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=Eclipse Generation Factories Core Factory Components Developer Resources (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.core.feature/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 400 Text-content-md5: ab0237bdc81a6dcb442d7b30accc71e3 Text-content-sha1: 344c3352f48a945ba1eae0cc904b0c552253d53b Content-length: 445 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.core.feature org.eclipse.pde.FeatureBuilder org.eclipse.pde.FeatureNature Node-path: plugins/org.eclipse.egf.core.feature/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.feature/.settings/org.eclipse.core.resources.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 173 Text-content-md5: db07d2aed60a7e23e3a6400519fc30b7 Text-content-sha1: f025c34d57f4653efb8b413633917badde2b4ca6 Content-length: 218 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Feb 23 14:20:30 CET 2009 eclipse.preferences.version=1 encoding//sourceTemplatePlugin/about.ini=ISO-8859-1 encoding//sourceTemplatePlugin/about.mappings=ISO-8859-1 Node-path: plugins/org.eclipse.egf.core.feature/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 711 Text-content-md5: 1a3904ea9fb91470b8e799d4c383f90f Text-content-sha1: 09b720e8f667bbc0f75ec85a029e856b837d1283 Content-length: 756 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## generate.feature@org.eclipse.egf.core.source=org.eclipse.egf.core bin.includes = feature.xml,\ features.properties,\ epl-v10.html,\ license.html,\ eclipse_update_120.jpg root=file:rootfiles/epl-v10.html,file:rootfiles/notice.html Node-path: plugins/org.eclipse.egf.core.feature/eclipse_update_120.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 21695 Text-content-md5: 94342845ae786e586e4f8552cf91c7f8 Text-content-sha1: c6cb40a8c82cfdae40b105d065274343bf6f78e0 Content-length: 21754 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2005:06:17 09:55:47xx&(.kHHJFIFHH Adobe_CMAdobed            xx"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I!")Jh*AZRRʉi *d!I$JRI$I$$I)I!"U6PKtwpWOdؕpCfS%*^; vxmgEml>Klz DFWioZMԒqv 5'.'I4򠅖6yU?I| 2(e>s<;B]NI潡2:rI$S8m>#&fXC Lqi@#vJ:+P%q>[hk?IŽqoMWZ\Q7"ʡuQS6㪵}*R AIJK) qOw௬PF(K^HuJI)LJ_-ExKF)&ۺ^"ւ8gou@g>i?><#ɾE*12˿yڕ2R.P%Klz DFWioZMԒqv 5'.'I4򠅖6yU?I| 2(e>s<;B]NI潡2:rI$S8m>#&fXC Lqi@#vJ:+P%q>[hk?IŽqoMWZ\Q7"ʡuQS6㪵}*R AIJK) qOw௬PF(K^HuJI)LJ_-ExKF)&ۺ^"ւ8gou@g>i?><#ɾE*12˿yڕ2R.P% 1 120 120 1 72/1 72/1 2 2005-06-17T09:55:47-05:00 2005-06-17T09:55:47-05:00 2005-06-17T09:55:47-05:00 Adobe Photoshop CS Windows adobe:docid:photoshop:5dd9930e-df37-11d9-b295-daca1d068cfc image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@xx     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?aɰ?A{ߺ\ ?݂1*h=onS>T.T.U׺u{{^׺u{{^Щ$̓ P]Y*ǾP6Uzz /YZVAZ U>})kbG8"F*UksnG!@^H]:QpߏX?.ecqæ|#E5rK{'I$:Lu߿u{{^׺u{{^ѩ_>c54S9WCˋ?*FVnаT ]G"Z9t?4`$%t,ުU_k ު.L=*;W#M{a7'Wҝܵ䊓]V 5MH{\fxMpFaoWgulJ},~UM H! f;8T=E>^?sVnp@I7]UqmIB~tI.Jg4`OdtKwoPWR<W3]?jgtqzS%\ OTrWcſ&KG'(?Imp<^ Q{ID#\@GOcЕtjֹ @,"WzV!]Y.-æTWЋ:ߺ^׽uҩ9.x#q ipeܑã(F0--e,ORGR>}* "8GSc8֨zuy,POu[tr^iX\-LcT!*2S@t.H}}2l?o_oUb#+T Jt 8AG$dϯGW[*6 j7ΩqgfydbڞF.ͽybO7;<#cĜTiE?PO5{OD+M_s(#?m=XX]CS G)7އt>#nyi2.Ot!5JX?EI>2[wC^c7:0bJ~߷|nJ/CMT%U\bH'P*AV +qȓ"UCFQSzuӬ{[)œQ`uM8*=%P֨='xm N")O}C"@?^TQJFú n udtȺO_Judž\icل Iꥦt~yPOG{n%kЖjtHqP?y~gV~ݨvV*9d @T D$ymWKvԀ:I1ts4T qVTVn)9?{Qj::έ $QuInW3_7?텽@\Sg_O?8HIo?Ӑ OX'=)AQLp~!JCOTvbc&?2;z(X莱nlM_H )!g˯^Y~|ǘ7=rA{ԩFPASBYU8څZiݔ^dtomw,D!-&7) x[']R4i%752{y6%Gˡ/bd c$Zr6T^HּBB,HA#H>;܅z1kyny3| 3$j4+ݚ]DRykܛ9؊Y@~9-S}E[xFw9kNJ'ra%r9c o8$噹7>}['y@(V?ɷoi}D ?S??J"ңb[Ey`_ i_5gU@N>9P#\,Κ }gոmtH5-@ p?>?ν-Aթo}1R58oCNG[7UNZ*ҶU_On 0ǯSO6Zw ¹iBct!B'JZN8ApƴJ@DJq?Ýd[[Zjc?DbgpouqZBq8v#+9$CG~?n]6b};sX6{ǤRē7˴ZaI ޑ9bo<~ğv$^OϬ6-{DƤҴC[EFckSӀpbumo }K",iSJWђ (l 8RS֪44.>y;c FtE-D/N۟t=z ֬ ÌU*l\M>cDq=76o׵Ay@=x.o4 ^;XYVcƻ+S%2- $de<tjSPr ҟχEV] ִC"3"TA_{-ܟ '=ά2mo]-k_֔QOu upkt=QӏIݏ?T%gg=Ǧ)%.~}q괯Qi_Ii}XLiLGp/o?>16767W'~<ߟ'lt.F:s?w!PsфKR:S( [kqkҲB|:~`¾?vȿ\9M\z?=]>n?sAשo}8@S`K}l,ea#R.>~D-7z_0k-ȞH>z4/fϝ⥃w1WM;"Y:xj#/oWdĕ%mh-:S}\햗h܃0+Mg>u{YO^|IѰm6C(8q{s~=W)k?7^厢spit?ub28Qcp:UtFXsTFGϬf' 'I7zn~JeQib{Cjd;U0}K4nOљ:tKЩVfA$, zVᎃ3'kf+ ڨ"x{L?~΄v0 ⃡7Ng2fZG>HO)1@'Ldoтҿ>=b65'D]X?gN;gGG3BXڂy>45ţ,/Ϸ!6Bx;6˫&ˏ?˭_;i&m$ԓQV,ѴSE7n~~u/_[:^zoyx_kÏNǩȽw6Vr MՖAU?0z _сt&ѬMՎD4sJmH} xW\PQ3޾A )~Xdr4xɱK U;I  Z#pm@˨Qtra? k'm\,yH#uRqoׂ| *no~-Eiӂ2i^<JܟZˮ/0j$^j5#?'S5{Ztc :GϤc-$NY}/.\=?t^UvM嚧a^(LnE )7N$b(Ao&z?貯X&ndЪ:=ˠ}aIҩaŭǾdק wS`jx,G(K#\ !Bƃ = UvpRJ%sisQ!E $d\bۚV%guЧu)NOXUT}P!pQa h-2 9p,mo ">_}z6dE|ET^j \y!\nE462)|,D&K) gd O: .O5],%|N2ݻ-QXzeM<4c`FR5[ ǰ=nGEw[]Ք%Xzf?dģzpHUM\\N!'#[9p?ޭ;uZ7UgQzKeR噏*I7kצ P3Љ>?nMSo~CY2"Q%.w:D$G ;PUrǷđhmkI'ʜcSM *Qu0AARbTtmQRƱS¡c(<}v±Ơ*`:&zkI iDwөo}1f G$&?$_N[wTAV= FhS<%*7Lvs&:6כKc϶]Ml-cQM#K`)J kpDKS(*o~}:#I=Ei*H 1ֺԩZYH FG Qs Mz "3U'RO^:S2чozUz=El[Pܑ:C-DJM#K<^I\ܟtW.jz6Ѳta)-P)ҧ3?1o?۪h Wj}zY\vAb#Wi7?װDtaN:ǚ1St4پ?_zOul7G>K>.re}Ϸ>g&?SY{BDֹy\ڕON&}7;>"Ӣz>龽{խ8q_Ffb %n c IH" NI,I44JI'ɯL9ꀑé0y5eP?<=O!KR1hyZiZQ[ ty5SJQ>1]ԥ<. #6_?zV'G"駼'ϨrUoŏI.׷><>*VrzS{^׺ Node-path: plugins/org.eclipse.egf.core.feature/epl-v10.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 15944 Text-content-md5: 5928073a19039f426966d2ee99d4a473 Text-content-sha1: eb90ed65b93036f08b0b50fcf8c0fd9c1c14ff86 Content-length: 15989 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

Node-path: plugins/org.eclipse.egf.core.feature/feature.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 7432 Text-content-md5: 2f2db4435b6ce8f5671a25f85e5f1da4 Text-content-sha1: 7b683b2e7047867041e9ef566fc7a9eb1930726e Content-length: 7477 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # feature.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # This file should be translated. # NLS_MESSAGEFORMAT_VAR # "featureName" property - name of the feature featureName=Eclipse Generation Factories Core (Incubation) # "providerName" property - name of the company that provides the feature providerName=Eclipse Modeling Project # "description" property - description of the feature description=Eclipse Generation Factories Core. # "sourceFeatureName" property - name of the source feature sourceFeatureName=EGF Core Sources # "licenseURL" property - URL of the "Feature License" # do not translate value - just change to point to a locale-specific HTML page licenseURL=license.html # "EMFUpdateSiteName" property - label for the update site (on download1.eclipse.org) EMFUpdateSiteName=Eclipse Modeling Framework (EMF) Updates EMFTUpdateSiteName=Eclipse Modeling Framework Technologies (EMFT) Updates # "license" property - text of the "Feature Update License" # should be plain text version of license agreement pointed to be "licenseURL" license=\ ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\ March 17, 2005\n\ \n\ Usage Of Content\n\ \n\ THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\ OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\ USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\ AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\ NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\ AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\ AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\ OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\ TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\ OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\ BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\ \n\ Applicable Licenses\n\ \n\ Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\ is provided to you under the terms and conditions of the Eclipse Public\n\ License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\ Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\ For purposes of the EPL, "Program" will mean the Content.\n\ \n\ Content includes, but is not limited to, source code, object code,\n\ documentation and other files maintained in the Eclipse.org CVS\n\ repository ("Repository") in CVS modules ("Modules") and made available\n\ as downloadable archives ("Downloads").\n\ \n\ - Content may be structured and packaged into modules to facilitate delivering,\n\ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\ plug-in fragments ("Fragments"), and features ("Features").\n\ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java ARchive)\n\ in a directory named "plugins".\n\ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\ Each Feature may be packaged as a sub-directory in a directory named "features".\n\ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\ - Features may also include other Features ("Included Features"). Within a Feature, files\n\ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\ \n\ Features may also include other Features ("Included Features"). Files named\n\ "feature.xml" may contain a list of the names and version numbers of\n\ Included Features.\n\ \n\ The terms and conditions governing Plug-ins and Fragments should be\n\ contained in files named "about.html" ("Abouts"). The terms and\n\ conditions governing Features and Included Features should be contained\n\ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\ Licenses may be located in any directory of a Download or Module\n\ including, but not limited to the following locations:\n\ \n\ - The top-level (root) directory\n\ - Plug-in and Fragment directories\n\ - Inside Plug-ins and Fragments packaged as JARs\n\ - Sub-directories of the directory named "src" of certain Plug-ins\n\ - Feature directories\n\ \n\ Note: if a Feature made available by the Eclipse Foundation is installed using the\n\ Eclipse Update Manager, you must agree to a license ("Feature Update\n\ License") during the installation process. If the Feature contains\n\ Included Features, the Feature Update License should either provide you\n\ with the terms and conditions governing the Included Features or inform\n\ you where you can locate them. Feature Update Licenses may be found in\n\ the "license" property of files named "feature.properties". Such Abouts,\n\ Feature Licenses and Feature Update Licenses contain the terms and\n\ conditions (or references to such terms and conditions) that govern your\n\ use of the associated Content in that directory.\n\ \n\ THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\ TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\ SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\ \n\ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\ - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\ \n\ IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\ TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\ is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\ govern that particular Content.\n\ \n\ Cryptography\n\ \n\ Content may contain encryption software. The country in which you are\n\ currently may have restrictions on the import, possession, and use,\n\ and/or re-export to another country, of encryption software. BEFORE\n\ using any encryption software, please check the country's laws,\n\ regulations and policies concerning the import, possession, or use,\n\ and re-export of encryption software, to see if this is permitted.\n\ \n\ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n ########### end of license property ########################################## Node-path: plugins/org.eclipse.egf.core.feature/feature.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5450 Text-content-md5: cf359d1dbae6ee83b92d9a80e6cce284 Text-content-sha1: fd067e3644027e2b9ea8ba29d97c6fc065be68a6 Content-length: 5495 K 13 svn:mime-type V 10 text/plain PROPS-END %description Copyright (c) 2009 Thales Corporate Services S.A.S. 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 %license Node-path: plugins/org.eclipse.egf.core.feature/license.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6481 Text-content-md5: 34cb3dd8ed1e802c5c6f29224424ecb0 Text-content-sha1: 7ad0f4cfae9f5ff9c9edb378a3a4859a3d03adb6 Content-length: 6526 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse.org Software User Agreement

Eclipse Foundation Software User Agreement

March 17, 2005

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Node-path: plugins/org.eclipse.egf.core.feature/rootfiles Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.feature/rootfiles/epl-v10.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 15944 Text-content-md5: 5928073a19039f426966d2ee99d4a473 Text-content-sha1: eb90ed65b93036f08b0b50fcf8c0fd9c1c14ff86 Content-length: 15989 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

Node-path: plugins/org.eclipse.egf.core.feature/rootfiles/notice.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6346 Text-content-md5: 4609bcd89164e9d5c98856ec66c23ae6 Text-content-sha1: dd8095fca0596058f9220f0aeb31fe468e15fe7d Content-length: 6391 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse.org Software User Agreement

Eclipse Foundation Software User Agreement

March 17, 2005

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateBundle Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateBundle/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateBundle/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 498 Text-content-md5: eacaae33dd0f1e3a5ce87b8ef4d626a2 Text-content-sha1: b318e40f0fe0124fa6301314cea2e80250ad06a8 Content-length: 543 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Core Developer Resources Bundle (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateFeature Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateFeature/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 504 Text-content-md5: 89cc0a32d770e72e503b97ffddf86e0a Text-content-sha1: 29b522cc57757eec9870f309e94b5cbc99f09a13 Content-length: 549 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## bin.includes =\ epl-v10.html,\ feature.xml,\ feature.properties,\ eclipse_update_120.jpg,\ license.html Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateFeature/eclipse_update_120.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 14641 Text-content-md5: a1e1b8bcbf29349adb8d30041de57a47 Text-content-sha1: 23274bde59d041017c39598eec267ab9e6bc4f49 Content-length: 14700 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFHH Photoshop 3.08BIMHH8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM gppPKJFIFHH&File written by Adobe Photoshop 5.0Adobed            pp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ܬ{[uqڳ{I_(ՌeOo) gu6J"Z#/5$Mo)N\E/!<(ӗLr{JElhBxV^g{wI!r-=%ԀQI66FIȤ:60^.h Zq_STfkOr#d ʻ1NLDXRMUq\U3X]7Aek4)drNlgbH|r\URZػds2jz*ֵGyI@{P9r Oڎ桸xD ,'E#g7BH aM5@cYTøX_/ d]'p#Ate^?_TԭC_ۿt+>mCoR"4]WH}t^>XO!Qk?yBm^f G.K*U*O8Jf]UYGRXgPD)@J. I@>)z.ю1gSTNTH1A8/d\&SeaUkꜢµѻqvWBgB0Vt>н/Ρi?K7OzئܫKrIPL\S*.*GJX|ʯcjcN$J8uUS~9V( u#H{`h)9_TZ0X:J&'s{2;AYz-n7wѿ}%u#Ѱ6[׆ikzsZ'϶(ĎUv>CC\~RJgQIJd;sݬ>#o7yXHYկ>!E=B%@!*H{,ؠkkS~6d~0@} wAK\:zv5rj?rS|\KOɮ]Pi=H 0R g,CD*O*2R6e*Lr@E?_SUPQTV-G9wƿe!5g'([M:ǐCAǂLonΌD:)ɗmɗm5=E/{Rئb$oe{R_ǷwE =uPGgǷwE7س?=ۿ(Sd)of{RoǷwE4bQJ6ꚛYm\LLQcZ,as08BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km&File written by Adobe Photoshop 5.0Adobed@xx     u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?_;);Pc޻ugiiiS^AOH@TPy{{.~N +@A@Fp*x ڣػaxaF]9۷]}TM~'e 7cA ~%ɹz?~Io>#LjORO;-$R)X~g)$OJdoz}$9wy=[R7X}v57wN{?Q~g}[/`R1|#vgwA*N*VvX)A{,};}n2e=ޏxT rx~ex.v?V1 ;CdC>ɧoX%pzMݞH?#}vZrq״ |s{.nD-}۟?܇ ?.t"`o)+w𫤫jsf)ꩧE==DּSA4LUсVRAh޷7)w i`dPAA )P:E [|n$۟yzܷףZq|x) uICMek=:^.G؆riAAќQyoX8qs-@(]Nה't<=XqCфVniMI_ؠF b%zmWo'YPcRX-eq>gzg5:b8vbҢDz{ȁ.5~Ҷ{&Bq|:MS%q~GDz^馉xu@!ʶw! ӧ`ػ}[t=h d2kyuVc1oZbJ{bubcOdz#=p>4;'EIUN&T[r50~~ޛhC[k3]=qQE"2mt{?qPףU=*@nC}R+3CS") SSP sK_c 待D#AєDt$qc}Ѥ7Gh ddK/W8sfQǵ7o/~CoZ~D9vI,0ea5c(YT!IPD1^BMܾ}$^k')pr; aPCn= ` 0#oIjJ@pǟN3ҿ eb'V~.naynEWYu)  Q`??}̪;ܙIr~Ϋ'k^iXw&@qU<y4R>q?!vbkT;[}Z_;{1ztWkq7N}48r/HڲU74Pz}E*z%]+$CP.xU p'5YJ ¨2?qӤ*N2nf:y{'xI~9lg{?>(1DFOHV l*M(:OVLdb_6zijgk[?hǫ&8fT c%VTME#ץe-HjH$6DؓxMcp-Οlr&cOJğ~?޽uI[JgxZe9޶/UƟ}&cKEo֝AP{mz4͚2h ' ~+Xw\:8oiKȖ+[^UIMؙ&F~o`h#N[ ]*_=0dCI&/JN:}S=fs{}i؁^y t4BG#Ҿ{骤iRM< '$窑S8/\ \G?_+(:ictr\I "Jq BBOݳl;\R8*>tțQ/=I78#yU9w` !Ld*wԎh4;^@R-7u$U1ץhDw?\ރKΊ+U1QŏY)8?gQe'?w?{B R g=Taϴ2KӞq]4`c V4F>^Ȯ^fzwiI_͈?o?su@Ms㎃JJ}|E㣤"I.Oc{|a E=<2߷ >dtӈwi%@gs@yv STM,slUZ0Wϥpz:!ܸ@.wv n'ci-mGc\h-ou_yl.T}OCn c{-=朦|)ǠmX={>5Y䭫Kƕa"~%b)=&Cي\Jie@NzY& N[z >Q| gnOG93[<>V,}[/QjLj$2UÇj\0B`/ S 즊04[DS]"r@R$jbbܔqDV0@bKtXścn4S+A<3:永?_}.jzq^}wWm;y[?~RzEqQ7c(=UUuSHeifmW:/k{0Fz2dfH??^},sn=ݓ-2O4#"yX#RT_2-КBbߪuU|m/Pn*s酢[ǷiDb&ɨ_ˣKr&,T_ϡX,}*3]pYY Ɩ\0\dK/j_}uħo|:/ۯ7nȪ,RWсQK*UHՁ^x$[qîHċW?xxlkя`/̴zR/"ߛ^X0 P =ff&zyoo[J ?˪35; XUŠ>D4}a|[HIJ{MqDl }c6cW9s$Xi"-$&b y6\?P-xڥ'Ri7Q%"dvcr/O̗J(4. QҾRMk} QIdn}&5ͭ=zI:$Ϯ*ջc \6Ko9 =6UpsҟE7{̍m;霋^Sx ~PW#>ک"XJe:Ȏ5iD\m F9drB{)NA+\)lAZ҆ Ʋ576 n=: (u3$ܓۢ`2Nz3]U:Uq>I!f=H8hn9'Y܄4Xӊɾݏ o5gB{tޫWPzfoXh}6. 5R8Q?}'ˉ`GL=$H6 Hʪy?+Cꪣӹ2Ozg5H[6x]ƾ}iDk<r~Ohf>.W5Cc~?MM|HG|6sґr R?6zKJPLGkgX̏؛Kw?[W߶IQbgaIaCC^ҷضw_B ymFg%KW^gkNܗce]#% $HzҽGJ,L} ap4RO@pYBz}n9%7$I/zP^G`o#aאָ:P5Y':8HawW_>$椓!??GkލH'mR~mή'㞣ac [.V Hz_%=`g p9.|O5>Oe]VZ=:GRoeí $ &uMan6w-n^Ziӳ#i;CGFŏ=^'Gq/7YǤEzG##e&P^.IbN:zavӁOW0@NyxoaQ5GǞl9?vb Q1qk iuğqӋ_^oW秕Ǭ&E?_iR<|8h䕽zc:XRJGW x~??ԥr~Ohe:4HW?GͿ8X+yG$-tMDC=ӟ;VP=WG[EU-]&TRg+{=<8dtbH[˾ɽ]4Mu)R" A-##_]ZJPj4<:B7WvQ?.7;qwNbٯ? I߸/7XVvWo3'm?2 ?,7Co}EѾ_?ypo)4$:#?I/7XOf ۭ~vog-pI@tGD Mno :pY'7XSv_>3sFemoO]Qy?~u`77[}?7OwM'ӢpO:M7l}d]m]Vg_d,& O:K??'sa0_4o/:z';n^_nM/k+O}=c؃$}o5d\CyoGl}:˱ܧ^ӷ,sq{i^y߳=_AٝuY_כGU}eftt-MMUTᦦUHٷ,r4Aܻ=/_ no(UQ*fbI&T+,em:ϯ Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateFeature/epl-v10.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 16946 Text-content-md5: 7121b1291986b569e092386968278fd8 Text-content-sha1: de6c7b5097acef51e9ae1b4d0c36773faa8e28cb Content-length: 16991 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

 

Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateFeature/feature.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 7369 Text-content-md5: c5d8ff50fd20348d15578eeaca8ce244 Text-content-sha1: 106de41ee8cb6a843fe7a2e124478025ced85829 Content-length: 7414 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # feature.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # NLS_MESSAGEFORMAT_VAR # "featureName" property - name of the feature featureName=Eclipse Generation Factories Core Developer Resources (Incubation) # "providerName" property - name of the company that provides the feature providerName=Eclipse Modeling Project # "description" property - description of the feature description=API documentation and source code for Eclipse Generation Factories. # "EMFUpdateSiteName" property - label for the update site (on download1.eclipse.org) EMFUpdateSiteName=Eclipse Modeling Framework (EMF) Updates EMFTUpdateSiteName=Eclipse Modeling Framework Technologies (EMFT) Updates # "licenseURL" property - URL of the "Feature License" # do not translate value - just change to point to a locale-specific HTML page licenseURL=license.html # "license" property - text of the "Feature Update License" # should be plain text version of license agreement pointed to be "licenseURL" license=\ ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\ March 17, 2005\n\ \n\ Usage Of Content\n\ \n\ THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\ OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\ USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\ AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\ NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\ AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\ AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\ OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\ TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\ OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\ BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\ \n\ Applicable Licenses\n\ \n\ Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\ is provided to you under the terms and conditions of the Eclipse Public\n\ License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\ Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\ For purposes of the EPL, "Program" will mean the Content.\n\ \n\ Content includes, but is not limited to, source code, object code,\n\ documentation and other files maintained in the Eclipse Modeling Project CVS\n\ repository ("Repository") in CVS modules ("Modules") and made available\n\ as downloadable archives ("Downloads").\n\ \n\ - Content may be structured and packaged into modules to facilitate delivering,\n\ extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\ plug-in fragments ("Fragments"), and features ("Features").\n\ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\ in a directory named "plugins".\n\ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\ Each Feature may be packaged as a sub-directory in a directory named "features".\n\ Within a Feature, files named "feature.xml" may contain a list of the names and version\n\ numbers of the Plug-ins and/or Fragments associated with that Feature.\n\ - Features may also include other Features ("Included Features"). Within a Feature, files\n\ named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\ \n\ Features may also include other Features ("Included Features"). Files named\n\ "feature.xml" may contain a list of the names and version numbers of\n\ Included Features.\n\ \n\ The terms and conditions governing Plug-ins and Fragments should be\n\ contained in files named "about.html" ("Abouts"). The terms and\n\ conditions governing Features and Included Features should be contained\n\ in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\ Licenses may be located in any directory of a Download or Module\n\ including, but not limited to the following locations:\n\ \n\ - The top-level (root) directory\n\ - Plug-in and Fragment directories\n\ - Inside Plug-ins and Fragments packaged as JARs\n\ - Sub-directories of the directory named "src" of certain Plug-ins\n\ - Feature directories\n\ \n\ Note: if a Feature made available by the Eclipse Foundation is installed using the\n\ Eclipse Update Manager, you must agree to a license ("Feature Update\n\ License") during the installation process. If the Feature contains\n\ Included Features, the Feature Update License should either provide you\n\ with the terms and conditions governing the Included Features or inform\n\ you where you can locate them. Feature Update Licenses may be found in\n\ the "license" property of files named "feature.properties". Such Abouts,\n\ Feature Licenses and Feature Update Licenses contain the terms and\n\ conditions (or references to such terms and conditions) that govern your\n\ use of the associated Content in that directory.\n\ \n\ THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\ TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\ SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\ \n\ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\ - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\ \n\ IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\ TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\ is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\ govern that particular Content.\n\ \n\ Cryptography\n\ \n\ Content may contain encryption software. The country in which you are\n\ currently may have restrictions on the import, possession, and use,\n\ and/or re-export to another country, of encryption software. BEFORE\n\ using any encryption software, please check the country's laws,\n\ regulations and policies concerning the import, possession, or use,\n\ and re-export of encryption software, to see if this is permitted.\n\ \n\ Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n ########### end of license property ########################################## Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplateFeature/license.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6371 Text-content-md5: 32e5fcf9ee24d923bf7d2cf2343b84ee Text-content-sha1: 0fa87abcfd9a8f73546e6164a0d0d5a0eb783000 Content-length: 6416 K 13 svn:mime-type V 10 text/plain PROPS-END Eclipse.org Software User Agreement

Eclipse Foundation Software User Agreement

March 17, 2005

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin/about.ini Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 598 Text-content-md5: 867b1d7281fe7447bcf603ff112260ca Text-content-sha1: 3c662ecd1ff55393ab54aec9569cb26a327b27c0 Content-length: 643 K 13 svn:mime-type V 10 text/plain PROPS-END # about.ini # contains information about a feature # java.util.Properties file (ISO-8859-1 with "\" escapes) # "%key" are externalized strings defined in about.properties # This file does not need to be translated. # Property "aboutText" contains blurb for "About" dialog (translated) aboutText=%featureText # Property "featureImage" contains path to feature image (32x32) featureImage=fc32.gif # Property "appName" contains name of the application (translated) appName=%featureName # Property "welcomePage" contains path to welcome page (special XML-based format) welcomePage=$nl$/welcome.xml Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin/about.mappings Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 173 Text-content-md5: 16638c899b66a2fb62dd78d9fbf452ca Text-content-sha1: 5df1b4751123b65b8bea3b4bec0043c9333f9e86 Content-length: 183 PROPS-END # about.mappings # contains fill-ins for about.properties # java.util.Properties file (ISO-8859-1 with "\" escapes) # This file does not need to be translated. 0=@buildId@ Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin/about.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1640 Text-content-md5: 7bf014b0b105462b593f0985f26c74c3 Text-content-sha1: fd66a780e37b54b864e90fca91f4069fce113864 Content-length: 1685 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # about.properties # contains externalized strings for feature.xml # "%foo" in feature.xml corresponds to the key "foo" in this file # java.util.Properties file (ISO-8859-1 with "\" escapes) # NLS_MESSAGEFORMAT_VAR # ============================================================================== # Do not change the properties between this line and the last line containing: # %%% END OF TRANSLATED PROPERTIES %%% # Instead, either redefine an existing property, or create a new property, # append it to the end of the file, and change the code to use the new name. # ============================================================================== featureName=Eclipse Generation Factories (EGF) Core Developer Resources (Incubation) featureText=Eclipse Generation Factories (EGF) Core Developer Resources \n\ \n\ Version: {featureVersion}\n\ Build id: {0}\n\ \n\ (c) Copyright Eclipse contributors and others. 2009. All rights reserved.\n\ \n\ Visit http://www.eclipse.org/egf # ============================================================================== # %%% END OF TRANSLATED PROPERTIES %%% # The above properties have been shipped for translation. # ============================================================================== Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 868 Text-content-md5: 8009c7bde77f1233e658dfee07fdc577 Text-content-sha1: 350304a18703f27f56d655a42e96cb9566c4e1d0 Content-length: 913 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## bin.includes = fc32.gif,\ about.html,\ about.ini,\ about.mappings,\ about.properties,\ plugin.xml,\ plugin.properties,\ src/**,\ META-INF/,\ eclipse_update_120.jpg,\ epl-v10.html,\ feature.properties,\ feature.xml,\ license.html sourcePlugin=true src.includes = about.html Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin/fc32.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 749 Text-content-md5: d66169817d679160604fff1d134af4de Text-content-sha1: 9f4f742c9c6d5ed7b91bca7c620a085bef644be2 Content-length: 808 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a [@AABCCEEMPRTWo`R["rcU]#^%tfYjjj`(wi[b*mmmxk]c+nnnf4h7rrrl;lA>:.69Ȇ̈́ϰхӻՃ׫ق۱33&!3@F (VX XHJڜLD tD)(SNے&l٢3Ҥ&Z.+DLdIGPD FG&An TQ !)Ua (ǐP˘3'ϠCF@ӨS^=@hׯ; Node-path: plugins/org.eclipse.egf.core.feature/sourceTemplatePlugin/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 516 Text-content-md5: dbf791b4527519a94319cc11a6e980f8 Text-content-sha1: 8ba669dcc05587c00b8f7af3227e5442a40c07d3 Content-length: 561 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=Eclipse Generation Factories Core Developer Resources (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.core.ui/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 505 Text-content-md5: 22e1161b46f199c0e75227cfff7c16d7 Text-content-sha1: 96ba93039b01188e2d24f06ea5fc75bcb15ce5a5 Content-length: 550 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 684 Text-content-md5: e793fa47843dc431f668fabfaeeecc8a Text-content-sha1: 729e94bb1b5530a1253407523535ac4f24b05009 Content-length: 729 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.core.ui org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.core.ui/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: 866f36672e4194f189611d8b1286a903 Text-content-sha1: 3981317f5eb13b1b2cbd7dbe5823ae4dd2c7009e Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:58 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.core.ui/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1187 Text-content-md5: 7b184e04451f32cd417a7321f7b22e8c Text-content-sha1: 049f20ac35af5995692b9c1dbc6adba96c307aff Content-length: 1232 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.core.ui; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.egf.core.ui.EgfUiActivator Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.model.edit;visibility:=reexport, org.eclipse.egf.pde;visibility:=reexport, org.eclipse.emf.edit.ui;visibility:=reexport, org.eclipse.ui.navigator;visibility:=reexport, org.eclipse.egf.pde.emf;visibility:=reexport, org.eclipse.core.expressions;visibility:=reexport, org.eclipse.ui.console Export-Package: org.eclipse.egf.core.ui, org.eclipse.egf.core.ui.actions, org.eclipse.egf.core.ui.contract.type, org.eclipse.egf.core.ui.data, org.eclipse.egf.core.ui.data.explorer, org.eclipse.egf.core.ui.data.fc, org.eclipse.egf.core.ui.data.listener, org.eclipse.egf.core.ui.dialogs, org.eclipse.egf.core.ui.preferences, org.eclipse.egf.core.ui.viewers, org.eclipse.egf.core.ui.viewers.explorer, org.eclipse.egf.core.ui.viewers.fc, org.eclipse.egf.core.ui.wizard Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.core.ui/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core.ui/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/EgfPreferencesInitializer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1208 Text-content-md5: cc4dff5e4c91c7be72bd2f0109cd9c4a Text-content-sha1: 8ed2cc3cc486dcf2a1260d14f6bd2c0eeffe2188 Content-length: 1267 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 111org/eclipse/egf/core/ui/EgfPreferencesInitializerBorg/eclipse/core/runtime/preferences/AbstractPreferenceInitializer()VCode  LineNumberTableLocalVariableTablethis3Lorg/eclipse/egf/core/ui/EgfPreferencesInitializer;initializeDefaultPreferences &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore;Domain_Editor_Id(Lorg/eclipse/egf/core/ui/EgfUiActivator;Lorg/eclipse/emf/common/notify/AdapterFactory;Lorg/eclipse/emf/common/command/CommandStack;)VCode    ^(Lorg/eclipse/emf/common/notify/AdapterFactory;Lorg/eclipse/emf/common/command/CommandStack;)VLineNumberTableLocalVariableTablethis*Lorg/eclipse/egf/core/ui/EgfUiActivator$1; $anonymous0.Lorg/eclipse/emf/common/notify/AdapterFactory; $anonymous1-Lorg/eclipse/emf/common/command/CommandStack; isReadOnly,(Lorg/eclipse/emf/ecore/resource/Resource;)Z resource_p)Lorg/eclipse/emf/ecore/resource/Resource; SourceFileEgfUiActivator.javaEnclosingMethod&org/eclipse/egf/core/ui/EgfUiActivator !"getEditingDomainInReadOnly;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; InnerClasses  N *+ *,-       6 #  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/EgfUiActivator$ExtendedComposedAdapterFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1270 Text-content-md5: d33d5500684b615f3d1750aad99f2ccb Text-content-sha1: b94f61d93228debb40a7f614ca6cfaafe7f1508c Content-length: 1329 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&Eorg/eclipse/egf/core/ui/EgfUiActivator$ExtendedComposedAdapterFactory4org/eclipse/emf/edit/provider/ComposedAdapterFactory2org/eclipse/emf/edit/domain/IEditingDomainProvider_editingDomainProvider+Lorg/eclipse/emf/edit/domain/EditingDomain;this$0(Lorg/eclipse/egf/core/ui/EgfUiActivator;Y(Lorg/eclipse/egf/core/ui/EgfUiActivator;Lorg/eclipse/emf/common/notify/AdapterFactory;)VCode   1(Lorg/eclipse/emf/common/notify/AdapterFactory;)VLineNumberTableLocalVariableTablethisGLorg/eclipse/egf/core/ui/EgfUiActivator$ExtendedComposedAdapterFactory;adapterFactory_p.Lorg/eclipse/emf/common/notify/AdapterFactory;getEditingDomain-()Lorg/eclipse/emf/edit/domain/EditingDomain;  setEditingDomainProvider.(Lorg/eclipse/emf/edit/domain/EditingDomain;)VeditingDomainProvider_p SourceFileEgfUiActivator.java InnerClasses$&org/eclipse/egf/core/ui/EgfUiActivatorExtendedComposedAdapterFactory    C *+*,    /*  >*+ '( !" #% Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/EgfUiActivator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5796 Text-content-md5: bbebcdee6b643414ae9f23de16b56c06 Text-content-sha1: cd341488d0b27e93273f308ae4b87db52ad1946d Content-length: 5855 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&org/eclipse/egf/core/ui/EgfUiActivator7org/eclipse/egf/common/ui/activator/AbstractUIActivator__plugin(Lorg/eclipse/egf/core/ui/EgfUiActivator;_editingDomain9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;_editingDomainInReadOnly_factoryComponentInWorkspaceCLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace;"_factoryComponentWorkingSetManagerILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;_factoryComponentInPlatform()VCode2org/eclipse/egf/core/ui/data/ElementAdapterFactory    LineNumberTableLocalVariableTable thisstart%(Lorg/osgi/framework/BundleContext;)V Exceptions$java/lang/Exception & ! (  *,+"org/eclipse/egf/core/CoreActivator -. getDefault&()Lorg/eclipse/egf/core/CoreActivator; 021!org/eclipse/core/runtime/Platform 34getAdapterManager,()Lorg/eclipse/core/runtime/IAdapterManager;6Aorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace 8:9(org/eclipse/core/runtime/IAdapterManager ;<registerAdapters>(Lorg/eclipse/core/runtime/IAdapterFactory;Ljava/lang/Class;)V>:org/eclipse/egf/core/ui/data/fc/FactoryComponentInPlatform@Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManagerB@org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet D EFgetEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; H IFgetEditingDomainInReadOnlycontext"Lorg/osgi/framework/BundleContext;stop 8N OPunregisterAdapters-(Lorg/eclipse/core/runtime/IAdapterFactory;)V R ?T Udispose W L!*()Lorg/eclipse/egf/core/ui/EgfUiActivator;#getFactoryComponentInWorkspaceInput'()Lorg/eclipse/core/runtime/IAdaptable; \ ]^getFactoryComponentInWorkspaceE()Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace;getWorkingSetsInput ?!getFactoryComponentInPlatormInput c degetFactoryComponentInPlatform>()Lorg/eclipse/egf/core/ui/data/fc/FactoryComponentInPlatform;getAllFactoryComponents()Ljava/util/List; Signature<()Ljava/util/List; k lggetWorkspaceFactoryComponents n og"getTargetPlatformFactoryComponents qsrjava/util/List tuaddAll(Ljava/util/Collection;)ZallFcsLjava/util/List;LocalVariableTypeTable:Ljava/util/List;{java/util/ArrayList =} ~getFactoryComponents()Ljava/util/Collection; z (Ljava/util/Collection;)V 5}  5   =    createAdapterFactoryI()Lorg/eclipse/egf/core/ui/EgfUiActivator$ExtendedComposedAdapterFactory;7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain0org/eclipse/emf/common/command/BasicCommandStack  ^(Lorg/eclipse/emf/common/notify/AdapterFactory;Lorg/eclipse/emf/common/command/CommandStack;)V  initializeEditingDomain(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/egf/core/ui/EgfUiActivator$ExtendedComposedAdapterFactory;)VadapterFactoryGLorg/eclipse/egf/core/ui/EgfUiActivator$ExtendedComposedAdapterFactory; Eorg/eclipse/egf/core/ui/EgfUiActivator$ExtendedComposedAdapterFactory setEditingDomainProvider.(Lorg/eclipse/emf/edit/domain/EditingDomain;)VeditingDomain_padapterFactory_p  (org/eclipse/egf/core/ui/EgfUiActivator$1 (Lorg/eclipse/egf/core/ui/EgfUiActivator;Lorg/eclipse/emf/common/notify/AdapterFactory;Lorg/eclipse/emf/common/command/CommandStack;)V>org/eclipse/egf/model/provider/ModelItemProviderAdapterFactory  Y(Lorg/eclipse/egf/core/ui/EgfUiActivator;Lorg/eclipse/emf/common/notify/AdapterFactory;)V SourceFileEgfUiActivator.java InnerClassesExtendedComposedAdapterFactory!    / Y L )/*)  !"#L*+%*')W/57/=7/?7/A7*CW*GW* ST V XY'Z4[A]F^K_LLJKL!"#7/M*Q*QS*QM'*+V,'*+V!!. h jkl!n"o&p+q-o1p6r77JK -X$'yYZ/*[ _ZI*Q*?Y`Q*Q aZ/*b fghi`*jL+*mpW+ vwx  vyoghi9zY*b| lghi9zY*[ ]^I**5Y* deI**=Y* EFq-*$*L*Y+Y**+* (- H,+  IFr.*%*L*Y*+Y**+* ). :Y*Y  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/IImageKeys.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 497 Text-content-md5: 1b2060654188391d285070791d11723b Text-content-sha1: c1dbcac0b939060a5b24366c97d13127b3d78c26 Content-length: 556 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1"org/eclipse/egf/core/ui/IImageKeysjava/lang/ObjectIMG_WIZARD_PATTERN_MODELLjava/lang/String; ConstantValue wizban/pattern.gifIMG_WIZARD_PATTERN_LIBARY wizban/patternLibrary.pngIMG_WIZARD_DOMAINwizban/domain.gifIMG_WIZARD_MAPPINGwizban/mapping.gifIMG_REQUIRED_FIELD_CUEovr/required_field_cue.gif SourceFileIImageKeys.java    Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 669 Text-content-md5: 505f5d4ea2ffd7a651039314d1ea881e Text-content-sha1: 0012431f82a7ba00baddd81caa79fdd9bb964367 Content-length: 728 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 org/eclipse/egf/core/ui/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue  org.eclipse.egf.core.ui.messages+PatternOverviewPage_PatternNameErrorMessage0PatternOverviewPage_PatternNameRegularExpression()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this"Lorg/eclipse/egf/core/ui/Messages; SourceFile Messages.java!   ,  3* !#  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4801 Text-content-md5: 9c52734c0575a9090953bf74caf833a2 Text-content-sha1: 02cb8de8d853472e87adda097073bf4ab3efdf11 Content-length: 4860 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1=org/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation/org/eclipse/ui/actions/WorkspaceModifyOperation _modelPathLjava/lang/String;_generatorAdapterFactoryALorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;_resultZ()VCode  2(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)VLineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation; getResult()Z  execute.(Lorg/eclipse/core/runtime/IProgressMonitor;)V Exceptions&org/eclipse/core/runtime/CoreException+java/lang/reflect/InvocationTargetException!java/lang/InterruptedException # $% doExecute.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;loadExistingGenModeli(Lorg/eclipse/core/runtime/IPath;Ljava/util/Collection;)Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel; Signature(Lorg/eclipse/core/runtime/IPath;Ljava/util/Collection;)Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel; -/.org/eclipse/core/runtime/IPath 01toString()Ljava/lang/String; 354(org/eclipse/egf/common/helper/FileHelper 67getFileFullUri5(Ljava/lang/String;)Lorg/eclipse/emf/common/util/URI;93org/eclipse/emf/ecore/resource/impl/ResourceSetImpl 8; =?>*org/eclipse/emf/ecore/resource/ResourceSet @A getResourceM(Lorg/eclipse/emf/common/util/URI;Z)Lorg/eclipse/emf/ecore/resource/Resource; CED'org/eclipse/emf/ecore/resource/Resource FG getContents%()Lorg/eclipse/emf/common/util/EList; IKJjava/util/List LisEmpty IN OPget(I)Ljava/lang/Object;Rorg/eclipse/emf/ecore/EPackage QT U1getNsURI WYXjava/util/Collection Z[iterator()Ljava/util/Iterator; ]_^java/util/Iterator `anext()Ljava/lang/Object;cAorg/eclipse/egf/pde/emf/reader/descriptor/IEmfExtensionDescriptor be fggetGeneratedPackage&()Lorg/eclipse/egf/common/misc/Couple; ikj"org/eclipse/egf/common/misc/Couple lagetKey npojava/lang/String qrequals(Ljava/lang/Object;)Z it uagetValueworg/eclipse/emf/common/util/URI yKz!org/eclipse/emf/common/util/EList yN}/org/eclipse/emf/codegen/ecore/genmodel/GenModel ] hasNextmodelFileName_p Lorg/eclipse/core/runtime/IPath; extensions_pLjava/util/Collection;result1Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel; fileFullUri!Lorg/eclipse/emf/common/util/URI; resourceSet,Lorg/eclipse/emf/ecore/resource/ResourceSet;resource)Lorg/eclipse/emf/ecore/resource/Resource;contentsLjava/util/List; rootPackage Lorg/eclipse/emf/ecore/EPackage;nsURI descriptorCLorg/eclipse/egf/pde/emf/reader/descriptor/IEmfExtensionDescriptor;generatedPackage$Lorg/eclipse/egf/common/misc/Couple;genModelResourcegenModelContents#Lorg/eclipse/emf/common/util/EList;LocalVariableTypeTable[Ljava/util/Collection;1Ljava/util/List;YLorg/eclipse/egf/common/misc/Couple;DLorg/eclipse/emf/common/util/EList; getModelPath   setModelPath(Ljava/lang/String;)V modelPath_pgetGeneratorAdapterFactoryC()Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;  setGeneratorAdapterFactoryD(Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;)VgeneratorAdapterFactory_p SourceFile"AbstractGenerateCodeOperation.java!   4* ;<  /*C  B **+" K L  &'$% ()*+ N+,2:-8Y::<:B:HMQ:S: ,V: Y \b:  d:   hm7 sv<:  B:x{|N  ~-Rbd fgjk)m2o<pIrRtiurwxyz{}t )2ItRk iJ rA " *2rA 1 /*  >*+  /*  >*+  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/actions/AbstractUiHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2280 Text-content-md5: cd272ad735c0fd63aa8df4b6543d0bf4 Text-content-sha1: 52aaf6724bfbc02b51838ba1c6faba63c1d210d9 Content-length: 2339 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1_1org/eclipse/egf/core/ui/actions/AbstractUiHandler)org/eclipse/core/commands/AbstractHandler()VCode  LineNumberTableLocalVariableTablethis3Lorg/eclipse/egf/core/ui/actions/AbstractUiHandler; getSelectionM(Lorg/eclipse/core/commands/ExecutionEvent;Ljava/lang/Class;)Ljava/util/List; Signaturem(Lorg/eclipse/core/commands/ExecutionEvent;Ljava/lang/Class;)Ljava/util/List;java/util/ArrayList  (I)V (org/eclipse/core/commands/ExecutionEvent getApplicationContext()Ljava/lang/Object;.org/eclipse/core/expressions/EvaluationContext  !getDefaultVariable#java/util/Collection "% &'iterator()Ljava/util/Iterator; )+*java/util/Iterator ,next . /0 getAdapter7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; 243java/util/List 56add(Ljava/lang/Object;)Z )8 9:hasNext()Zevent_p*Lorg/eclipse/core/commands/ExecutionEvent;expectedSelectionType_pLjava/lang/Class;resultLjava/util/List;applicationContext0Lorg/eclipse/core/expressions/EvaluationContext;defaultVariableLjava/util/Collection;currentVariableLjava/lang/Object;adapterLocalVariableTypeTableLjava/lang/Class;Ljava/util/List;Ljava/util/Collection<*>;TT;C(Ljava/lang/Object;Ljava/lang/Class;)TT; OQPjava/lang/Class R6 isInstance OT UVcast&(Ljava/lang/Object;)Ljava/lang/Object;X#org/eclipse/core/runtime/IAdaptable WZ /[%(Ljava/lang/Class;)Ljava/lang/Object;object_p SourceFileAbstractUiHandler.java!/*   1 aYN+-+:-":$:#(:*,-: -1W7- 6 " $ %')*-)/>0G1L2U/_5 Ra a;<a=> X?@IAB)8CD>EFGGFH*a=I X?J)8CKGGL/0M,N,+N ,+SN-+W,+W,YSN- @B CFG*I *, ,\F,=>*?FH,=I*?L]^ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/command Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/command/ChangeDescriptionWrapperCommand.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2090 Text-content-md5: 59fa5adab400cc5329294a4fdd94ccfb Text-content-sha1: 4babd7b8ab5e5ae618cc317f5922a5ebd1218126 Content-length: 2149 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1D?org/eclipse/egf/core/ui/command/ChangeDescriptionWrapperCommand8org/eclipse/emf/edit/command/AbstractOverrideableCommand_changeDescription0Lorg/eclipse/emf/ecore/change/ChangeDescription;.(Lorg/eclipse/emf/edit/domain/EditingDomain;)VCode  (org/eclipse/egf/core/ui/command/Messages -ChangeDescriptionWrapperCommand_Command_TitleLjava/lang/String;  @(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/String;)VLineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/command/ChangeDescriptionWrapperCommand;domain_p+Lorg/eclipse/emf/edit/domain/EditingDomain; label_pR(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/String;Ljava/lang/String;)V   description_p doExecute()VdoRedo #  %'&.org/eclipse/emf/ecore/change/ChangeDescription ( applyAndReversedoUndosetChangeDescription3(Lorg/eclipse/emf/ecore/change/ChangeDescription;)VchangeDescription_pprepare()ZdoGetAffectedObjects()Ljava/util/Collection; Signature()Ljava/util/Collection<*>;4java/util/ArrayList %6 78getObjectChanges$()Lorg/eclipse/emf/common/util/EMap; :<; org/eclipse/emf/common/util/EMap =>keySet()Ljava/util/Set; 3@ A(Ljava/util/Collection;)V SourceFile$ChangeDescriptionWrapperCommand.java!  A *+  %&   I*+, ./  T*+,- 89*  +A !  8 *"$ H J  )  8 *"$ Q R  *+ >*+" YZ,-. 5 *"b  /012 @3Y*"59?j BC Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/command/ChangeRecorderWrapperCommand.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2122 Text-content-md5: 481cc292bf843d7973a8dd1e72950291 Text-content-sha1: de5160fc7d3c7cf7fe4ff88aaa7e0bcaa474bce3 Content-length: 2181 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?org/eclipse/egf/model/edit/command/AbstractModelElementCommand(Lorg/eclipse/emf/ecore/change/ChangeDescription;Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)VCode   (Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V  getCommandList()Ljava/util/List; java/util/List isEmpty()Z  get(I)Ljava/lang/Object;?org/eclipse/egf/core/ui/command/ChangeDescriptionWrapperCommand  setChangeDescription3(Lorg/eclipse/emf/ecore/change/ChangeDescription;)VLineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/core/ui/command/ChangeRecorderWrapperCommand;changes0Lorg/eclipse/emf/ecore/change/ChangeDescription;editingDomain_p+Lorg/eclipse/emf/edit/domain/EditingDomain;modelElement_pLorg/eclipse/emf/ecore/EObject; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;commandsLjava/util/List;commandALorg/eclipse/egf/core/ui/command/ChangeDescriptionWrapperCommand;LocalVariableTypeTable:Ljava/util/List;getCrudCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command; 6 7.(Lorg/eclipse/emf/edit/domain/EditingDomain;)VgetLabel()Ljava/lang/String; ; <9getDetailedLabel SourceFile!ChangeRecorderWrapperCommand.java!.*,-* ::+% '()'*-, R.!".#$.%&.'(.)*.+,-.'/01 -234[ Y+54 4 !" %& '( )* +,89/*:= !"=> Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/command/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 636 Text-content-md5: 9b88f715dfdadbfd81bbd0dd4da21ede Text-content-sha1: a03024cd0249b405f112444a38333e7a4673b1c3 Content-length: 695 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(org/eclipse/egf/core/ui/command/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue (org.eclipse.egf.core.ui.command.messages-ChangeDescriptionWrapperCommand_Command_Title()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this*Lorg/eclipse/egf/core/ui/command/Messages; SourceFile Messages.java!   ,   3* !#  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/command/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 621 Text-content-md5: 29392a2dd992679ed08a3335c0fa02d0 Text-content-sha1: c97b30bce5d1bb96fbe147e9b58e90647ddac100 Content-length: 631 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### ChangeDescriptionWrapperCommand_Command_Title=Changes on Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/contract Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/contract/type Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/contract/type/GenModelTypeHolder.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 804 Text-content-md5: f05b6db6974f62c812172944e88c3eed Text-content-sha1: 3b72cce0c1527e0be01074a659de4cc697812d6c Content-length: 863 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18org/eclipse/egf/core/ui/contract/type/GenModelTypeHolder4org/eclipse/egf/model/contract/type/StringTypeHolder()VCode  LineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/core/ui/contract/type/GenModelTypeHolder;getSelectionDialog()Ljava/lang/String;7org/eclipse/egf/core/ui/dialogs/GenModelSelectionDialog java/lang/Class getNamegetSelectionHandler1()Lorg/eclipse/egf/common/misc/ISelectionHandler;8org/eclipse/egf/core/ui/dialogs/GenModelSelectionHandler   SourceFileGenModelTypeHolder.java!/*   0 "  2Y *   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/ElementAdapterFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2180 Text-content-md5: e560b81d8cb1844c2cb104df1b00059a Text-content-sha1: 286734e46b740a51a641b64d7f1e47d527d368e4 Content-length: 2239 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1F2org/eclipse/egf/core/ui/data/ElementAdapterFactory5org/eclipse/egf/common/adapter/AbstractAdapterFactory __adaptersLjava/util/Map; SignatureWLjava/util/Map;Lorg/eclipse/egf/common/adapter/AdapterDescriptor;>;()VCode java/util/HashMap     Aorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace0org/eclipse/egf/common/adapter/AdapterDescriptorPorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentInWorkspaceAdapter  (Ljava/lang/Class;)V  java/util/Map !put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;#:org/eclipse/egf/core/ui/data/fc/FactoryComponentInPlatform%Iorg/eclipse/egf/core/ui/data/fc/adapter/FactoryComponentInPlatformAdapter'Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager)Vorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetManagerAdapter+@org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet-Oorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetAdapterLineNumberTableLocalVariableTable this4Lorg/eclipse/egf/core/ui/data/ElementAdapterFactory; getAdapters()Ljava/util/Map;Y()Ljava/util/Map;Lorg/eclipse/egf/common/adapter/AdapterDescriptor;>;getAdapterList()[Ljava/lang/Class;9java/lang/Class;&org/eclipse/ui/model/IWorkbenchAdaptergetWorkbenchAdapter<(Ljava/lang/Object;)Lorg/eclipse/ui/model/IWorkbenchAdapter; ? @AgetPlatformAdapter7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;object_pLjava/lang/Object; SourceFileElementAdapterFactory.java!   [ YYW"Y$W&Y(W*Y,W.% ()2*F+Z!/  /*0.!/ 12345 ..3/ 1267 4 8Y:S.;/  12 <= 4 *:>:.D/  BCDE Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1917 Text-content-md5: fff1080322a2a7cd0ca71c6361c8d46c Text-content-sha1: fc5450d5ae8f1c771101081cf4795da66ffed09b Content-length: 1976 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1MAorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspacejava/lang/Object#org/eclipse/core/runtime/IAdaptable_factoryComponentsLjava/util/Set; Signature9Ljava/util/Set;()VCode  LineNumberTableLocalVariableTablethisCLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace; getAdapter%(Ljava/lang/Class;)Ljava/lang/Object; !org/eclipse/core/runtime/Platform getAdapterManager,()Lorg/eclipse/core/runtime/IAdapterManager; (org/eclipse/core/runtime/IAdapterManager  7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; adapter_pLjava/lang/Class;getFactoryComponents()Ljava/util/Collection;B()Ljava/util/Collection; ' )java/util/HashSet +-,#org/eclipse/egf/pde/EgfPdeActivator ./ getDefault'()Lorg/eclipse/egf/pde/EgfPdeActivator; +1 2$getFactoryComponentsInWorkspace (4 5(Ljava/util/Collection;)V7java/util/ArrayList 64addFactoryComponent+(Lorg/eclipse/egf/model/FactoryComponent;)Z (< =(I)V ?A@ java/util/Set BCadd(Ljava/lang/Object;)ZfactoryComponent_p(Lorg/eclipse/egf/model/FactoryComponent;removeFactoryComponent+(Lorg/eclipse/egf/model/FactoryComponent;)V ?I JCremove SourceFile FactoryComponentInWorkspace.java!    /*  ? *+%  !"#$ % V$*&*(Y*03&6Y*&8-.0 $9: Z*&*(Y;&*&+>9:<DEFG O*&*&+HWEFIDEKL Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4147 Text-content-md5: 9f1140bd9b296359ed794d49643c51a6 Text-content-sha1: e48a190c569011528a1f774399c8318fb3769adb Content-length: 4206 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1@org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetjava/lang/Object#org/eclipse/core/runtime/IAdaptable _workingSetLorg/eclipse/ui/IWorkingSet;(Lorg/eclipse/ui/IWorkingSet;)VCode  ()V  LineNumberTableLocalVariableTablethisBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; workingSet_p getAdapter%(Ljava/lang/Class;)Ljava/lang/Object; !org/eclipse/core/runtime/Platform getAdapterManager,()Lorg/eclipse/core/runtime/IAdapterManager; ! (org/eclipse/core/runtime/IAdapterManager "7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; adapter_pLjava/lang/Class;adapterLjava/lang/Object;getFactoryComponents()Ljava/util/List; Signature<()Ljava/util/List;,java/util/ArrayList +. /(I)V 132&org/eclipse/egf/core/ui/EgfUiActivator 45 getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; 17 89#getFactoryComponentInWorkspaceInput'()Lorg/eclipse/core/runtime/IAdaptable;;Aorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace 1= >9getWorkingSetsInput@Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager ?B CDgetOtherFcsWorkingSetD()Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; F GHequals(Ljava/lang/Object;)Z ?J KLgetPublicWorkingSets()Ljava/util/Collection; NPOjava/util/Collection QRiterator()Ljava/util/Iterator; TVUjava/util/Iterator WXnext()Ljava/lang/Object; Z [\ getWorkingSet()Lorg/eclipse/ui/IWorkingSet; ^`_org/eclipse/ui/IWorkingSet ab getElements(()[Lorg/eclipse/core/runtime/IAdaptable; ?d ef getProjects8([Lorg/eclipse/core/runtime/IAdaptable;)Ljava/util/List; hjijava/util/List kladdAll(Ljava/util/Collection;)Z Tn ophasNext()Z :r 'Lt&org/eclipse/egf/model/FactoryComponentv0org/eclipse/egf/model/internal/data/ModelElementx#org/eclipse/core/resources/IProject uz  h| }Hcontains h Hadd h pisEmptyresultLjava/util/List;fcsInWorkspaceCLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace;fcWorkingSetManagerILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;otherFc&allProjectContainedInPublicWorkingSetspublicWorkingSetsLjava/util/Collection;iterLjava/util/Iterator;currentWorkingSet iterOverFcs currentFc(Lorg/eclipse/egf/model/FactoryComponent;currentFcProject%Lorg/eclipse/core/resources/IProject;elements&[Lorg/eclipse/core/runtime/IAdaptable;projectsLocalVariableTypeTable:Ljava/util/List;7Ljava/util/List;ZLjava/util/Collection;XLjava/util/Iterator;>Ljava/util/Iterator; SourceFileFactoryComponentWorkingSet.java!  F * *+() *   O *+M, 1 2   #$ %&'()*  $+Y-L06:M0<?N-A:*E+Y-:-I:M:$S:Y]cgWm,qM:3Ss:  uwyw:  { + ~Wmɧg*]:c:,qM:@3Ss:uwyw:  { +~Wm+z: <>?#@,A6C<EEFHGTHiFsJ~LMOQRLXZ[\^_acd^"i$ #6<EyT~@$  YRG$ H 6<Ey~@RG[\ /*q  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1381 Text-content-md5: f58d9021103065ba4995832e88092dcf Text-content-sha1: cf5850a4ec17a8307de2658815495b22e0d6e02e Content-length: 1440 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1,Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$1Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifierthis$0ILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager; val$event_p,Lorg/eclipse/jface/util/PropertyChangeEvent;x(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/jface/util/PropertyChangeEvent;)VCode      L(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$1;run()V   getListener=()Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;  9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener !"workingSetModelChanged/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFile&FactoryComponentWorkingSetManager.javaEnclosingMethod'Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager )"#handleWorkingSetModelContentChanged InnerClassesNotifier   >*+ *,*+    <**   #$%&(*&+ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1688 Text-content-md5: 1d18b652e1d36d2ecfa93b2354e715d3 Text-content-sha1: 322a1f35715e27102bc6788f1ac5e3fb21255af3 Content-length: 1747 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$2Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifierthis$0ILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;val$addedWorkingSetBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; val$event_p,Lorg/eclipse/jface/util/PropertyChangeEvent;(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VCode       L(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$2;run()V    getListener=()Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener; "$#9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener %&workingSetAddedq(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFile&FactoryComponentWorkingSetManager.javaEnclosingMethod+Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager -.handleWorkingSetAddedK(Lorg/eclipse/ui/IWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V InnerClassesNotifier    C*+*,*-*+ &  @***! () '()*,/*0 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1709 Text-content-md5: 07982dda2fbafc9203a656b923b3fe57 Text-content-sha1: 808627f2389cb1865072752ebbde697b17369ff7 Content-length: 1768 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$3Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifierthis$0ILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;val$modifiedWorkingSetBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; val$event_p,Lorg/eclipse/jface/util/PropertyChangeEvent;(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VCode       L(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$3;run()V    getListener=()Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener; "$#9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener %&workingSetContentChangedq(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFile&FactoryComponentWorkingSetManager.javaEnclosingMethod+Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager -.handleWorkingSetContentChangedK(Lorg/eclipse/ui/IWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V InnerClassesNotifier    C*+*,*-*+ 6  @***! 89 '()*,/*0 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1705 Text-content-md5: 92eae917f794548b28df19acaab76145 Text-content-sha1: 294e786b1a80a5bdd7a7607b2e5c922100af8410 Content-length: 1764 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$4Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifierthis$0ILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;val$modifiedWorkingSetBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; val$event_p,Lorg/eclipse/jface/util/PropertyChangeEvent;(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VCode       L(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$4;run()V    getListener=()Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener; "$#9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener %&workingSetLabelChangedq(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFile&FactoryComponentWorkingSetManager.javaEnclosingMethod+Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager -.handleWorkingSetLabelChangedK(Lorg/eclipse/ui/IWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V InnerClassesNotifier    C*+*,*-*+ F  @***! HI '()*,/*0 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1703 Text-content-md5: 009e34cd9dcf29be49197c63d8446ede Text-content-sha1: 747cb029af031c9bb88179f0f1c14de928933e80 Content-length: 1762 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$5Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifierthis$0ILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;val$modifiedWorkingSetBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; val$event_p,Lorg/eclipse/jface/util/PropertyChangeEvent;(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VCode       L(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$5;run()V    getListener=()Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener; "$#9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener %&workingSetNameChangedq(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFile&FactoryComponentWorkingSetManager.javaEnclosingMethod+Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager -.handleWorkingSetNameChangedK(Lorg/eclipse/ui/IWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V InnerClassesNotifier    C*+*,*-*+ U  @***! WX '()*,/*0 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$6.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1694 Text-content-md5: 49d47654c8b8061dee2314954c50fe30 Text-content-sha1: 41b81f2926b2f360e2215d411b3108237848c539 Content-length: 1753 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$6Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifierthis$0ILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;val$removedWorkingSetBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; val$event_p,Lorg/eclipse/jface/util/PropertyChangeEvent;(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VCode       L(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$6;run()V    getListener=()Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener; "$#9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener %&workingSetRemovedq(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFile&FactoryComponentWorkingSetManager.javaEnclosingMethod+Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager -.handleWorkingSetRemovedK(Lorg/eclipse/ui/IWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V InnerClassesNotifier    C*+*,*-*+ d  @***! fg '()*,/*0 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifier.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1149 Text-content-md5: 164fa9cbcc9985ac778d4bcec3ad872b Text-content-sha1: 6e1ae8f114bf006ab3714fcaecbd9ce2e1be5399 Content-length: 1208 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1$Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifierjava/lang/Objectjava/lang/Runnable _listener;Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;this$0ILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;L(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;)VCode   ()VLineNumberTableLocalVariableTablethisRLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifier; setListener>(Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;)V   listener_p getListener=()Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener; SourceFile&FactoryComponentWorkingSetManager.java InnerClasses"Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManagerNotifier    4 *+*o   >*+ wx /*  !# Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 10730 Text-content-md5: 4711edaa81ee41742bc122c7734e8ea0 Text-content-sha1: b3bceac08611fc0aeff41434cda63616b3f9e83b Content-length: 10789 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1TGorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManagerjava/lang/Object#org/eclipse/core/runtime/IAdaptable.org/eclipse/jface/util/IPropertyChangeListenerOTHER_PROJECTS_WORKING_SET_IDLjava/lang/String; ConstantValue %org.eclipse.jdt.ui.JavaWorkingSetPage _workingSetsLjava/util/List; SignatureTLjava/util/List;_workingSetListenersMLjava/util/List;_localWorkingSetManager(Lorg/eclipse/ui/ILocalWorkingSetManager; _otherFcsBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;()VCode  java/util/ArrayList  !(I)V # LineNumberTableLocalVariableTablethisILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;dispose *  ,.-&org/eclipse/ui/ILocalWorkingSetManager ( getAdapter%(Ljava/lang/Class;)Ljava/lang/Object; 243!org/eclipse/core/runtime/Platform 56getAdapterManager,()Lorg/eclipse/core/runtime/IAdapterManager; 8:9(org/eclipse/core/runtime/IAdapterManager /;7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; adapter_pLjava/lang/Class;getWorkingsetManager%()Lorg/eclipse/ui/IWorkingSetManager; ACBorg/eclipse/ui/PlatformUI DE getWorkbench()Lorg/eclipse/ui/IWorkbench; GIHorg/eclipse/ui/IWorkbench J?getWorkingSetManager workbenchLorg/eclipse/ui/IWorkbench;workingSetManager#Lorg/eclipse/ui/IWorkingSetManager;getAllWorkingSets()Ljava/util/Collection;\()Ljava/util/Collection; S  U >? WYX!org/eclipse/ui/IWorkingSetManager Z[getWorkingSets()[Lorg/eclipse/ui/IWorkingSet; ] ^_ addWorkingSet`(Lorg/eclipse/ui/IWorkingSet;)Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; Ga bccreateLocalWorkingSetManager*()Lorg/eclipse/ui/ILocalWorkingSetManager; egf6org/eclipse/egf/core/ui/data/explorer/adapter/Messages h 7FactoryComponentWorkingSetManager_OtherWorkingSet_Title ,j klcreateWorkingSetV(Ljava/lang/String;[Lorg/eclipse/core/runtime/IAdaptable;)Lorg/eclipse/ui/IWorkingSet; npoorg/eclipse/ui/IWorkingSet qrsetId(Ljava/lang/String;)V ,t ^u(Lorg/eclipse/ui/IWorkingSet;)V w  y z(Ljava/util/Collection;)V workingSets[Lorg/eclipse/ui/IWorkingSet;iIcurrentWorkingSetLorg/eclipse/ui/IWorkingSet;othersgetPublicWorkingSets  remove(Ljava/lang/Object;)ZLjava/util/ArrayList;LocalVariableTypeTableYLjava/util/ArrayList;updatePublicWorkingSetsOrder(Ljava/util/List;)V1(Ljava/util/List;)V java/util/List size()I iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object;  _getFactoryComponentWorkingSet add?org/eclipse/jdt/internal/ui/workingsets/OthersWorkingSetUpdater@org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet u hasNext()ZupToDateWorkingSets_pupToDateFcWorkingSetsiterLjava/util/Iterator;relatedFcWorkingSet fcWorkingSet.Ljava/util/List;2Ljava/util/Iterator;getOtherFcsWorkingSetD()Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; workingSet_premoveWorkingSet  getWorkingSet()Lorg/eclipse/ui/IWorkingSet;  equals removedWorkingSetXLjava/util/Iterator;resultaddWorkingSetListener>(Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;)V listener_p;Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;removeWorkingSetListener notifyListenersU(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifier;)V9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener Porg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifier  setListener run notifier_pRLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$Notifier;QLjava/util/Iterator;propertyChange/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V *org/eclipse/jface/util/PropertyChangeEvent  getProperty()Ljava/lang/String;workingSetContentChange java/lang/String  getNewValue  handleWorkingSetContentChangedK(Lorg/eclipse/ui/IWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VworkingSetRemove  getOldValue  handleWorkingSetRemoved workingSetAdd  handleWorkingSetAddedworkingSetNameChange  handleWorkingSetNameChangedworkingSetLabelChange  handleWorkingSetLabelChangedworkingSetModelChanged   #handleWorkingSetModelContentChangedevent_p,Lorg/eclipse/jface/util/PropertyChangeEvent;property workingSetIorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$1  x(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/jface/util/PropertyChangeEvent;)V  Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$2  (Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VaddedWorkingSetIorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$3 modifiedWorkingSet Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$4 #Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$5 " & _(Iorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager$6 ' getParenti(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; - OP /0java/util/Collection n2 34 getElements(()[Lorg/eclipse/core/runtime/IAdaptable; 6 78 getProjects8([Lorg/eclipse/core/runtime/IAdaptable;)Ljava/util/List; : ;contains =  project_p%Lorg/eclipse/core/resources/IProject;allWorkingSetscurrentFcWorkingSetelements&[Lorg/eclipse/core/runtime/IAdaptable;_([Lorg/eclipse/core/runtime/IAdaptable;)Ljava/util/List;F!org/eclipse/jdt/core/IJavaProject EH IJ getProject'()Lorg/eclipse/core/resources/IProject; elements_pprojects adaptable%Lorg/eclipse/core/runtime/IAdaptable;7Ljava/util/List; SourceFile&FactoryComponentWorkingSetManager.java InnerClassesNotifier!   C**Y"$=?@% &'(L*)*)+*)$GHIK% &'/0? 1*+7$R% &' <=>?S @L+FM,$Z[ \%  &' KL MN!OPQv*Rf*TL+VM,>,2:*\W,*@`)*)diN- m*)-s**-\vY*Rx$:df gikl"n)k2r>sOtWuavjx%>v&' ^MNW{|}~"O!PQeY*RxL+*vW+$ %&' {  {!5uY+M+NQ-n:*:,W-,*vWY:,W-*,R$:#+0<DR]fot%Hu&'ug`#C+;]  ug`/*v$% &'"^_w)*R*YRY+M*R,W,$'% )&') "_EM*R=*RN#-:+ M--,,$*  !-06C%4E&'EC0! 0!_?M*R7*RN-:+M-,,$&  !-0=%4?&'?=*! *D *"+W$  % &' D *"+W$  % &' (*"M+,Ͷ+,$ '% (&'(   P+M,+nN*-+{,+nN*-+a,+nN*-+G,+nN*-+-,+nN*-+,*+$N(09BJS\dmw   %R&'     0  J  d     F*Y*+$  %&'  e*+\N*Y*-,$$&+%*&'  m*+N-*Y*-,$34 6<%*&'  e*+N*Y*-,!$DFK%*&'  e*+N*"Y*-,$$SUZ%*&'  e*+%N*'Y*-,)$bdi%*&'  *+OM*,.N+-:1:5+9M-,,*O&'O>?M C@A&BC  C@ 78D4YL=!*2N-E+-EGW*+$ )2%*4KC +L '}~MN  +LOPQR:"'S Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/adapter Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentInWorkspaceAdapter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1480 Text-content-md5: 79876622e0509192d25d413b683453ac Text-content-sha1: e5efbebe06a4f1ae71b7b9dd96a822a0a02de017 Content-length: 1539 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Porg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentInWorkspaceAdapterjava/lang/Object&org/eclipse/ui/model/IWorkbenchAdapter()VCode  LineNumberTableLocalVariableTablethisRLorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentInWorkspaceAdapter; getChildren'(Ljava/lang/Object;)[Ljava/lang/Object;Aorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace  getFactoryComponents()Ljava/util/Collection; java/util/Collection toArray()[Ljava/lang/Object;object_pLjava/lang/Object; fcInWorkspaceCLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace;getImageDescriptor@(Ljava/lang/Object;)Lorg/eclipse/jface/resource/ImageDescriptor;getLabel&(Ljava/lang/Object;)Ljava/lang/String; ')(6org/eclipse/egf/core/ui/data/explorer/adapter/Messages *+.FactoryComponentInWorkspaceAdapter_Label_TitleLjava/lang/String;o_p getParent&(Ljava/lang/Object;)Ljava/lang/Object; SourceFile'FactoryComponentInWorkspaceAdapter.java! /*    Q+M,   !"# 6 " $% 8& * ,-. 6 2 ,/0 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetAdapter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2474 Text-content-md5: 66d1f7a34d2bc21e6c2d515aabc79d42 Text-content-sha1: d09a3543ca874d10f67578f583980db31a129f9a Content-length: 2533 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1VOorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetAdapterjava/lang/Object&org/eclipse/ui/model/IWorkbenchAdapter()VCode  LineNumberTableLocalVariableTablethisQLorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetAdapter;getPlatformWorkingSetAdapterF(Lorg/eclipse/ui/IWorkingSet;)Lorg/eclipse/ui/model/IWorkbenchAdapter; !org/eclipse/core/runtime/Platform getAdapterManager,()Lorg/eclipse/core/runtime/IAdapterManager; (org/eclipse/core/runtime/IAdapterManager  getAdapter7(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; workingSet_pLorg/eclipse/ui/IWorkingSet;platformWorkingSetAdapter(Lorg/eclipse/ui/model/IWorkbenchAdapter; getChildren'(Ljava/lang/Object;)[Ljava/lang/Object;%@org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet $' ()getFactoryComponents()Ljava/util/List; +-,java/util/List ./toArray()[Ljava/lang/Object;object_pLjava/lang/Object; workingSetBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;getImageDescriptor@(Ljava/lang/Object;)Lorg/eclipse/jface/resource/ImageDescriptor; $7 89 getWorkingSet()Lorg/eclipse/ui/IWorkingSet; ;  = 45result,Lorg/eclipse/jface/resource/ImageDescriptor;platformWorkingSetgetLabel&(Ljava/lang/Object;)Ljava/lang/String;D F ABLjava/lang/String; getParent&(Ljava/lang/Object;)Ljava/lang/Object; KML&org/eclipse/egf/core/ui/EgfUiActivator NO getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; KQ RS#getFactoryComponentInWorkspaceInput'()Lorg/eclipse/core/runtime/IAdaptable; SourceFile&FactoryComponentWorkingSetAdapter.java! /*    S+M,  !  !"# Q+$M,&* () 01 2345 &M+$N-6:*:: <M, 013 567$9 >&&01$>?23 @ !AB 'CM+$N-6:*:: EM, @ACEFG%I >''01$>G23@ !HI ;JP Q 01TU Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetManagerAdapter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1554 Text-content-md5: c518f6d407477c3effbeb2720e350a13 Text-content-sha1: acc9f69448d0a572f90bd28c61f4d53488dfe93a Content-length: 1613 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 12Vorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetManagerAdapterjava/lang/Object&org/eclipse/ui/model/IWorkbenchAdapter()VCode  LineNumberTableLocalVariableTablethisXLorg/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetManagerAdapter; getChildren'(Ljava/lang/Object;)[Ljava/lang/Object;Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager  getAllWorkingSets()Ljava/util/Collection; java/util/Collection toArray()[Ljava/lang/Object;object_pLjava/lang/Object;fcWorkingSetManagerILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;result[Ljava/lang/Object;getImageDescriptor@(Ljava/lang/Object;)Lorg/eclipse/jface/resource/ImageDescriptor;getLabel&(Ljava/lang/Object;)Ljava/lang/String; )+*6org/eclipse/egf/core/ui/data/explorer/adapter/Messages ,-.FactoryComponentInWorkspaceAdapter_Label_TitleLjava/lang/String; getParent&(Ljava/lang/Object;)Ljava/lang/Object; SourceFile-FactoryComponentWorkingSetManagerAdapter.java! /*    a+M,N-  * !"#$% 6 $ &' 8( , ./ 6 4 01 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/adapter/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 745 Text-content-md5: 35fa3df5c6fce75b234bb60d96364c8e Text-content-sha1: 9697d6764f743178da59f33386165a8582dc6eec Content-length: 804 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 16org/eclipse/egf/core/ui/data/explorer/adapter/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue 6org.eclipse.egf.core.ui.data.explorer.adapter.messages.FactoryComponentInWorkspaceAdapter_Label_Title7FactoryComponentWorkingSetManager_OtherWorkingSet_Title()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this8Lorg/eclipse/egf/core/ui/data/explorer/adapter/Messages; SourceFile Messages.java!   ,  3* !  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/explorer/adapter/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 730 Text-content-md5: c1ffd1dfba90d8d589bc718310c93f48 Text-content-sha1: 58e5b0e20abdc67caa6db166042176fdbbb3f94f Content-length: 740 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### FactoryComponentInWorkspaceAdapter_Label_Title=Factory Components under development FactoryComponentWorkingSetManager_OtherWorkingSet_Title=Other Factory Components Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/fc/FactoryComponentInPlatform.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1378 Text-content-md5: a2af609d34df4eacf0b464b0c8c248a1 Text-content-sha1: 32a445cd07d9f854c1805b2aa741d7821bcdf8e1 Content-length: 1437 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18:org/eclipse/egf/core/ui/data/fc/FactoryComponentInPlatformjava/lang/Object#org/eclipse/core/runtime/IAdaptable_factoryComponentsLjava/util/List; Signature:Ljava/util/List;()VCode  LineNumberTableLocalVariableTablethis; ' )java/util/ArrayList +-,"org/eclipse/egf/core/CoreActivator ./ getDefault&()Lorg/eclipse/egf/core/CoreActivator; +1 2$getFactoryComponentsInPlatform (4 5(Ljava/util/Collection;)V SourceFileFactoryComponentInPlatform.java!    /*  ? *+$  !"#$ % V$*&*(Y*03&(Y*&3,-/ $67 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/fc/adapter Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/fc/adapter/FactoryComponentInPlatformAdapter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1451 Text-content-md5: 6569eee19f60e5bfdbd92bf6d55a4657 Text-content-sha1: c0d9a72236e2520e83150b423b373b9e67d71677 Content-length: 1510 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Iorg/eclipse/egf/core/ui/data/fc/adapter/FactoryComponentInPlatformAdapterjava/lang/Object&org/eclipse/ui/model/IWorkbenchAdapter()VCode  LineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/data/fc/adapter/FactoryComponentInPlatformAdapter; getChildren'(Ljava/lang/Object;)[Ljava/lang/Object;:org/eclipse/egf/core/ui/data/fc/FactoryComponentInPlatform  getFactoryComponents()Ljava/util/Collection; java/util/Collection toArray()[Ljava/lang/Object;object_pLjava/lang/Object; fcInPlatform()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this2Lorg/eclipse/egf/core/ui/data/fc/adapter/Messages; SourceFile Messages.java!   ,   3*   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/fc/adapter/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 647 Text-content-md5: 269ae68a47236a73ecab66a409495b3c Text-content-sha1: ae191b10d786a2f6d3a6bbd0158c1ec508fa0457 Content-length: 657 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### FactoryComponentInPlatformAdapter_LabelProvider_Title=Installed Factory Components Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/listener Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/data/listener/IWorkingSetListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 510 Text-content-md5: d135f55967c40a425c66078360b9d9d3 Text-content-sha1: eb7fc595e149ad276a61721d571c4da57881eab1 Content-length: 569 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 19org/eclipse/egf/core/ui/data/listener/IWorkingSetListenerjava/lang/ObjectworkingSetLabelChangedq(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)VworkingSetNameChangedworkingSetAddedworkingSetRemovedworkingSetContentChangedworkingSetModelChanged/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFileIWorkingSetListener.java     Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/dialogs Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/dialogs/GenModelSelectionDialog.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1233 Text-content-md5: f55338fd63e06974bfbc306ae472b04a Text-content-sha1: c3a89d4f581ca843c496e7ef4a385a6dc54a8b98 Content-length: 1292 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 177org/eclipse/egf/core/ui/dialogs/GenModelSelectionDialog9org/eclipse/emf/common/ui/dialogs/WorkspaceResourceDialog"(Lorg/eclipse/swt/widgets/Shell;)VCode +org/eclipse/ui/model/WorkbenchLabelProvider   ()V-org/eclipse/ui/model/WorkbenchContentProvider  |(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ILabelProvider;Lorg/eclipse/jface/viewers/ITreeContentProvider;)V  setAllowMultiple(Z)V (org/eclipse/egf/core/ui/dialogs/Messages _UI_SelectGenModel_messageLjava/lang/String;   setTitle(Ljava/lang/String;)V " #$createDefaultViewerFilter+(Z)Lorg/eclipse/jface/viewers/ViewerFilter; & '( addFilter+(Lorg/eclipse/jface/viewers/ViewerFilter;)V*4org/eclipse/egf/core/ui/viewers/GenModelViewerFilter ) - .  loadContentsLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/dialogs/GenModelSelectionDialog;parentLorg/eclipse/swt/widgets/Shell; SourceFileGenModelSelectionDialog.java!8*+Y Y****!%*)Y+%*,/!"#$(%3&7'081283456 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/dialogs/GenModelSelectionHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 932 Text-content-md5: 03e7d87ff2a7722b511ccf92e1cd491b Text-content-sha1: 6eec694f1dbe5b534247d75f6a309e45af98fccc Content-length: 991 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)8org/eclipse/egf/core/ui/dialogs/GenModelSelectionHandlerjava/lang/Object-org/eclipse/egf/common/misc/ISelectionHandler()VCode  LineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/core/ui/dialogs/GenModelSelectionHandler;handleSelection&(Ljava/lang/Object;)Ljava/lang/String; org/eclipse/core/resources/IFile   getFullPath"()Lorg/eclipse/core/runtime/IPath; org/eclipse/core/runtime/IPath toString()Ljava/lang/String; ! org/eclipse/emf/common/util/URI "#createPlatformResourceURI6(Ljava/lang/String;Z)Lorg/eclipse/emf/common/util/URI; selectedObjectLjava/lang/Object; SourceFileGenModelSelectionHandler.java! /*    [++$ "#% %&'( Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/dialogs/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 617 Text-content-md5: 0e295e0f756786f63a0e8d8c982e4497 Text-content-sha1: ed3a36c317befafb45315f160b2e120a982f2ad0 Content-length: 676 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(org/eclipse/egf/core/ui/dialogs/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue (org.eclipse.egf.core.ui.dialogs.messages_UI_SelectGenModel_message()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this*Lorg/eclipse/egf/core/ui/dialogs/Messages; SourceFile Messages.java!   ,   3*    Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/dialogs/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 487 Text-content-md5: 80969bf6a79340fdcac2f1db3538bb2b Text-content-sha1: 78be73be76118810fb046ed4a5a3b713d6ed7674 Content-length: 497 PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## _UI_SelectGenModel_message=Select the generator model file to be referenced: Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/data Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/data/AbstractUiContainer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1700 Text-content-md5: e15bdba88eb432be678af94395c46438 Text-content-sha1: 5af9f6584041880842a9af29a56e76dbc450b709 Content-length: 1759 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1C9org/eclipse/egf/core/ui/internal/data/AbstractUiContainerjava/lang/Object_parentLjava/lang/Object; _childrenLjava/util/Set; Signature#Ljava/util/Set;$(Ljava/lang/Object;Ljava/util/Set;)V8(Ljava/lang/Object;Ljava/util/Set;)VCode  ()V    LineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/internal/data/AbstractUiContainer;parent_p children_pLocalVariableTypeTable(Ljava/lang/Object;)Vjava/util/HashSet ! "(I)V $ addChild(Ljava/lang/Object;)Z (*) java/util/Set +&addchild_p removeChild (/ 0&removeisEmpty()Z (4 12 getParent()Ljava/lang/Object; getChildren()[Ljava/lang/Object; (: ;8toArray hasChildrengetText()Ljava/lang/String;getImage"()Lorg/eclipse/swt/graphics/Image; SourceFileAbstractUiContainer.java!     k**+*,%& '(    F*+Y # / 0%&? *+'7  ,-&? *+.?  ,124 *3G  56/*O 784 *9W  <2<*3_ =>?@,n AB Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/data/UIDataHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1066 Text-content-md5: 6fcb1494b282ea7d1d077d51421c6177 Text-content-sha1: 32fdbd0cccd8f817156fc5748d49dc4091c52579 Content-length: 1125 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-2org/eclipse/egf/core/ui/internal/data/UIDataHelperjava/lang/Object()VCode  LineNumberTableLocalVariableTablethis4Lorg/eclipse/egf/core/ui/internal/data/UIDataHelper;getFactoryComponentIdFor&(Ljava/lang/String;)Ljava/lang/String; &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getAllFactoryComponents()Ljava/util/List; -org/eclipse/egf/model/data/helper/ModelHelper getFactoryComponentFromR(Ljava/lang/String;Ljava/util/Collection;)Lorg/eclipse/egf/model/FactoryComponent; !#"&org/eclipse/egf/model/FactoryComponent $%getId()Ljava/lang/String;factoryComponentName_pLjava/lang/String;result searchedFc(Lorg/eclipse/egf/model/FactoryComponent; SourceFileUIDataHelper.java!/*   nLM*M, , L+  "#% &'(')*+, Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1655 Text-content-md5: 00e3227155e637e9e27febfcf8e7bc0a Text-content-sha1: 4839b9940533b7641089dc298654e5e923241779 Content-length: 1714 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 16Borg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent9org/eclipse/egf/core/ui/internal/data/AbstractUiContainer_underlyingFactoryComponent(Lorg/eclipse/egf/model/FactoryComponent;x(Lorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;Lorg/eclipse/egf/model/FactoryComponent;)VCode   (Ljava/lang/Object;)V  LineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent;'uiReferencedFactoryComponentContainer_pMLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;fc_pgetText()Ljava/lang/String; &org/eclipse/egf/model/FactoryComponent getNamegetImage"()Lorg/eclipse/swt/graphics/Image; "!6org/eclipse/emf/edit/ui/provider/ExtendedImageRegistry #$INSTANCE8Lorg/eclipse/emf/edit/ui/provider/ExtendedImageRegistry; &('9org/eclipse/egf/model/provider/FactoryComponentEditPlugin #);Lorg/eclipse/egf/model/provider/FactoryComponentEditPlugin;+full/obj16/FactoryComponent &- .&(Ljava/lang/String;)Ljava/lang/Object; 0 14(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image;getFactoryComponent*()Lorg/eclipse/egf/model/FactoryComponent; SourceFile!UiReferencedFactoryComponent.java! Q *+ *, $% &     4 * -   9%*,/5 23 /* = 45 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3965 Text-content-md5: fae0f1bbe109689996ae77fb4cf8b902 Text-content-sha1: 7c96c72d45f2cf865fbe1e5ffdffcbb5e82893c4 Content-length: 4024 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Korg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer9org/eclipse/egf/core/ui/internal/data/AbstractUiContainer__loggerLorg/apache/log4j/Logger;_referencedFactoryComponentMapLjava/util/Map; Signature}Ljava/util/Map;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; ! LineNumberTableLocalVariableTable+([Lorg/eclipse/egf/model/ContractElement;)V ' $((Ljava/lang/Object;)V*java/util/HashMap ), $-(I)V /  132-org/eclipse/egf/model/data/helper/ModelHelper 45getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; 798 java/util/Map :;get&(Ljava/lang/Object;)Ljava/lang/Object;=Borg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent <? $@x(Lorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;Lorg/eclipse/egf/model/FactoryComponent;)V 7B CDput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; <F GHaddChild(Ljava/lang/Object;)ZthisMLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;contractElements_p([Lorg/eclipse/egf/model/ContractElement;contractElement'Lorg/eclipse/egf/model/ContractElement;fc(Lorg/eclipse/egf/model/FactoryComponent;uiReferencedFcDLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent;Tjava/lang/StringBuilderV5UiReferencedFactoryComponentContainer.addChild(..) _ SX $Y(Ljava/lang/String;)V[[UiReferencedFactoryComponentContainer only accepts UiReferencedFactoryComponent as children S] ^_append-(Ljava/lang/String;)Ljava/lang/StringBuilder; Sa btoString d e(error <g higetFactoryComponent*()Lorg/eclipse/egf/model/FactoryComponent;child_pLjava/lang/Object;resultZ loggerMessageLjava/lang/StringBuilder;isEmpty()Z 7s pq removeChildv8UiReferencedFactoryComponentContainer.removeChild(..) _ 7x y;removeremovedElement getChildren()[Ljava/lang/Object; 7~ values()Ljava/util/Collection; 7 size()I java/util/Collection toArray(([Ljava/lang/Object;)[Ljava/lang/Object; hasChildrengetUiReferencedFactoryComponentn(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent;factoryComponent_pgetText SourceFile*UiReferencedFactoryComponentContainer.java!    3 " #$% h*&*)Y+.+Y:6>G2M,0:*.6<::*.AW,EW". ()+"-(/81=2I3W6^+g8#4hIJhKL"<MN(6OP8&QRGH >=+< SYUWN-Z\W -`c+IJ>jk<lmno+QRpq 4 *.r"R#  IJtH K=+< SYuWN-Z\W -`c+KIJKjkIlmno+ QR=zR{| E*.}*.<"n# IJq <*.r"v# IJ B*.+6<"#IJP -"# IJ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/databinding Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/databinding/AbstractDataBindingType.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 745 Text-content-md5: c27c4cd3a1c9904ec6a8d2498405872a Text-content-sha1: 70a9439a2a8c2a4f74f349a0942d6206dffd4d70 Content-length: 804 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Dorg/eclipse/egf/core/ui/internal/databinding/AbstractDataBindingTypejava/lang/Object()VCode  LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/internal/databinding/AbstractDataBindingType;addPropertyChangeListener8(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)VpropertyName_pLjava/lang/String; listener_p#Ljava/beans/PropertyChangeListener;removePropertyChangeListener SourceFileAbstractDataBindingType.java!/*   ?   ? !   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/databinding/JavaTypeHolder.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 750 Text-content-md5: b33881694a4950379c70e06958b8f6be Text-content-sha1: 4296b70fa1a019ce8b7af5a38d38d51d132999fa Content-length: 809 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1;org/eclipse/egf/core/ui/internal/databinding/JavaTypeHolderDorg/eclipse/egf/core/ui/internal/databinding/AbstractDataBindingType_typeLjava/lang/String; PROPERTY_TYPE ConstantValue type(Ljava/lang/String;)VCode  ()V  LineNumberTableLocalVariableTablethis=Lorg/eclipse/egf/core/ui/internal/databinding/JavaTypeHolder;type_pgetType()Ljava/lang/String;setType SourceFileJavaTypeHolder.java!   F **+    /*&   >*+ ./ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponent.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 786 Text-content-md5: 29c504a0e58681d3c0909f1bdc06fcaf Text-content-sha1: 3f9396e96ffe7ca106515660ca0964b5bfe5aa1a Content-length: 845 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Gorg/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponentDorg/eclipse/egf/core/ui/internal/databinding/AbstractDataBindingType PROPERTY_NAMELjava/lang/String; ConstantValue name_name(Ljava/lang/String;)VCode  ()V  LineNumberTableLocalVariableTablethisILorg/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponent;name_pgetName()Ljava/lang/String;setName SourceFileReferencedFactoryComponent.java!   F **+!" #   /**   >*+ 23 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1390 Text-content-md5: 29d3b1db3be5c4d3fc48b86319035042 Text-content-sha1: ca2d5dbf8d28f26a18aa6fc8171e9e53271a0313 Content-length: 1449 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)=org/eclipse/egf/core/ui/internal/databinding/UpdateWizardPagejava/lang/ObjectBorg/eclipse/core/databinding/observable/value/IValueChangeListener@org/eclipse/core/databinding/observable/list/IListChangeListener _wizardPageDLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode  ()V  LineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage; wizardPage_phandleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V  doUpdateWizardPageevent_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;handleListChangeA(Lorg/eclipse/core/databinding/observable/list/ListChangeEvent;)V>Lorg/eclipse/core/databinding/observable/list/ListChangeEvent; #%$Borg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage & updateButtons SourceFileUpdateWizardPage.java!   F **+!" #    =* )*  =* 01! 6*" 78 '( Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 885 Text-content-md5: d04c273ef8385d2131b152c1a6b521d4 Text-content-sha1: e64de613d6807c414562951f07e391e5a376f3b9 Content-length: 944 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler=org/eclipse/egf/core/ui/internal/databinding/UpdateWizardPageG(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler; wizardPage_pDLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;doHandleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)VhandleValueChange    event_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent; SourceFileValueChangeHandler.java!>*+   G *+*+ (* +   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/dialogs Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1981 Text-content-md5: 9ce82cba1219065acc5fb3f4d251cf5a Text-content-sha1: 097b8b8a66dda4bb69793c4f37a89de34e0e9e1f Content-length: 2040 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1PHorg/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialogDorg/eclipse/egf/core/ui/internal/dialogs/ModelElementSelectionDialog_filteredFactoryComponentsLjava/util/List; Signature:Ljava/util/List;"(Lorg/eclipse/swt/widgets/Shell;)VCode  1org/eclipse/egf/core/ui/internal/dialogs/Messages %FactoryComponentSelectionDialog_TitleLjava/lang/String;  setTitle(Ljava/lang/String;)V  'FactoryComponentSelectionDialog_Message   setMessage  !setMultipleSelection(Z)VLineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog;parent_pLorg/eclipse/swt/widgets/Shell;setFilteredFactoryComponents(Ljava/util/List;)V=(Ljava/util/List;)V , filteredFactoryComponents_pLocalVariableTypeTablesetListElements([Ljava/lang/Object;)V 2 34getInitialInput()Ljava/util/List; 687java/util/List 9: removeAll(Ljava/util/Collection;)Z 6< =>toArray()[Ljava/lang/Object; @ /0 elements_p[Ljava/lang/Object;allFactoryComponents<()Ljava/util/List; FHG&org/eclipse/egf/core/ui/EgfUiActivator IJ getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; FL M4getAllFactoryComponents SourceFile$FactoryComponentSelectionDialog.java!  ]*+ ***"$% &'(#$%&'()* P*++" /0#$%-. -/0 "*1M*+,*+5W*,;?"79 :=!># "$%"ABC. C34D 1EK"G# $%NO Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/dialogs/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 705 Text-content-md5: d4079b6e7f3a11b54df925637dc763ab Text-content-sha1: cf9f0ba572ade9d4c943da95a7d65c39ab4de76d Content-length: 764 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11org/eclipse/egf/core/ui/internal/dialogs/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue 1org.eclipse.egf.core.ui.internal.dialogs.messages'FactoryComponentSelectionDialog_Message%FactoryComponentSelectionDialog_Title()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this3Lorg/eclipse/egf/core/ui/internal/dialogs/Messages; SourceFile Messages.java!   ,  3*  "  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/dialogs/ModelElementSelectionDialog.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1600 Text-content-md5: 4d904159755ce19af8be34f68d3f165f Text-content-sha1: 8989bdcaf9ea89da5108da93e4f0b5d7872b48aa Content-length: 1659 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1=Dorg/eclipse/egf/core/ui/internal/dialogs/ModelElementSelectionDialog1org/eclipse/ui/dialogs/ElementListSelectionDialog"(Lorg/eclipse/swt/widgets/Shell;)VCode @org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProvider  &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getEditingDomainInReadOnly;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory;  1(Lorg/eclipse/emf/common/notify/AdapterFactory;)V  L(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ILabelProvider;)V ! "#setMultipleSelection(Z)VLineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/internal/dialogs/ModelElementSelectionDialog;parent_pLorg/eclipse/swt/widgets/Shell; setElements(Ljava/util/List;)V SignatureE(Ljava/util/List<+Lorg/eclipse/egf/model/NamedModelElementWithId;>;)V /10java/util/List 23toArray()[Ljava/lang/Object; 5 *6([Ljava/lang/Object;)VmodelElements_pLjava/util/List;LocalVariableTypeTableBLjava/util/List<+Lorg/eclipse/egf/model/NamedModelElementWithId;>; SourceFile ModelElementSelectionDialog.java!W*+Y * $#$%%&'()*+,-U *+.4$ , -% &' 789  7:;< Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/dialogs/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 553 Text-content-md5: 8b594214d40bdc37900b5d354605cd3f Text-content-sha1: 189d42dfc8634ecfaa69dd6f94d373b2f7bcd6d2 Content-length: 563 PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## FactoryComponentSelectionDialog_Title=Factory Component Selection FactoryComponentSelectionDialog_Message=&Select a Factory Component (*, ?): Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/field Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1671 Text-content-md5: fc9e163fe463504e26b7a3b9ce8dc3f4 Text-content-sha1: fb26a3630416d5e36f33a60ba4432d7ccabf6a6a Content-length: 1730 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11Forg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$1Dorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditorval$readOnly_pZl(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;Z)VCode    k(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;)VLineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$1; $anonymous0#Lorg/eclipse/swt/widgets/Composite; $anonymous1Ljava/lang/String; $anonymous23Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;doFillIntoGrid'(Lorg/eclipse/swt/widgets/Composite;I)V     getChangeControlE(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Button; "$#org/eclipse/swt/widgets/Button %& setEnabled(Z)V parent__p numColumns_pI SourceFile"ModelElementButtonFieldEditor.javaEnclosingMethod ./#createModelElementButtonFieldEditor"(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor; InnerClasses  Z* *+,-  J* a*+*+* !QRS '()*+,-0  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 976 Text-content-md5: 1cfec238887e94e933c992fd1ce9c4d2 Text-content-sha1: faa902f391898daa5b5897318c5fba953a55b833 Content-length: 1035 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1$Forg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$2java/lang/Object%org/eclipse/swt/events/ModifyListenerthis$0FLorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor;I(Lorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor;)VCode    ()VLineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$2; modifyText'(Lorg/eclipse/swt/events/ModifyEvent;)V Dorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor  access$0e_p$Lorg/eclipse/swt/events/ModifyEvent; SourceFile"ModelElementButtonFieldEditor.javaEnclosingMethod " addListeners InnerClasses   8 *+ * e   @*  kl !#  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3045 Text-content-md5: 0e08547202f7f7f1736c39fd497bd7d6 Text-content-sha1: 93fcb110557b1b9688e888e05898fbc783b347c4 Content-length: 3104 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1aDorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditorAorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditork(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;)VCode   `(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/SelectionDialog;)V   addListeners()VLineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor;parent_p#Lorg/eclipse/swt/widgets/Composite;label_pLjava/lang/String;dialogToOpen_p3Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;handleSelection&(Ljava/lang/Object;)Ljava/lang/String;-org/eclipse/egf/model/NamedModelElementWithId   getName()Ljava/lang/String;selectedObject_pLjava/lang/Object; modelElement/Lorg/eclipse/egf/model/NamedModelElementWithId;#createModelElementButtonFieldEditor"(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor;(Forg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$1 '* +l(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;Z)V - ./getValueControl#()Lorg/eclipse/swt/widgets/Control; 132org/eclipse/swt/widgets/Control 45setToolTipText(Ljava/lang/String;)V 7 89setPage)(Lorg/eclipse/jface/dialogs/DialogPage;)V ; <= setValidator<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V ? @AgetTextControl ()Lorg/eclipse/swt/widgets/Text; CEDorg/eclipse/swt/widgets/Text FG setEditable(Z)Vpage_p&Lorg/eclipse/jface/dialogs/DialogPage;fieldEditorLabel_pfieldEditorTooltip_pfieldEditorValidator_p9Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator; readOnly_pZ fieldEditorRForg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor$2 QT UI(Lorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor;)V CW XYaddModifyListener*(Lorg/eclipse/swt/events/ModifyListener;)Vaccess$0 \ ]refreshValidState SourceFile"ModelElementButtonFieldEditor.java InnerClasses!\ *+,-* *, -*    N +M, 45   !"#$ %&1'Y*,):,-0+6:>B* JKLMJVXZ%\.]R11HI1J1K11LM1NO"P >*>QY*SV en ZU%*[^_`'Q Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/help Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/help/IHelpContextIds.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2711 Text-content-md5: fdfb77d71b9c96c52271fa841cc816cb Text-content-sha1: 6e4011e88371cb82375e863b9e8365e9f65686bf Content-length: 2770 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 15org/eclipse/egf/core/ui/internal/help/IHelpContextIdsjava/lang/ObjectPREFIXLjava/lang/String;NEW_DOMAIN_WIZARD_PAGE NEW_CONTRACT_ELEMENT_WIZARD_PAGE%NEW_CONTRACT_ELEMENT_TYPE_WIZARD_PAGE*NEW_CONTRACT_ELEMENT_REFERENCE_WIZARD_PAGENEW_PATTERN_LIBRARY_WIZARD_PAGE*NEW_PATTERN_LIBRARY_PRODUCTION_WIZARD_PAGE'NEW_PATTERN_LIBRARY_RUNTIME_WIZARD_PAGENEW_PATTERN_WIZARD_PAGENEW_MAPPING_WIZARD_PAGE NEW_FC_CONFIGURATION_WIZARD_PAGEEDIT_FC_WIZARD_PAGENEW_TASK_FACTORY_PAGENEW_CONTEXT_ELEMENT_WIZARD_PAGE$NEW_CONTEXT_ELEMENT_TYPE_WIZARD_PAGE)NEW_CONTEXT_ELEMENT_REFERENCE_WIZARD_PAGE%NEW_CONTEXT_ELEMENT_VALUE_WIZARD_PAGE()VCodejava/lang/StringBuilder &org/eclipse/egf/core/ui/EgfUiActivator ! getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; # $% getPluginID()Ljava/lang/String; ')(java/lang/String *+valueOf&(Ljava/lang/Object;)Ljava/lang/String; - ./(Ljava/lang/String;)V 1 23append(C)Ljava/lang/StringBuilder; 5 6%toString 8 :new_domain_wizard_page < 2=-(Ljava/lang/String;)Ljava/lang/StringBuilder; ? A new_contract_element_wizard_page C E%new_contract_element_type_wizard_page G I*new_contract_element_reference_wizard_page K Mnew_pattern_library_wizard_page O Q*new_pattern_library_production_wizard_page S U'new_pattern_library_runtime_wizard_page W Ynew_pattern_wizard_page [ ]new_mapping_wizard_page _ a,new_factory_component_invocation_wizard_page c e"edit_factory_component_wizard_page g inew_task_factory_wizard_page k mnew_context_element_wizard_page o q$new_context_element_type_wizard_page s u)new_context_element_reference_wizard_page w y%new_context_element_value_wizard_page { LineNumberTableLocalVariableTable SourceFileIHelpContextIds.java     Y"&,.047Y7&,9;4>Y7&,@;4BY7&,D;4FY7&,H;4JY7&,L;4NY7&,P;4RY7&,T;4VY7&,X;4ZY7&,\;4^Y7&,`;4bY7&,d;4fY7&,h;4jY7&,l;4nY7&,p;4rY7&,t;4vY7&,x;4z|J3Kc{ !"# $#%;&S'k()}~ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/log4j Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1069 Text-content-md5: 0a8bb4b9f76e0f5b96323512a95ee2b8 Text-content-sha1: e091b7a6234dd4e6da0dcb495910c804cc7768f8 Content-length: 1128 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*?org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender$1java/lang/Objectjava/lang/Runnablethis$0?Lorg/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender; val$event_p#Lorg/apache/log4j/spi/LoggingEvent;e(Lorg/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender;Lorg/apache/log4j/spi/LoggingEvent;)VCode     ()VLineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender$1;run =org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender access$0B(Lorg/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender;)Z ! " access$1 SourceFileEclipseConsoleAppender.javaEnclosingMethod '(append&(Lorg/apache/log4j/spi/LoggingEvent;)V InnerClasses    =*+*,*  K  M*** N O QR #$%&)  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2850 Text-content-md5: 43c7a0e0357dce2afc2e8e5a8fb235a7 Text-content-sha1: e5701ae1e653ab11d60b8600e7cb062a026bad33 Content-length: 2909 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1{=org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppenderorg/apache/log4j/WriterAppender()VCode  LineNumberTableLocalVariableTablethis?Lorg/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender;2(Lorg/apache/log4j/Layout;Ljava/io/OutputStream;)V  layout_pLorg/apache/log4j/Layout;os_pLjava/io/OutputStream;,(Lorg/apache/log4j/Layout;Ljava/io/Writer;)V  writer_pLjava/io/Writer;activateOptions org/eclipse/ui/console/IOConsole SolFa Engine  !A(Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V # $%getConsoleManager*()Lorg/eclipse/ui/console/IConsoleManager;'org/eclipse/ui/console/IConsole )+*&org/eclipse/ui/console/IConsoleManager ,- addConsoles%([Lorg/eclipse/ui/console/IConsole;)V / 01newOutputStream0()Lorg/eclipse/ui/console/IOConsoleOutputStream; 3 45 createWriter4(Ljava/io/OutputStream;)Ljava/io/OutputStreamWriter; 7 89 setWriter(Ljava/io/Writer;)V solfaConsole"Lorg/eclipse/ui/console/IOConsole;append&(Lorg/apache/log4j/spi/LoggingEvent;)V ?A@org/apache/log4j/Level BCDEBUGLorg/apache/log4j/Level; EGF!org/apache/log4j/spi/LoggingEvent HIgetLevel()Lorg/apache/log4j/Level; ?K LMequals(Ljava/lang/Object;)Z OQPorg/eclipse/ui/PlatformUI RS getWorkbench()Lorg/eclipse/ui/IWorkbench; UWVorg/eclipse/ui/IWorkbench XY getDisplay#()Lorg/eclipse/swt/widgets/Display;[?org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender$1 Z] ^e(Lorg/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender;Lorg/apache/log4j/spi/LoggingEvent;)V `baorg/eclipse/swt/widgets/Display cd asyncExec(Ljava/lang/Runnable;)Vevent_p#Lorg/apache/log4j/spi/LoggingEvent; hji$org/eclipse/ui/console/ConsolePlugin kl getDefault(()Lorg/eclipse/ui/console/ConsolePlugin; h#access$0B(Lorg/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender;)Z q rscheckEntryConditions()Zaccess$1 v w= subAppend SourceFileEclipseConsoleAppender.java InnerClasses!3* %&  I*+, ./  I*+, 78  i)YL*"&Y+S(**+.26 ? @A(B ) :;<=^">+DJNTZY*+\_ J K!U " "ef$%1gm \  no%*p  t^&*+u  xyz Z Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/log4j/Log4jConfigurer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1712 Text-content-md5: 1d0988643b8f88b0a5ed163c6739ffd1 Text-content-sha1: 583d3d08296e6cef9a7cbc110fad7420230d397a Content-length: 1771 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1N6org/eclipse/egf/core/ui/internal/log4j/Log4jConfigurerjava/lang/Object+org/eclipse/egf/core/log4j/ILog4jConfigurer%LOG4J_APPENDER_ECLIPSE_CONSOLE_APPENDLjava/lang/String; ConstantValue %log4j.appender.EclipseConsoleAppender%LOG4J_APPENDER_ECLIPSE_CONSOLE_LAYOUT,log4j.appender.EclipseConsoleAppender.layout8LOG4J_APPENDER_ECLIPSE_CONSOLE_LAYOUT_CONVERSION_PATTERN>log4j.appender.EclipseConsoleAppender.layout.ConversionPattern()VCode  LineNumberTableLocalVariableTablethis8Lorg/eclipse/egf/core/ui/internal/log4j/Log4jConfigurer;handleConfiguration(Ljava/util/Properties;)V=org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender "!java/lang/Class #$getName()Ljava/lang/String; &('java/util/Properties )*put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;,org.apache.log4j.PatternLayout.%d %5p [%t] - %m%n0java/lang/StringBuilder2log4j.rootLogger &4 56get&(Ljava/lang/Object;)Ljava/lang/Object;8java/lang/String /: ;(Ljava/lang/String;)V /= >?append(C)Ljava/lang/StringBuilder;AEclipseConsoleAppender /C >D-(Ljava/lang/String;)Ljava/lang/StringBuilder; /F G$toStringlog4jConfiguration_pLjava/util/Properties; rootLoggerLjava/lang/StringBuilder; SourceFileLog4jConfigurer.java!      /* L+ %W+ +%W+-%W/Y+1379M,,< <@BW+1,E%W" $%'/(@)K* LLHI/JKLM Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/observable Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/observable/IListViewerObserver.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 336 Text-content-md5: 690379bc1b061e51889c82cfe7e37cb2 Text-content-sha1: 0760aacae9c3d355f61ec082279da741105e3a27 Content-length: 395 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 ?org/eclipse/egf/core/ui/internal/observable/IListViewerObserverjava/lang/Object elementAdded(Ljava/util/List;)V Signature'(Ljava/util/List;)VelementRemovedelementUpdated SourceFileIListViewerObserver.java    Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/validators Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/validators/PatternElementValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2598 Text-content-md5: 62d11cab7bcecaad1790ef34487f989b Text-content-sha1: 96cd46939c7eeb801bb57046a37d01c2e74770e5 Content-length: 2657 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1kCorg/eclipse/egf/core/ui/internal/validators/PatternElementValidatorDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator_parent/Lorg/eclipse/egf/model/NamedModelElementWithId;_pattern.Lorg/eclipse/egf/model/AbstractPatternElement;r(Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/model/AbstractPatternElement;Ljava/lang/String;)VCode  (Ljava/lang/String;)V    LineNumberTableLocalVariableTablethisELorg/eclipse/egf/core/ui/internal/validators/PatternElementValidator;parent_p pattern_perrorMessage_pLjava/lang/String;isValid&(Ljava/lang/Object;)Ljava/lang/String;   java/lang/String"$org/eclipse/egf/model/PatternLibrary !$ %&getPatternElements%()Lorg/eclipse/emf/common/util/EList; (*)!org/eclipse/emf/common/util/EList +,iterator()Ljava/util/Iterator;.&org/eclipse/egf/model/PatternViewpoint -0 1& getLibraries 354java/util/Iterator 67next()Ljava/lang/Object;9,org/eclipse/egf/model/AbstractPatternElement ;=<java/lang/Object >?getClass()Ljava/lang/Class; 8A BCgetName()Ljava/lang/String; E FGequals(Ljava/lang/Object;)Z IKJ'org/eclipse/egf/core/ui/wizard/Messages L*PatternElementValidator_Sibling_EndMessage N OPformatErrorMessage8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 3R SThasNext()Zvalue_pLjava/lang/Object; errorMessagenamesiblingElementsLjava/util/Iterator;currentPatternLocalVariableTypeTableELjava/util/Iterator<+Lorg/eclipse/egf/model/AbstractPatternElement;>; I_ `6PatternElementValidator_Name_Already_Used_ErrorMessage bdc4org/eclipse/egf/common/ui/helper/MessageFormatHelper ef formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;alreadyUsedName_pmessageEndPart_p SourceFilePatternElementValidator.java!  d*- *+*,,- ./* Y*+M,,+N*:*!*!#': *-*-/':O>28:*)*::@-D *-HMMQ,,F67 8 ;<>@%A;BECXE]G`HlIJGO>UVWXYZl/[\ Y]OP a^N-Y+SY,Sa YZ*ghWij Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1083 Text-content-md5: cd69c81cfcc697ce5fccba5af5d9613a Text-content-sha1: 364e0363b69c559607d5eb5495f7d3b489a477b4 Content-length: 1142 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)Oorg/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidatorDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisQLorg/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidator;errorMessage_pLjava/lang/String;&handleReferencedFactoryComponentChangeisValid&(Ljava/lang/Object;)Ljava/lang/String;  java/lang/String 2org/eclipse/egf/core/ui/internal/data/UIDataHelper getFactoryComponentIdFor&(Ljava/lang/String;)Ljava/lang/String;    !"getErrorMessage()Ljava/lang/String;value_pLjava/lang/Object;resultreferencedFactoryComponentId SourceFile(ReferencedFactoryComponentValidator.java!>*+   "*+M,+N*--*M, +- /023 6 *" "#$%&'( Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/AbstractObservableContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2257 Text-content-md5: c602a71f0da241da72bcb6535de86763 Text-content-sha1: fbfa55ee43d6eb6ffd939538ff7de44fb1828bb2 Content-length: 2316 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1QJorg/eclipse/egf/core/ui/internal/viewers/AbstractObservableContentProviderKorg/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProvider_listViewerObserversLjava/util/List; SignatureSLjava/util/List;()VCode  java/util/ArrayList  (I)V  LineNumberTableLocalVariableTablethisLLorg/eclipse/egf/core/ui/internal/viewers/AbstractObservableContentProvider;addListViewerObserverD(Lorg/eclipse/egf/core/ui/internal/observable/IListViewerObserver;)V java/util/List  add(Ljava/lang/Object;)ZlistViewerObserver_pALorg/eclipse/egf/core/ui/internal/observable/IListViewerObserver;removeListViewerObserver % & removenotifyElementAdded(Ljava/util/List;)V'(Ljava/util/List;)V + ,-iterator()Ljava/util/Iterator; /10java/util/Iterator 23next()Ljava/lang/Object;5?org/eclipse/egf/core/ui/internal/observable/IListViewerObserver 47 8( elementAdded /: ;<hasNext()ZaddedElements_pobserverLocalVariableTypeTable$Ljava/util/List;notifyElementRemoved 4C D(elementRemovedremovedElements_pnotifyElementUpdated 4H I(elementUpdatedupdatedElements_pdispose M N clear SourceFile&AbstractObservableContentProvider.java!  C* *Y !  D *+W ( )  !"# D *+$W 0 1  !"'() (**N-.4M,+6-99:9'< ((=>"? (=@A() (**N-.4M,+B-9DED'G ((E>"? (E@F() (**N-.4M,+G-9OPO'R ((J>"? (J@K  8 *L Y Z  OP Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/BasicLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1751 Text-content-md5: 4ca6d0155f3c3dc4d4fb29c71e7c6b63 Text-content-sha1: fba4dfeb40c79781816dbc0515eb154f08d31927 Content-length: 1810 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1C;org/eclipse/egf/core/ui/internal/viewers/BasicLabelProvider'org/eclipse/jface/viewers/LabelProvider_adaptedLabelProvider*Lorg/eclipse/jface/viewers/ILabelProvider;()VCode   @org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProvider &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getEditingDomainInReadOnly;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory;   1(Lorg/eclipse/emf/common/notify/AdapterFactory;)V " LineNumberTableLocalVariableTablethis=Lorg/eclipse/egf/core/ui/internal/viewers/BasicLabelProvider;getText&(Ljava/lang/Object;)Ljava/lang/String;*-org/eclipse/egf/model/NamedModelElementWithId ,.-(org/eclipse/jface/viewers/ILabelProvider '(09org/eclipse/egf/core/ui/internal/data/AbstractUiContainer /2 '3()Ljava/lang/String; element_pLjava/lang/Object;resultLjava/lang/String;getImage4(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image; ,; 89 /= 8>"()Lorg/eclipse/swt/graphics/Image; ; Lorg/eclipse/swt/graphics/Image; SourceFileBasicLabelProvider.java! K* * Y!##$%$ %&'( z(M+)*!++M+/ +/1M,#,- ./0&2$ (%&(45&6789 1M+)*!+:M+/+/)@/B$ 1%&145/6@AB Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/CustomTooltipLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1097 Text-content-md5: a32d6cd43563f33ace51c0cbb5096fa4 Text-content-sha1: f5f3ed7ec63c1ce01eafd10541f31642b65ec6be Content-length: 1156 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1%Corg/eclipse/egf/core/ui/internal/viewers/CustomTooltipLabelProvider>org/eclipse/egf/common/ui/viewers/AbstractTooltipLabelProvider-(Lorg/eclipse/jface/viewers/ILabelProvider;)VCode  LineNumberTableLocalVariableTablethisELorg/eclipse/egf/core/ui/internal/viewers/CustomTooltipLabelProvider;labelProvider_p*Lorg/eclipse/jface/viewers/ILabelProvider;getToolTipText&(Ljava/lang/Object;)Ljava/lang/String;-org/eclipse/egf/model/NamedModelElementWithId +org/eclipse/egf/core/data/helper/DataHelper getDescriptionC(Lorg/eclipse/egf/model/NamedModelElementWithId;)Ljava/lang/String; 1org/eclipse/egf/core/ui/internal/viewers/Messages +CustomTooltipLabelProvider_No_Tooltip_TitleLjava/lang/String; element_pLjava/lang/Object;result SourceFileCustomTooltipLabelProvider.java!>*+   gM+ +M, , '( )+   !"#$ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/DecoratedModelLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1914 Text-content-md5: 0090ace210a36b7a944313018be75609 Text-content-sha1: ed55464ee7643ba28e4174ada89638330f1814ed Content-length: 1973 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1FDorg/eclipse/egf/core/ui/internal/viewers/DecoratedModelLabelProviderjava/lang/Object(org/eclipse/jface/viewers/ILabelProvider_decoratingLabelProvider3Lorg/eclipse/jface/viewers/DecoratingLabelProvider;()VCode  1org/eclipse/jface/viewers/DecoratingLabelProvider;org/eclipse/egf/core/ui/internal/viewers/BasicLabelProvider  org/eclipse/ui/PlatformUI  getWorkbench()Lorg/eclipse/ui/IWorkbench; org/eclipse/ui/IWorkbench getDecoratorManager$()Lorg/eclipse/ui/IDecoratorManager;  !X(Lorg/eclipse/jface/viewers/ILabelProvider;Lorg/eclipse/jface/viewers/ILabelDecorator;)V # LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/internal/viewers/DecoratedModelLabelProvider;getImage4(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image; + () element_pLjava/lang/Object;getText&(Ljava/lang/Object;)Ljava/lang/String; 1 ./ addListener5(Lorg/eclipse/jface/viewers/ILabelProviderListener;)V 5 23 listener_p2Lorg/eclipse/jface/viewers/ILabelProviderListener;dispose : 8 isLabelProperty'(Ljava/lang/Object;Ljava/lang/String;)Z > ;< property_pLjava/lang/String;removeListener C A3 SourceFile DecoratedModelLabelProvider.java!  Q* *YY"$#$%% &'() = *"+*$+% &' ,-./ = *"+0$2% &' ,-23 A *"+4$ 9:% &' 678  6*"9$ @A% &';< H *"+,=$G%  &' ,- ?@A3 A *"+B$ NO% &' 67DE Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 661 Text-content-md5: ea0434293a35d46af3cce8cbbcb6eb22 Text-content-sha1: f2a1fed6f36a0ac19dfad6363428ace71d83c580 Content-length: 720 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 11org/eclipse/egf/core/ui/internal/viewers/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue 1org.eclipse.egf.core.ui.internal.viewers.messages+CustomTooltipLabelProvider_No_Tooltip_Title()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable   this3Lorg/eclipse/egf/core/ui/internal/viewers/Messages; SourceFile Messages.java!   ,   3*  "  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/ObservableArrayContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2179 Text-content-md5: bc2db85be3e3d3133916de0f23dbbf94 Text-content-sha1: c0e59a1236a16ff4edb5dfa803c8a857dc69ce41 Content-length: 2238 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1IGorg/eclipse/egf/core/ui/internal/viewers/ObservableArrayContentProviderJorg/eclipse/egf/core/ui/internal/viewers/AbstractObservableContentProvider()VCode  LineNumberTableLocalVariableTablethisILorg/eclipse/egf/core/ui/internal/viewers/ObservableArrayContentProvider; getElements'(Ljava/lang/Object;)[Ljava/lang/Object;[Ljava/lang/Object;inputElement_pLjava/lang/Object;resulthandleElementUpdatedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V,org/eclipse/jface/viewers/AbstractListViewer  refresh(Ljava/lang/Object;)V  java/util/Arrays !"asList%([Ljava/lang/Object;)Ljava/util/List; $ %&notifyElementUpdated(Ljava/util/List;)Vviewer_p"Lorg/eclipse/jface/viewers/Viewer; oldInput_p newInput_pelementselementhandleElementAdded7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)V 0 1add 3 4&notifyElementAddedaddedElements_phandleElementRemoved 8 9remove ; <&notifyElementRemovedremoveElements_p handleViewer%(Lorg/eclipse/jface/viewers/Viewer;)VA"java/lang/IllegalArgumentExceptionC/Viewer must be an instanceof AbstractListViewer @E F(Ljava/lang/String;)V SourceFile#ObservableArrayContentProvider.java!/*   ]M++M,  "   ?-:-:Y:662:+*# ,- ."/+.52>4 >? ?'(?)?* 1+" ,-.<,7,N-Y:662:+/*-2 => ? @)?3C;E 4< <'(<5 /+ ,6.<,7,N-Y:662:+7*-: NO P Q)P3T;V 4< <'(<= /+ ,>?N+ @YBD ]^`  '(GH Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/ObservablePatternElementContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2942 Text-content-md5: 7440ca3876c69a552a17331a62559960 Text-content-sha1: 10465446b1072158bc9cdf5a0a7e324620edd4a2 Content-length: 3001 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1rPorg/eclipse/egf/core/ui/internal/viewers/ObservablePatternElementContentProviderJorg/eclipse/egf/core/ui/internal/viewers/AbstractObservableContentProvider9org/eclipse/egf/common/ui/viewers/IOrderedContentProvider _initialInputLjava/util/List; Signature$Ljava/util/List;_viewer"Lorg/eclipse/jface/viewers/Viewer;()VCode  LineNumberTableLocalVariableTablethisRLorg/eclipse/egf/core/ui/internal/viewers/ObservablePatternElementContentProvider; handleViewer%(Lorg/eclipse/jface/viewers/Viewer;)V  viewer_phandleElementAdded7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)Vjava/util/List   " #$add(Ljava/lang/Object;)Z&-org/eclipse/jface/viewers/AbstractTableViewer %( #)(Ljava/lang/Object;)V + ,updateOrchestrationaddedElements_pLjava/lang/Object;abstractListViewer/Lorg/eclipse/jface/viewers/AbstractTableViewer;handleElementRemoved 3 4$remove %6 4)removedElement_pviewer:java/util/ArrayList 9< =(Ljava/util/Collection;)V ? @AnotifyElementUpdated(Ljava/util/List;)VhandleElementUpdatedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)VE*org/eclipse/jface/viewers/StructuredViewer DG H)refresh JLKjava/util/Collections MN singletonList$(Ljava/lang/Object;)Ljava/util/List; oldInput_p newInput_p getElements'(Ljava/lang/Object;)[Ljava/lang/Object;T[Ljava/lang/Object; V WXtoArray()[Ljava/lang/Object; Z\[5org/eclipse/egf/common/ui/constant/IUiCommonConstants ]T NO_ELEMENTinputElement_presultswap(II)V Jc `d(Ljava/util/List;II)V f gh getViewer$()Lorg/eclipse/jface/viewers/Viewer; jlk org/eclipse/jface/viewers/Viewer HelementPosition1_pIelementPosition2_p SourceFile,ObservablePatternElementContentProvider.java!    /* I **++, .   ,,*,*,!W+%N-,'**79<>"?'@+B*,, ,-." /01#*,*,2W+%N-,5**LM PRSU"V*## #7. 80,>*9Y*;> \] BCa+D,F*,I>egh* O.P.QRmSM**UMYM,no prt ^._T`a_*b*ei**{ }~ mnongh/* pq Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4884 Text-content-md5: d6fe73e53e3d8de4158b0a8a8f544144 Text-content-sha1: 58f2d7d96244c4e95b91fc75f2469f56610efd0b Content-length: 4943 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1[org/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProviderJorg/eclipse/egf/core/ui/internal/viewers/AbstractObservableContentProvider.org/eclipse/jface/viewers/ITreeContentProvider _initialInputMLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;()VCode  LineNumberTableLocalVariableTablethis]Lorg/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProvider;handleElementAdded7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)V[Ljava/lang/Object;java/util/ArrayList  (I)V,org/eclipse/jface/viewers/AbstractTreeViewer%org/eclipse/egf/model/ContractElement "!java/util/List #$add(Ljava/lang/Object;)Z &('-org/eclipse/egf/model/data/helper/ModelHelper )*getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; ,  .0/Korg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer 12getUiReferencedFactoryComponentn(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent;4Borg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent 36 7x(Lorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;Lorg/eclipse/egf/model/FactoryComponent;)V .9 :$addChild < #='(Ljava/lang/Object;Ljava/lang/Object;)V 39 @ ABnotifyElementAdded(Ljava/util/List;)VD'org/eclipse/jface/viewers/TreeSelectionF"org/eclipse/jface/viewers/TreePath H IJtoArray()[Ljava/lang/Object; EL M([Ljava/lang/Object;)V CO P'(Lorg/eclipse/jface/viewers/TreePath;)V R ST setSelection*(Lorg/eclipse/jface/viewers/ISelection;Z)Vviewer_p"Lorg/eclipse/jface/viewers/Viewer;addedElements_pLjava/lang/Object;addedContractElementsLjava/util/List;abstractTreeViewer.Lorg/eclipse/jface/viewers/AbstractTreeViewer;treePathElementselementcontractElement'Lorg/eclipse/egf/model/ContractElement;fc(Lorg/eclipse/egf/model/FactoryComponent;uiReferencedFcDLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent;LocalVariableTypeTable$Ljava/util/List;handleElementRemoved 3i j$ removeChild 3l mnisEmpty()Z .i q rsremove(Ljava/lang/Object;)V u vBnotifyElementRemovedremovedElements_premovedContractElementstreeModelElementToRemovehandleElementUpdatedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V oldInput_p newInput_p handleViewer%(Lorg/eclipse/jface/viewers/Viewer;)V"java/lang/IllegalArgumentException/Viewer must be an instanceof AbstractTreeViewer (Ljava/lang/String;)V getElements'(Ljava/lang/Object;)[Ljava/lang/Object;   getChildreninputElement_p9org/eclipse/egf/core/ui/internal/data/AbstractUiContainer JparentElement_presult getParent&(Ljava/lang/Object;)Ljava/lang/Object;&org/eclipse/egf/model/FactoryComponent element_p hasChildrenchildrenZ SourceFile7ObservableReferencedContractElementContentProvider.java!   /* "   ,ػYN+:Y:,Y: 66 2:s: - W %: *+ -:  '3Y*+ 5: *+ 8W*+ ; >W ; WWz*-?CYEYGKNQ,. *,.+b./13 476?7F8O:V<a>f@uBDFHJK4OQRTVf UVWXYZ[\ ]Z7x^XFi_` VYab aNcd eYf ]fg } ,YN,Y:66q2:_:-W%: *+ -: +: :  / hW k*+ oW : :   p*-tR_`a'c/d6e?gFiQkWmZn_ogqosyux{af UVwXxZ'd^X6U_`FEab Q:cd W4[\ Z1yX e xfz{ I*UV|X}X~ N+ YUV :*+X `M+ +M,  X t"M++%M+*+M,   ""X X$ b*+M,>*X  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7182 Text-content-md5: dc3ad246d650d8bdece553ee2b58b23a Text-content-sha1: 765b6944842f26a43963a461e7934f2894a55c3b Content-length: 7241 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1\org/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProviderKorg/eclipse/egf/common/ui/toolkit/viewers/AbstractStructuredContentProvider.org/eclipse/jface/viewers/ITreeContentProvider _initialInputLjava/lang/Object;_removedContractElementsLjava/util/Set; Signature8Ljava/util/Set;(Ljava/util/Collection;)VB(Ljava/util/Collection;)VCode  ()Vjava/util/HashSet    LineNumberTableLocalVariableTablethis^Lorg/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProvider;removedContractElements_pLjava/util/Collection;LocalVariableTypeTable?Ljava/util/Collection;%getPossibleReferencedContractElementsO(Lorg/eclipse/egf/model/FactoryComponent;Ljava/util/Set;)Ljava/util/Collection;(Lorg/eclipse/egf/model/FactoryComponent;Ljava/util/Set;)Ljava/util/Collection; &('+org/eclipse/egf/core/data/helper/DataHelper )*$getPossibleReferencedContractElement@(Lorg/eclipse/egf/model/FactoryComponent;)Ljava/util/Collection; ,.-java/util/Collection /0 removeAll(Ljava/util/Collection;)Zfc_p(Lorg/eclipse/egf/model/FactoryComponent;filteredContractElements_p"possibleReferencedContractElements getChildren'(Ljava/lang/Object;)[Ljava/lang/Object;8[Ljava/lang/Object;:&org/eclipse/egf/model/FactoryComponent < "# ,> ?@size()IB%org/eclipse/egf/model/ContractElement ,D EFtoArray(([Ljava/lang/Object;)[Ljava/lang/Object;Horg/eclipse/egf/model/Contract J KLhandleContractAsInitialInput5(Lorg/eclipse/egf/model/Contract;)[Ljava/lang/Object;Norg/eclipse/egf/model/Context P QRhandleContextAsInitialInput4(Lorg/eclipse/egf/model/Context;)[Ljava/lang/Object;parentElement_presult VXW-org/eclipse/egf/model/data/helper/ModelHelper YZgetFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; M\ ]^ eContainer!()Lorg/eclipse/emf/ecore/EObject;`5org/eclipse/egf/model/AbstractFactoryComponentFactoryb0org/eclipse/egf/model/FactoryComponentInvocation &d e* getReferencedFactoryComponentsBy gih"org/eclipse/egf/core/CoreActivator jk getDefault&()Lorg/eclipse/egf/core/CoreActivator; am nogetFactoryComponentId()Ljava/lang/String; gq rsgetFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; uwvjava/util/Collections xy singletonList$(Ljava/lang/Object;)Ljava/util/List; ,{ |0 retainAll~$org/eclipse/egf/model/ProductionPlanjava/util/ArrayList  (I)V , add(Ljava/lang/Object;)Z  filterReferencedFcs context_pLorg/eclipse/egf/model/Context; fcContainercontextContainer7Lorg/eclipse/egf/model/AbstractFactoryComponentFactory; referencedFcs fcInvocation2Lorg/eclipse/egf/model/FactoryComponentInvocation; referencedFc@Ljava/util/Collection; contract_p Lorg/eclipse/egf/model/Contract;C(Ljava/util/Collection;)V , iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object; , isEmpty()Z remove hasNextreferencedFcs_p filteredFcsLjava/util/Iterator; currentFc>Ljava/util/Iterator; getParent&(Ljava/lang/Object;)Ljava/lang/Object;   element_p hasChildren  56childrenZ getElementsinputElement_pdisposehandleElementUpdatedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)Vviewer_p"Lorg/eclipse/jface/viewers/Viewer; oldInput_p newInput_phandleElementAdded7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)V,org/eclipse/jface/viewers/AbstractTreeViewer  '(Ljava/lang/Object;Ljava/lang/Object;)V  java/util/Set addedElements_pcontractElementabstractTreeViewer.Lorg/eclipse/jface/viewers/AbstractTreeViewer;fcParenthandleElementRemoved (Ljava/lang/Object;)V removedElements_premovedElementsremovedElementremovedContractElement'Lorg/eclipse/egf/model/ContractElement; handleViewer%(Lorg/eclipse/jface/viewers/Viewer;)V"java/lang/IllegalArgumentException/Viewer must be an instanceof AbstractTreeViewer (Ljava/lang/String;)V SourceFile8PossibleContractElementReferenceTreeContentProvider.java!     _**Y+567 !"# $~+%N-*+W-@BC*123  4 3  4!56Q7M+9#*+9*;N--=ACM&+G*+GIM+M *+MOM,& JL MN,O3P?QFROT*QQSLT84 4!QR;7M+UN+[_::a/-c:a:flp:tzW}Y:-W*=9CM,>]^ `ac e&h-j<lLmTp^qgtmuvR|T8 w2li-<2 iKL+UcN*---=9CM, *T8  9+M(,9N*-*;: ,,ձ" )/8499224 924!t"M+A+AUM+9*M,   "" Tb*+M,>* 8T6:*++ I* p,7X,7Y:66>2N-A.+:*-:*-*-W,G ,M*,2 $*1<DO\jo>ppp2*%1; {,7v,7N+:-Y:66W2:AEA: * W* 9: * *;:    ׄ: &.5<HS_ipz\ {{{ n8h&J5; S2 _4 _4! N+ƚ Y濱   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/internal/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 629 Text-content-md5: 4038899a85197b8369d61f9f6ea5f8af Text-content-sha1: 09a673aa13efd6e595be1b8a50b316678e901733 Content-length: 639 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### CustomTooltipLabelProvider_No_Tooltip_Title=No tooltip available Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 766 Text-content-md5: 81c8083538704a5b02d31eef295ccf5a Text-content-sha1: 814d6be6a76707dc322a85e2e33c86e6f2e7744d Content-length: 776 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### PatternOverviewPage_PatternNameErrorMessage=Should only use the [a-zA-Z_0-9] set of characters and\n must start with a non-digit character. PatternOverviewPage_PatternNameRegularExpression=[a-zA-Z]+\\w* Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/AbstractPreferencePage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1875 Text-content-md5: e9d111763a00b6c72885174a50fb6cb7 Text-content-sha1: 36d4d04bf2dc8fdcf42509443c20b51bb693f532 Content-length: 1934 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Y:org/eclipse/egf/core/ui/preferences/AbstractPreferencePage6org/eclipse/jface/preference/FieldEditorPreferencePage'org/eclipse/ui/IWorkbenchPreferencePage()VCode   (I)V &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore;  setPreferenceStore2(Lorg/eclipse/jface/preference/IPreferenceStore;)V   getPageTitle()Ljava/lang/String;  !"setTitle(Ljava/lang/String;)V $ %getPageDescription ' ("setDescriptionLineNumberTableLocalVariableTablethis ?@getShell!()Lorg/eclipse/swt/widgets/Shell; BDC,org/eclipse/egf/core/ui/preferences/Messages EF)AbstractDefaultPreferencePage_SavingErrorLjava/lang/String; HJIjava/io/IOException K getMessage MON'org/eclipse/jface/dialogs/MessageDialog PQ openErrorF(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;)VokZstoreeLjava/io/IOException; SourceFileAbstractPreferencePage.java! j"* L*+****#&)!" #$%!&*"+, -./0 5)-*+,12%34 0*5<*7M,8 ,8:N*=A-GLH)"@A BDEF,G.J**0+,+RS &T.UVWX Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/EgfGeneralPreferencePage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 831 Text-content-md5: b9eb1fb1e91821cb3c30e660e09220b1 Text-content-sha1: faac88de0526018aba1df964aa5c65771da4e054 Content-length: 890 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1()VCode  LineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/core/ui/preferences/EgfGeneralPreferencePage;getPageDescription()Ljava/lang/String; ,org/eclipse/egf/core/ui/preferences/Messages $EgfGeneralPreferencePage_DescriptionLjava/lang/String; getPageTitle  EgfGeneralPreferencePage_TitlecreateFieldEditors SourceFileEgfGeneralPreferencePage.java!/*   .   .   + (   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/IPreferenceConstants.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 950 Text-content-md5: d505fff279c86768aa70336403f5e5b2 Text-content-sha1: 223ee263ed4e3b99c3cd4d8aafaea92b854c79a3 Content-length: 1009 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 108org/eclipse/egf/core/ui/preferences/IPreferenceConstantsjava/lang/ObjectDOMAIN_EDITOR_IDLjava/lang/String; ConstantValue Domain_Editor_IdECORE_EDITOR_ID 0org.eclipse.emf.ecore.presentation.EcoreEditorIDGRAPHICAL_ECORE_EDITOR_ID()VCode java/lang/Boolean  FALSELjava/lang/Boolean; " #$toString()Ljava/lang/String; &  ( ) TRUE + LineNumberTableLocalVariableTable SourceFileIPreferenceConstants.java   ;!%'!*,% )-./ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1488 Text-content-md5: a7c36128a8145cbbb879b301a6b97a2b Text-content-sha1: ac6240f0c3a42bcc4232e139b90abde0173ece60 Content-length: 1547 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1,,org/eclipse/egf/core/ui/preferences/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue ,org.eclipse.egf.core.ui.preferences.messages)AbstractDefaultPreferencePage_SavingErrorEgfGeneralPreferencePage_Title$EgfGeneralPreferencePage_DescriptionDomainPreferencePage_Title DomainPreferencePage_Description'DomainPreferencePage_EditorChoice_Title&DomainPreferencePage_EcoreEditor_Title/DomainPreferencePage_GraphicalEcoreEditor_Title*FactoryComponentPreferencePage_Description$FactoryComponentPreferencePage_Title=FactoryComponentPreferencePage_ExecuteWithPreValidation_Title3FactoryComponentPage_ExecuteWithoutValidation_Title&FactoryComponentPage_FcExecution_Title!PatternPreferencePage_DescriptionPatternPreferencePage_Title4PatternPreferencePage_ExecuteWithPreValidation_Title*PatternPage_ExecuteWithoutValidation_TitlePatternPage_Execution_Title()VCode  !"initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable ' %this.Lorg/eclipse/egf/core/ui/preferences/Messages; SourceFile Messages.java!                  ,# 6$%3*&# <>$ ()*+ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/domain Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/domain/DomainPreferencePage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1730 Text-content-md5: 11e64c43f8d860756356aa2e228cc139 Text-content-sha1: dccdd597c4c117c2421c99906326bb9fc1834d1b Content-length: 1789 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1A?org/eclipse/egf/core/ui/preferences/domain/DomainPreferencePage:org/eclipse/egf/core/ui/preferences/AbstractPreferencePage()VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/preferences/domain/DomainPreferencePage;getPageDescription()Ljava/lang/String; ,org/eclipse/egf/core/ui/preferences/Messages  DomainPreferencePage_DescriptionLjava/lang/String; getPageTitle  DomainPreferencePage_TitlecreateFieldEditors[Ljava/lang/String;java/lang/String  !&DomainPreferencePage_EcoreEditor_Title#0org.eclipse.emf.ecore.presentation.EcoreEditorID % &/DomainPreferencePage_GraphicalEcoreEditor_Title(?@ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/fc/FactoryComponentPreferencePage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1825 Text-content-md5: ba7c1b5bd5e7c303fde2456eb0fb1886 Text-content-sha1: 70c3b8685d5b06a9c1f42f23d6cce932eca09450 Content-length: 1884 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1EEorg/eclipse/egf/core/ui/preferences/fc/FactoryComponentPreferencePage:org/eclipse/egf/core/ui/preferences/AbstractPreferencePage()VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/core/ui/preferences/fc/FactoryComponentPreferencePage;getPageDescription()Ljava/lang/String; ,org/eclipse/egf/core/ui/preferences/Messages *FactoryComponentPreferencePage_DescriptionLjava/lang/String; getPageTitle  $FactoryComponentPreferencePage_TitlecreateFieldEditors[Ljava/lang/String;java/lang/String  !=FactoryComponentPreferencePage_ExecuteWithPreValidation_Title #%$8org/eclipse/egf/core/ui/preferences/IPreferenceConstants &EXECUTION_WITH_PRE_VALIDATION ( )3FactoryComponentPage_ExecuteWithoutValidation_Title #+ ,EXECUTION_WITHOUT_VALIDATION.2org/eclipse/jface/preference/RadioGroupFieldEditor0FactoryComponent_Execution_Mode 2 3&FactoryComponentPage_FcExecution_Title 5 67getFieldEditorParent%()Lorg/eclipse/swt/widgets/Composite; -9 :`(Ljava/lang/String;Ljava/lang/String;I[[Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Z)V < =>addField-(Lorg/eclipse/jface/preference/FieldEditor;)Vchoices[[Ljava/lang/String;positionRadioGroup4Lorg/eclipse/jface/preference/RadioGroupFieldEditor; SourceFile#FactoryComponentPreferencePage.java!/*   .   . %  EYYSY"SSYY'SY*SSL-Y/1+*48M*,; * /0*.+21364;2>1?5D7 E +?@?ABCD Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 1753 Text-content-md5: 4e113cc917b6bc55efac11bf1b05e718 Text-content-sha1: e0cb7ce720c1b7e66f68a8156a4f6b457bbfb9a2 Content-length: 1763 PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # Common preference page. AbstractDefaultPreferencePage_SavingError=Error when saving preferences on disk. # SolFa general preference page. EgfGeneralPreferencePage_Title=EGF EgfGeneralPreferencePage_Description=Preferences related to Eclipse Generation Factories concepts. DomainPreferencePage_Title=Domain DomainPreferencePage_Description=Preferences related to the Domain concept. DomainPreferencePage_EditorChoice_Title=Available Domain editors DomainPreferencePage_EcoreEditor_Title=Classic EMF editor DomainPreferencePage_GraphicalEcoreEditor_Title=Graphical Ecore editor (only available for domain located in workspace) FactoryComponentPreferencePage_Description=Preferences related to the Factory Component concept. FactoryComponentPreferencePage_Title=Factory Component FactoryComponentPreferencePage_ExecuteWithPreValidation_Title=Validated FC FactoryComponentPage_ExecuteWithoutValidation_Title=Unverified FC FactoryComponentPage_FcExecution_Title=Factory Component execution mode # Pattern preference page. PatternPreferencePage_Description=Preferences related to the Pattern concept. PatternPreferencePage_Title=Pattern PatternPreferencePage_ExecuteWithPreValidation_Title=Validated Pattern PatternPage_ExecuteWithoutValidation_Title=Unverified Pattern PatternPage_Execution_Title=Pattern execution mode Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/preferences/pattern/PatternPreferencePage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1752 Text-content-md5: 8284ad5240bb9463fc7acb725b473852 Text-content-sha1: b36171f942eab10151cdc6ee0ca96a8c9e4d7ffb Content-length: 1811 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1EAorg/eclipse/egf/core/ui/preferences/pattern/PatternPreferencePage:org/eclipse/egf/core/ui/preferences/AbstractPreferencePage()VCode  LineNumberTableLocalVariableTablethisCLorg/eclipse/egf/core/ui/preferences/pattern/PatternPreferencePage;getPageDescription()Ljava/lang/String; ,org/eclipse/egf/core/ui/preferences/Messages !PatternPreferencePage_DescriptionLjava/lang/String; getPageTitle  PatternPreferencePage_TitlecreateFieldEditors[Ljava/lang/String;java/lang/String  !4PatternPreferencePage_ExecuteWithPreValidation_Title #%$8org/eclipse/egf/core/ui/preferences/IPreferenceConstants &EXECUTION_WITH_PRE_VALIDATION ( )*PatternPage_ExecuteWithoutValidation_Title #+ ,EXECUTION_WITHOUT_VALIDATION.2org/eclipse/jface/preference/RadioGroupFieldEditor0Pattern_Execution_Mode 2 3PatternPage_Execution_Title 5 67getFieldEditorParent%()Lorg/eclipse/swt/widgets/Composite; -9 :`(Ljava/lang/String;Ljava/lang/String;I[[Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;Z)V < =>addField-(Lorg/eclipse/jface/preference/FieldEditor;)Vchoices[[Ljava/lang/String;positionRadioGroup4Lorg/eclipse/jface/preference/RadioGroupFieldEditor; SourceFilePatternPreferencePage.java!/*   .   . %  EYYSY"SSYY'SY*SSL-Y/1+*48M*,; * /01*.+344;3>2?5D6 E +?@?ABCD Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/AbstractAdaptedModelElementContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3124 Text-content-md5: db3a033e934514825e47b40a28c26bcf Text-content-sha1: 04fe0896e552f700e8b4bd258c4ca514bb04fc96 Content-length: 3183 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1cJorg/eclipse/egf/core/ui/viewers/AbstractAdaptedModelElementContentProviderjava/lang/Object.org/eclipse/jface/viewers/ITreeContentProvider_adapterFactoryContentProvider@Lorg/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider;_viewer.Lorg/eclipse/jface/viewers/AbstractTreeViewer; _initialInputLjava/lang/Object;()VCode  >org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider  getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory;  1(Lorg/eclipse/emf/common/notify/AdapterFactory;)V  LineNumberTableLocalVariableTablethisLLorg/eclipse/egf/core/ui/viewers/AbstractAdaptedModelElementContentProvider; getAdapterFactoryContentProviderB()Lorg/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider; getChildren'(Ljava/lang/Object;)[Ljava/lang/Object; &('5org/eclipse/egf/common/ui/constant/IUiCommonConstants )* NO_ELEMENT[Ljava/lang/Object;,-org/eclipse/egf/model/NamedModelElementWithId . #$ 0212org/eclipse/egf/core/ui/data/ElementAdapterFactory 34getWorkbenchAdapter<(Ljava/lang/Object;)Lorg/eclipse/ui/model/IWorkbenchAdapter; 6.7&org/eclipse/ui/model/IWorkbenchAdapterparentElement_pelementsadapter(Lorg/eclipse/ui/model/IWorkbenchAdapter; getParent&(Ljava/lang/Object;)Ljava/lang/Object; ? <= 6? element_pparent hasChildren(Ljava/lang/Object;)Z F CDZ getElements J H$inputElement_pdispose N L inputChangedI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)V R T,org/eclipse/jface/viewers/AbstractTreeViewer V X OPviewer_p"Lorg/eclipse/jface/viewers/Viewer; oldInput_p newInput_p getViewer0()Lorg/eclipse/jface/viewers/AbstractTreeViewer;getInitialInput()Ljava/lang/Object; SourceFile/AbstractAdaptedModelElementContentProvider.java!   F**Y*/12  !"/*?  #$*%M++*+-M+/N- -+5M,FH ILM N(Q** *8 &9* :;<=(M++*+>M+/N- -+@M,XZ [^_`&c*( (A &B  :;CD1=++*+E=+/N--+5=jl mpqr/u*1 1A /CG:;H$*%M++*+IM+/N- -+5M,|~  (** *K &9* :;L6*M   OP3*Q*+SQ*-U,*U -*-U*+,-W#(2*3 3YZ3[ 3\ ]^/*Q  _`/*U  ab Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3286 Text-content-md5: b2e5bca8332bfdbe557de70d15db62d5 Text-content-sha1: dd8f5d852381f5e55fed37214a364a8df3fdb0dc Content-length: 3345 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1w@org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProviderjava/lang/Object(org/eclipse/jface/viewers/ILabelProvider-org/eclipse/ui/navigator/IDescriptionProvider_adapterFactoryLabelProvider>Lorg/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider;1(Lorg/eclipse/emf/common/notify/AdapterFactory;)VCode  ()V,@5D477895:;<='>?@A )BM+*+DM+#N- -+FM,LN ORST'W*))89&IJ <=KA -M+%+LM,,Q V\M,  `M,^_ `ac"e+h --89+cJde A *+f op  hij 6*k vw mn H *+,o}   89 qJre A *+s   hiuv Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/DefaultPatternStructureLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2044 Text-content-md5: 7a13e29901813ba3c86ad9409ec83615 Text-content-sha1: 19b89f40a1e7127932840bfa9292b6d478b62459 Content-length: 2103 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1VDorg/eclipse/egf/core/ui/viewers/DefaultPatternStructureLabelProvider'org/eclipse/jface/viewers/LabelProvider()VCode  LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/viewers/DefaultPatternStructureLabelProvider; isPattern2(Lorg/eclipse/egf/common/descriptor/IDescriptor;)ZpatternExtType -org/eclipse/egf/common/descriptor/IDescriptor getValue&(Ljava/lang/String;)Ljava/lang/Object;pattern java/lang/String equals(Ljava/lang/Object;)Z descriptor_p/Lorg/eclipse/egf/common/descriptor/IDescriptor;typeLjava/lang/Object; isLibrary&librarygetText&(Ljava/lang/Object;)Ljava/lang/String;*java/lang/StringBuilder ) -name )/ 01append-(Ljava/lang/String;)Ljava/lang/StringBuilder; )3 45toString()Ljava/lang/String; element_p descriptorresultLjava/lang/StringBuilder;getImage4(Ljava/lang/Object;)Lorg/eclipse/swt/graphics/Image; = $ ?A@6org/eclipse/emf/edit/ui/provider/ExtendedImageRegistry BCINSTANCE8Lorg/eclipse/emf/edit/ui/provider/ExtendedImageRegistry; EGF9org/eclipse/egf/model/provider/FactoryComponentEditPlugin BH;Lorg/eclipse/egf/model/provider/FactoryComponentEditPlugin;Jfull/obj16/PatternLibrary EL : ?N :; P Rfull/obj16/PatternModel Lorg/eclipse/swt/graphics/Image; SourceFile)DefaultPatternStructureLabelProvider.java!/*   R+M, " #   ! "#$R+M%, , -   ! "#'(p +M)Y+N-,,.2 56 7 * 6#7! 89:;:M+N*-<>DIKMM*-O>DQKMM, ?@AB!C)D8F *: :6#88S37!TU Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/GenModelViewerFilter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 836 Text-content-md5: a93c879eb368c86938ff5942dc9198e6 Text-content-sha1: 85f411cabab81a1a50623179159251faaa18e54a Content-length: 895 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1%4org/eclipse/egf/core/ui/viewers/GenModelViewerFilter&org/eclipse/jface/viewers/ViewerFilter()VCode  LineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/core/ui/viewers/GenModelViewerFilter;selectI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)Z org/eclipse/core/resources/IFilegenmodel  getFileExtension()Ljava/lang/String; java/lang/String equals(Ljava/lang/Object;)Zviewer"Lorg/eclipse/jface/viewers/Viewer; parentElementLjava/lang/Object;element SourceFileGenModelViewerFilter.java!/*   h-- ! *  !"!#$ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/LightweightLabelDecorator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1997 Text-content-md5: 5b3771db8ca439549f256de0a890556f Text-content-sha1: c33fbf89499e51bead94daf254177cd3c131af45 Content-length: 2056 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1D9org/eclipse/egf/core/ui/viewers/LightweightLabelDecoratorjava/lang/Object4org/eclipse/jface/viewers/ILightweightLabelDecorator_requiredImage,Lorg/eclipse/jface/resource/ImageDescriptor;()VCode  LineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/viewers/LightweightLabelDecorator;decorate<(Ljava/lang/Object;Lorg/eclipse/jface/viewers/IDecoration;)V%org/eclipse/egf/model/ContractElement   isMandatory()Z  getRequiredDecorationImage.()Lorg/eclipse/jface/resource/ImageDescriptor; ! %org/eclipse/jface/viewers/IDecoration "# addOverlay/(Lorg/eclipse/jface/resource/ImageDescriptor;)V element_pLjava/lang/Object; decoration_p'Lorg/eclipse/jface/viewers/IDecoration;contractElement'Lorg/eclipse/egf/model/ContractElement; +  -/.&org/eclipse/egf/core/ui/EgfUiActivator 01 getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;3ovr/required_field_cue.gif -5 67getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; addListener5(Lorg/eclipse/jface/viewers/ILabelProviderListener;)V listener_p2Lorg/eclipse/jface/viewers/ILabelProviderListener;disposeisLabelProperty'(Ljava/lang/Object;Ljava/lang/String;)Z property_pLjava/lang/String;removeListener SourceFileLightweightLabelDecorator.java!  /*   x ++N- ,*$% '(+*  $% &' () J***,24***346 89 5>:;<  +E => @L $%?@A9 5T:;BC Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 810 Text-content-md5: b428e1f3d3ddc0e1aead49505c185759 Text-content-sha1: 894e33b7c2752806d13b778edc7d35bb44c347c4 Content-length: 869 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(org/eclipse/egf/core/ui/viewers/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue (org.eclipse.egf.core.ui.viewers.messagesFPatternStructureLabelProviderWithTooltip_Tooltip_LocationName_PlatformGPatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Workspace8PatternStructureLabelProviderWithTooltip_Tooltip_Message()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable  this*Lorg/eclipse/egf/core/ui/viewers/Messages; SourceFile Messages.java!    , 3*   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/PatternStructureLabelProviderWithTooltip.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1645 Text-content-md5: f74ff7c272697ae613a26095fb9077ae Text-content-sha1: 82131a9cb28fa60fbae372916b18f81df6bd9e20 Content-length: 1704 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1CHorg/eclipse/egf/core/ui/viewers/PatternStructureLabelProviderWithTooltip>org/eclipse/egf/common/ui/viewers/AbstractTooltipLabelProvider()VCode Dorg/eclipse/egf/core/ui/viewers/DefaultPatternStructureLabelProvider    -(Lorg/eclipse/jface/viewers/ILabelProvider;)VLineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/viewers/PatternStructureLabelProviderWithTooltip;getToolTipText&(Ljava/lang/Object;)Ljava/lang/String;-org/eclipse/egf/common/descriptor/IDescriptorfcName  getValue&(Ljava/lang/String;)Ljava/lang/Object;java/lang/String  fromWorkspace"java/lang/Boolean $&%(org/eclipse/egf/core/ui/viewers/Messages '(8PatternStructureLabelProviderWithTooltip_Tooltip_MessageLjava/lang/String;*java/lang/Object !, -. booleanValue()Z $0 1(GPatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Workspace $3 4(FPatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Platform 687*org/eclipse/egf/common/helper/StringHelper 9: formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; element_pLjava/lang/Object; descriptor/Lorg/eclipse/egf/common/descriptor/IDescriptor;containingFcNameLjava/lang/Boolean; SourceFile-PatternStructureLabelProviderWithTooltip.java!: *Y     A+M,N,!:#)Y-SY+ /2S5&'()4AA;<<=>0?(# @AB Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3247 Text-content-md5: 0997806349d03d8b595c3de2070aa449 Text-content-sha1: a545e19b13b396c9133472b2207ac8f213b0061d Content-length: 3306 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1oRorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$1org/eclipse/ui/progress/UIJobthis$0RLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;val$addedProject_p%Lorg/eclipse/core/resources/IProject;(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;Ljava/lang/String;Lorg/eclipse/core/resources/IProject;)VCode      (Ljava/lang/String;)VLineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$1; $anonymous0Ljava/lang/String; runInUIThreadO(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IStatus; #org/eclipse/egf/pde/EgfPdeActivator   getDefault'()Lorg/eclipse/egf/pde/EgfPdeActivator; " #$getFactoryComponentO(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/egf/model/FactoryComponent; &('Porg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider )*getFactoryComponentInWorkspaceE()Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace; ,.-Aorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace /0addFactoryComponent+(Lorg/eclipse/egf/model/FactoryComponent;)Z &2 34access$0(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;)Lorg/eclipse/jface/viewers/AbstractTreeViewer; &6 78access$1f(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;)Ljava/lang/Object;:Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager 9< => getParenti(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet; @BA,org/eclipse/jface/viewers/AbstractTreeViewer CDadd'(Ljava/lang/Object;Ljava/lang/Object;)VF'org/eclipse/jface/viewers/TreeSelectionH"org/eclipse/jface/viewers/TreePathJjava/lang/Object GL M([Ljava/lang/Object;)V EO P'(Lorg/eclipse/jface/viewers/TreePath;)V @R ST setSelection*(Lorg/eclipse/jface/viewers/ISelection;Z)V VXWorg/eclipse/core/runtime/Status YZ OK_STATUS"Lorg/eclipse/core/runtime/IStatus; monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;factoryComponent(Lorg/eclipse/egf/model/FactoryComponent;factoryComponentInWorkspaceCLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace; fcIsAddedZviewer.Lorg/eclipse/jface/viewers/AbstractTreeViewer;parentLjava/lang/Object;input SourceFile,FactoryComponentExplorerContentProvider.javaEnclosingMethod lm addProject((Lorg/eclipse/core/resources/IProject;)V InnerClasses   H*+ *-*,  _ 1 **!M,r* %N-,+6^* 1::* 5:, :9*;:,?EYGYIYSY,SKNQU>fghjk%m*o3p6q?rGtNw\yd{R[\s]^g_`%`ab3Rcd6Oef?Fgfhij&kn  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1313 Text-content-md5: f7b6e6fb8e900f80d2dcfdf1304cbc63 Text-content-sha1: 768a653f4127db5b883b38527946098b2270c562 Content-length: 1372 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-Rorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$2java/lang/Objectjava/lang/Runnablethis$0RLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider; val$viewer.Lorg/eclipse/jface/viewers/AbstractTreeViewer;val$uiFactoryComponentToRemove(Lorg/eclipse/egf/model/FactoryComponent;(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;Lorg/eclipse/jface/viewers/AbstractTreeViewer;Lorg/eclipse/egf/model/FactoryComponent;)VCode      ()VLineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$2;run ! ,org/eclipse/jface/viewers/AbstractTreeViewer "#remove(Ljava/lang/Object;)V SourceFile,FactoryComponentExplorerContentProvider.javaEnclosingMethod(Porg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider *+ removeProject((Lorg/eclipse/core/resources/IProject;)V InnerClasses    B*+*,*-*  : **    $%&'),  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$ProjectListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2231 Text-content-md5: b0cc2df61429363b3ddc1edfb619c030 Text-content-sha1: d70b5d0e080b404afba94d4f999bc5059cddd5b7 Content-length: 2290 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1F`org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$ProjectListener7org/eclipse/egf/common/listener/AbstractProjectListenerthis$0RLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;U(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;)VCode    ()VLineNumberTableLocalVariableTablethisbLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$ProjectListener;handleProjectAddedS(Lorg/eclipse/core/resources/IProject;Lorg/eclipse/core/resources/IResourceDelta;)V  handleProjectChanged project_p%Lorg/eclipse/core/resources/IProject;resourceDelta_p+Lorg/eclipse/core/resources/IResourceDelta; )org/eclipse/core/resources/IResourceDelta !getAffectedChildren.()[Lorg/eclipse/core/resources/IResourceDelta; # $% getResource(()Lorg/eclipse/core/resources/IResource; ')(#org/eclipse/egf/pde/EgfPdeActivator *+ getDefault'()Lorg/eclipse/egf/pde/EgfPdeActivator; '- ./ isPluginFile)(Lorg/eclipse/core/resources/IResource;)Z 132Porg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider 45 addProject((Lorg/eclipse/core/resources/IProject;)VprojectFilesResourceDelta,[Lorg/eclipse/core/resources/IResourceDelta;projectFileResourceDelta projectFile&Lorg/eclipse/core/resources/IResource;handleProjectRemoved 1= >5 removeProjecthandleProjectClosed A ; SourceFile,FactoryComponentExplorerContentProvider.java InnerClassesProjectListener  4 *+ *    I*+,    E,N-Y:66,2:":&,* +0 ӱ"$/7:D>EEE>678$9:; K * +<     ? I*+,@  BCD 1E Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5090 Text-content-md5: 7ff218aeaed7718bfd1f6eed954410b3 Text-content-sha1: a738cb1fd3cf862e4a0d461c902d0dc8e9522a9c Content-length: 5149 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Porg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProviderJorg/eclipse/egf/core/ui/viewers/AbstractAdaptedModelElementContentProvider_projectListener9Lorg/eclipse/egf/common/listener/AbstractProjectListener;()VCode   `org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$ProjectListener  U(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;)V   *org/eclipse/core/resources/ResourcesPlugin  getWorkspace)()Lorg/eclipse/core/resources/IWorkspace; %org/eclipse/core/resources/IWorkspace addResourceChangeListener7(Lorg/eclipse/core/resources/IResourceChangeListener;)VLineNumberTableLocalVariableTablethisRLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory; &('&org/eclipse/egf/core/ui/EgfUiActivator )* getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; &, -.getEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; 0217org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain #$dispose 5 3 7 8removeResourceChangeListenergetFactoryComponentInWorkspaceE()Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace; &< =>#getFactoryComponentInWorkspaceInput'()Lorg/eclipse/core/runtime/IAdaptable;@Aorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace addProject((Lorg/eclipse/core/resources/IProject;)VDRorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$1F CH I(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;Ljava/lang/String;Lorg/eclipse/core/resources/IProject;)V KML!org/eclipse/core/runtime/jobs/Job NO setPriority(I)V KQ RS setSystem(Z)V KU VWsetRule2(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V KY ZscheduleaddedProject_p%Lorg/eclipse/core/resources/IProject;job#Lorg/eclipse/core/runtime/jobs/Job; removeProject a 9: ?c degetFactoryComponents()Ljava/util/Collection; gihjava/util/Collection jkiterator()Ljava/util/Iterator; monjava/util/Iterator pqnext()Ljava/lang/Object;s&org/eclipse/egf/model/FactoryComponent uwv-org/eclipse/egf/model/data/helper/ModelHelper xy getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject; m{ |}hasNext()Z ? removeFactoryComponent+(Lorg/eclipse/egf/model/FactoryComponent;)V   getViewer0()Lorg/eclipse/jface/viewers/AbstractTreeViewer; ,org/eclipse/jface/viewers/AbstractTreeViewer  getControl#()Lorg/eclipse/swt/widgets/Control; org/eclipse/swt/widgets/Control  getDisplay#()Lorg/eclipse/swt/widgets/Display;Rorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider$2 (Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;Lorg/eclipse/jface/viewers/AbstractTreeViewer;Lorg/eclipse/egf/model/FactoryComponent;)V org/eclipse/swt/widgets/Display  asyncExec(Ljava/lang/Runnable;)VremoveProject_pfactoryComponentInWorkspaceCLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace;fcsLjava/util/Iterator;removedFactoryComponent(Lorg/eclipse/egf/model/FactoryComponent;currentFactoryComponentcurrentFactoryComponentProjectuiFactoryComponentToRemoveviewer.Lorg/eclipse/jface/viewers/AbstractTreeViewer;LocalVariableTypeTable>Ljava/util/Iterator;access$0(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;)Lorg/eclipse/jface/viewers/AbstractTreeViewer;access$1f(Lorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider;)Ljava/lang/Object;  qgetInitialInput SourceFile,FactoryComponentExplorerContentProvider.java InnerClassesProjectListener! S* * Y**579: !"#$ 4 %+/A  !"3 C*4*6IKL !"9: 4 %;?S  !"AB s!CY*E+GM,J,P,+T,X_  !!"![\ ]^_B 8p+n*`M,bfN:-lr:t:+:-z*,~:*:Y*B $+15CHNRXo \ p!"p\ f\Y$+ \RX \ %*  %* C  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 876 Text-content-md5: eb7a174d0158052bef07f46d6fcdd5f7 Text-content-sha1: 4094c7b0e31600da5b1b92a939a0bfe72dd51ca9 Content-length: 935 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1!Norg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerLabelProvider@org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProvider()VCode  &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory;  1(Lorg/eclipse/emf/common/notify/AdapterFactory;)VLineNumberTableLocalVariableTablethisPLorg/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerLabelProvider; SourceFile*FactoryComponentExplorerLabelProvider.java!<*    Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentContentProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 894 Text-content-md5: 47594d6ff44aa6cfe3234798b6b1ad31 Text-content-sha1: 6ec82902f7fd24d7e41c3fe63a4bbaa6cefba1dc Content-length: 953 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 Korg/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentContentProviderJorg/eclipse/egf/core/ui/viewers/AbstractAdaptedModelElementContentProvider()VCode  LineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentContentProvider;getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory; &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getEditingDomainInReadOnly;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain  SourceFile-InstalledFactoryComponentContentProvider.java!/*   4     Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentLabelProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 877 Text-content-md5: 1b0b14e486bd77a5bca5c981f151ca4c Text-content-sha1: 4176991b86b041d696e6d8b2edf4568d5273fdd8 Content-length: 936 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1!Iorg/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentLabelProvider@org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProvider()VCode  &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;  getEditingDomainInReadOnly;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory;  1(Lorg/eclipse/emf/common/notify/AdapterFactory;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentLabelProvider; SourceFile+InstalledFactoryComponentLabelProvider.java!<*    Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 819 Text-content-md5: c4f71bd0da64d6d4e57b771360611068 Text-content-sha1: c2cd92c87a464033d7cffc10d1013c79fd99d8f9 Content-length: 829 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Platform=platform PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Workspace=workspace PatternStructureLabelProviderWithTooltip_Tooltip_Message=Contained by FC {0} from the {1}. Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 923 Text-content-md5: 5f99f415817f22b499f1e05de092fdbb Text-content-sha1: 630204c526d2ba02c2107a218f706624da577838 Content-length: 982 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1;org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard$10org/eclipse/emf/ecore/change/util/ChangeRecorderthis$0;Lorg/eclipse/egf/core/ui/wizard/AbstractModelElementWizard;](Lorg/eclipse/egf/core/ui/wizard/AbstractModelElementWizard;Lorg/eclipse/emf/ecore/EObject;)VCode    "(Lorg/eclipse/emf/ecore/EObject;)VLineNumberTableLocalVariableTablethis=Lorg/eclipse/egf/core/ui/wizard/AbstractModelElementWizard$1; $anonymous0Lorg/eclipse/emf/ecore/EObject;eliminateEmptyChanges()V SourceFileAbstractModelElementWizard.javaEnclosingMethod9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard startChangesRecording InnerClasses  C *+ *,     +   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 8798 Text-content-md5: 82caa87122feaf817507b3b8d9908fed Text-content-sha1: e9161d61daae8f3e1c3a0080d3fb74d7c2c42de3 Content-length: 8857 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1"9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardorg/eclipse/jface/wizard/Wizard_changeRecorder2Lorg/eclipse/emf/ecore/change/util/ChangeRecorder;_parentLorg/eclipse/emf/ecore/EObject; _modelElement/Lorg/eclipse/egf/model/NamedModelElementWithId;_isInCreationModeZ _isInReadOnly _descriptionLjava/lang/String;_changeDescription0Lorg/eclipse/emf/ecore/change/ChangeDescription;R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  ()V    initializeQ(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/wizard/AbstractModelElementWizard;parent_pmodelElement_preadOnlyMode_p&"java/lang/IllegalArgumentException(!Argument parent_p can not be null %* +(Ljava/lang/String;)V -  / 1 23doCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; 5 7 89startChangesRecording"(Lorg/eclipse/emf/ecore/EObject;)V ; <handleWizardDescription > ?@#getWizardDefaultPageImageDescriptor.()Lorg/eclipse/jface/resource/ImageDescriptor; B CDsetDefaultPageImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VwizardDefaultPageImage,Lorg/eclipse/jface/resource/ImageDescriptor;getCreationDescription()Ljava/lang/String;getEditDescriptiongetTitle L GH N  P IHR;org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard$1 QT U](Lorg/eclipse/egf/core/ui/wizard/AbstractModelElementWizard;Lorg/eclipse/emf/ecore/EObject;)V W endChangesRecording2()Lorg/eclipse/emf/ecore/change/ChangeDescription; []\0org/eclipse/emf/ecore/change/util/ChangeRecorder ^Y endRecording [` adisposechangeDescription performCancel()Z f XY hji.org/eclipse/emf/ecore/change/ChangeDescription kapplyAndReverse m cdchanges performFinish q rsgetEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; u vwgetAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; y z{executeCommand+(Lorg/eclipse/emf/common/command/Command;)V }   dhandleChangeDescriptionresultcommand(Lorg/eclipse/emf/common/command/Command; canFinish  dhandleCanFinish canFisnish  d  YgetChangeDescription  containsChanges3(Lorg/eclipse/emf/ecore/change/ChangeDescription;)Z  3getModelElement  getModifiedFeatureu(Lorg/eclipse/emf/ecore/change/ChangeDescription;Lorg/eclipse/emf/ecore/EObject;)Lorg/eclipse/egf/common/misc/Couple; "org/eclipse/egf/common/misc/Couple getKey()Ljava/lang/Object;(org/eclipse/emf/ecore/EStructuralFeature getValueLorg/eclipse/egf/core/ui/command/ChangeRecorderWrapperCommand;LocalVariableTypeTablebLorg/eclipse/egf/common/misc/Couple; h getObjectChanges$()Lorg/eclipse/emf/common/util/EMap;  org/eclipse/emf/common/util/EMap disEmpty changes_p objectChanges"Lorg/eclipse/emf/common/util/EMap;Lorg/eclipse/emf/common/util/EMap;>; Signature(Lorg/eclipse/emf/ecore/change/ChangeDescription;Lorg/eclipse/emf/ecore/EObject;)Lorg/eclipse/egf/common/misc/Couple; get&(Ljava/lang/Object;)Ljava/lang/Object;!org/eclipse/emf/common/util/EList (I)Ljava/lang/Object;*org/eclipse/emf/ecore/change/FeatureChange  getFeature,()Lorg/eclipse/emf/ecore/EStructuralFeature; '(Ljava/lang/Object;Ljava/lang/Object;)VmodifiedObject_pobjectChangeList#Lorg/eclipse/emf/common/util/EList; featureChange,Lorg/eclipse/emf/ecore/change/FeatureChange;QLorg/eclipse/emf/common/util/EList; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getCommandStack/()Lorg/eclipse/emf/common/command/CommandStack; +org/eclipse/emf/common/command/CommandStack {execute command_p  disInReadOnlyMode &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; sgetEditingDomainInReadOnly qaddPagesjava/lang/String 'org/eclipse/egf/core/ui/wizard/Messages CreationWizard_Prefix  EditWizard_Prefix  JH    Wizard_Title 4org/eclipse/egf/common/ui/helper/MessageFormatHelper  formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;  +setWindowTitle arguments[Ljava/lang/String; titleMessagegetChangeRecorder4()Lorg/eclipse/emf/ecore/change/util/ChangeRecorder;getDescription getParent!()Lorg/eclipse/emf/ecore/EObject; SourceFileAbstractModelElementWizard.java InnerClasses!   d***+,QR ST* !"# $ Q+ %Y')*+,*,.*"*.**0.*4 **.6*:*=N-*-A:]^aceg&i.k6o>sBuGwKxPz*Q !Q"Q# G EF23GHIHJH<Q*4**KM **OM  !89F*QY*+SV   !#XYM*VZL*V_+ ! bcd/*&*4*.*,*eL+ +g*l" $*/ ! nod1<*4**p*,*.tM*,x**e|*~< "*/ 1 !/ dX*<*<  ! d/*  !vwdW*L*+K*M*+,N-:-:*p:Y+,:*,*x.   "(.?OURW !RnC<"3(-.'? <=++N-=')+ ,.* !    >+N-,::::Yܰ9;= ?)A2BR> !>>7+ )2 7+z{F*p+ J K !rs]* L+STURV !0L*4 +S +S+* S +M*,"hi jlo"q*s/t 0 !+*/*V{  !3/*.  !H/*M  !Y/*|  !/*,  !d/*  !?@,  ! ! Q Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/AbstractPatternLibraryWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3957 Text-content-md5: 9d12d1751c273491d539837f3cf15221 Text-content-sha1: 1923134124a74b989ef2a65ff35551d1ca5d4259 Content-length: 4016 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1;org/eclipse/egf/core/ui/wizard/AbstractPatternLibraryWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard(PATTERN_LIBRARY_PRODUCTION_SEQUENCE_PAGELjava/lang/String; ConstantValue *patternLibraryProductionSequenceWizardPage%PATTERN_LIBRARY_RUNTIME_SEQUENCE_PAGE 'patternLibraryRuntimeSequenceWizardPage _creationModeZS(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;ZZ)VCode  R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)V    setForcePreviousAndNextButtons(Z)VLineNumberTableLocalVariableTablethis=Lorg/eclipse/egf/core/ui/wizard/AbstractPatternLibraryWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pcreationMode_paddPages()V ( %&*.BKorg/eclipse/egf/core/ui/wizard/page/PatternLibraryRuntimeSequenceWizardPage A.namepage&Lorg/eclipse/jface/wizard/IWizardPage;doCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; JLK"org/eclipse/egf/model/ModelFactory MN eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; JP QRcreatePatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary;getPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;VQorg/eclipse/egf/model/edit/command/plugin/library/SetPatternLibraryWrapperCommand UX Y(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)VeditingDomain_p+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;getCreationDescription()Ljava/lang/String; ced'org/eclipse/egf/core/ui/wizard/Messages f.PatternLibraryWizard_CreateDescription_MessagegetEditDescription ci j,PatternLibraryWizard_EditDescription_MessagegetTitle cm nPatternLibraryWizard_TitleisInCreationMode()Z#getWizardDefaultPageImageDescriptor.()Lorg/eclipse/jface/resource/ImageDescriptor; tvu&org/eclipse/egf/core/ui/EgfUiActivator wx getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;zwizban/patternLibrary.png t| }~getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; SourceFile!AbstractPatternLibraryWizard.java!    q*+,**78 :;4 !"#$%&D*'*)Y+-0BDF 45<*+6M,,+8>Y@M +8 AY CM*,0,& MO P SU"V+X5[:\ <<D6EFGH3 IOd  ST_ UY+,-Wn4  Z[ !  \] ^_`a.bv ga.h~ ka.l op/* qr3 sy{   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/ContextElementWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4595 Text-content-md5: 599c5c799844ac2b0709138573587e1a Text-content-sha1: 0fe9ab117aeb16bfdaaeae978bbd7820c3db58c2 Content-length: 4654 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 13org/eclipse/egf/core/ui/wizard/ContextElementWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardCONTEXT_ELEMENT_KEY_PAGELjava/lang/String; ConstantValue contextElementKeyPageCONTEXT_ELEMENT_REFERENCE_PAGE contextElementReferencePageCONTEXT_ELEMENT_VALUE_PAGEcontextElementValuePageCONTEXT_ELEMENT_FIRST_PAGEcontextElementPageR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode    setForcePreviousAndNextButtons(Z)VLineNumberTableLocalVariableTablethis5Lorg/eclipse/egf/core/ui/wizard/ContextElementWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V ) &'+?org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage =-AEorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage @-DAorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage C-name_ppage&Lorg/eclipse/jface/wizard/IWizardPage;handleCanFinish()Z L MN getContainer-()Lorg/eclipse/jface/wizard/IWizardContainer; PRQ)org/eclipse/jface/wizard/IWizardContainer STgetCurrentPage(()Lorg/eclipse/jface/wizard/IWizardPage; VXW$org/eclipse/jface/wizard/IWizardPage YJisPageCompletedoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; ]_^"org/eclipse/egf/model/ModelFactory `a eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; ]c decreateContextElement(()Lorg/eclipse/egf/model/ContextElement;getAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; ikj+org/eclipse/egf/model/ModelPackage$Literals lmCONTEXT__CONTEXT_ELEMENTS"Lorg/eclipse/emf/ecore/EReference; oqp'org/eclipse/emf/edit/command/AddCommand rscreate(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetCreationDescription()Ljava/lang/String; z|{'org/eclipse/egf/core/ui/wizard/Messages }.ContextElementWizard_CreateDescription_MessagegetEditDescription z ,ContextElementWizard_EditDescription_MessagegetPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;Qorg/eclipse/egf/model/edit/command/plugin/context/SetContextElementWrapperCommand (Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;getTitle z ContextElementWizard_Title SourceFileContextElementWizard.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!    ] *+,*<> ?*  ! "# $%&'D*(**Y,/FHI 34R*+5M,,+7=Y?M, +7@Y BM+7 CYEM*,/,. PR S VX"Y+[8\A^KaPb RRFLGHIJ9*KOUk Z[3 \bs  fgR +,h-n}*  tu ! v#wx.y ~x. _ Y+,-4  t "!  x.  i Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/ContractElementWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5436 Text-content-md5: 39bc811387884104ee53f5a0807d9f24 Text-content-sha1: 50eca090f1ce389c6886a6820dac3771babc9ec7 Content-length: 5495 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 14org/eclipse/egf/core/ui/wizard/ContractElementWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardCONTRACT_ELEMENT_TYPE_PAGELjava/lang/String; ConstantValue contractElementTypePageCONTRACT_ELEMENT_REFERENCE_PAGE contractElementReferencePageCONTRACT_ELEMENT_FIRST_PAGEcontractElementPageR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode    setForcePreviousAndNextButtons(Z)VLineNumberTableLocalVariableTablethis6Lorg/eclipse/egf/core/ui/wizard/ContractElementWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V & #$(=org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage '* +(Ljava/lang/String;)V - ./addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)VgetPage:(Ljava/lang/String;)Lorg/eclipse/jface/wizard/IWizardPage; 3 01 576java/lang/String 89equals(Ljava/lang/Object;)Z;Aorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage :*>Forg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage =*name_ppage&Lorg/eclipse/jface/wizard/IWizardPage;handleCanFinish()Z F GH getContainer-()Lorg/eclipse/jface/wizard/IWizardContainer; JLK)org/eclipse/jface/wizard/IWizardContainer MNgetCurrentPage(()Lorg/eclipse/jface/wizard/IWizardPage; PRQ$org/eclipse/jface/wizard/IWizardPage SDisPageComplete performFinish V WXgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;Z%org/eclipse/egf/model/ContractElement 3 Y] ^_getContractElementReferences%()Lorg/eclipse/emf/common/util/EList; acb!org/eclipse/emf/common/util/EList d$clear f TDcontractElement'Lorg/eclipse/egf/model/ContractElement;completingPagedoCreateModelElement lnm"org/eclipse/egf/model/ModelFactory op eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; lr stcreateContractElement)()Lorg/eclipse/egf/model/ContractElement; v wx getParent!()Lorg/eclipse/emf/ecore/EObject;z-org/eclipse/egf/model/NamedModelElementWithId |~}-org/eclipse/egf/model/data/helper/ModelHelper getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; &org/eclipse/egf/model/FactoryComponent getId()Ljava/lang/String; Y +setFactoryComponentIdcreatedContractElement fcContainer(Lorg/eclipse/egf/model/FactoryComponent;getAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; +org/eclipse/egf/model/ModelPackage$Literals CONTRACT__CONTRACT_ELEMENTS"Lorg/eclipse/emf/ecore/EReference; 'org/eclipse/emf/edit/command/AddCommand create(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetTitle 'org/eclipse/egf/core/ui/wizard/Messages ContractElementWizard_TitlegetCreationDescription /ContractElementWizard_CreateDescription_MessagegetEditDescription -ContractElementWizard_EditDescription_MessagegetPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;Sorg/eclipse/egf/model/edit/command/plugin/contract/SetContractElementWrapperCommand (Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object; SourceFileContractElementWizard.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!    ] *+,*=? @*     !"#$D*%*'Y),GIJ 01<*+2M,,+4:YR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  LineNumberTableLocalVariableTablethis1Lorg/eclipse/egf/core/ui/wizard/EditDomainWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V  8org/eclipse/egf/core/ui/wizard/page/EditDomainWizardPageeditDomainWizardPage  (Ljava/lang/String;)V  !"addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)VdoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;getAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetCreationDescription()Ljava/lang/String;getEditDescription .0/'org/eclipse/egf/core/ui/wizard/Messages 12$DomainWizard_EditDescription_MessageLjava/lang/String;getPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand; 6 78 getParent!()Lorg/eclipse/emf/ecore/EObject;:&org/eclipse/egf/model/FactoryComponent<Norg/eclipse/egf/model/edit/command/plugin/fc/SetFactoryComponentWrapperCommand >@?+org/eclipse/egf/model/ModelPackage$Literals ABFACTORY_COMPONENT__DOMAIN"Lorg/eclipse/emf/ecore/EReference; D E$getModelElement ;G H(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object; fcContainer(Lorg/eclipse/egf/model/FactoryComponent;getTitle .R S2DomainWizard_Title#getWizardDefaultPageImageDescriptor.()Lorg/eclipse/jface/resource/ImageDescriptor; WYX&org/eclipse/egf/core/ui/EgfUiActivator Z[ getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;]wizban/domain.gif W_ `agetImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; SourceFileEditDomainWizard.java InnerClassesf"org/eclipse/egf/model/ModelPackageLiterals! T*+, )* * D**Y 123  #$, ;  %&J E * '()*+, N  ,+.- V  34{*59:;Y+=*CF b c > 'IJKLM NOP+.Q k  TU3 V\^ s  bcd >eg Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/EditFactoryComponentWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2640 Text-content-md5: e1e2827ddd3045a2679da0bfa8734bad Text-content-sha1: 47aa2d8aa331cf785634287cbbe570ffefabd6b3 Content-length: 2699 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1E9org/eclipse/egf/core/ui/wizard/EditFactoryComponentWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  LineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/wizard/EditFactoryComponentWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V  Borg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPagefactoryComponentWizardPage  (Ljava/lang/String;)V  !"addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)VdoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;getAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetCreationDescription()Ljava/lang/String;getEditDescription .0/'org/eclipse/egf/core/ui/wizard/Messages 122EditFactoryComponentWizard_EditDescription_MessageLjava/lang/String;getPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;6Norg/eclipse/egf/model/edit/command/plugin/fc/SetFactoryComponentWrapperCommand 58 9(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;getTitle .A B2 EditFactoryComponentWizard_Title SourceFileEditFactoryComponentWizard.java!T*+, $% * D**Y ,-.  #$, 6  %&J @ * '()*+, I  ,+.- Q  34_ 5Y+,-7 [ 4 ':  ;< =>?+.@ c  CD Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/FactoryComponentInvocationWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5284 Text-content-md5: a733262089ff28042e92240ed900c9a8 Text-content-sha1: 6880fd8a4ac75192a862c1a0d79c3aa1ea1aeb45 Content-length: 5343 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?org/eclipse/egf/core/ui/wizard/FactoryComponentInvocationWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/wizard/FactoryComponentInvocationWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V  Horg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$factoryComponentInvocationWizardPage  (Ljava/lang/String;)V  !"addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)VdoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; &('"org/eclipse/egf/model/ModelFactory )* eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; &, -. createFactoryComponentInvocation4()Lorg/eclipse/egf/model/FactoryComponentInvocation;getCreationDescription()Ljava/lang/String; 243'org/eclipse/egf/core/ui/wizard/Messages 56:FactoryComponentInvocationWizard_CreateDescription_MessageLjava/lang/String;getEditDescription 29 :68FactoryComponentInvocationWizard_EditDescription_MessagegetAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; >@?+org/eclipse/egf/model/ModelPackage$Literals AB.PRODUCTION_PLAN__FACTORY_COMPONENT_INVOCATIONS"Lorg/eclipse/emf/ecore/EReference; DFE'org/eclipse/emf/edit/command/AddCommand GHcreate(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;OYorg/eclipse/egf/model/edit/command/plugin/fci/SetFactoryComponentInvocationWrapperCommand NQ R(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;getTitle 2Z [6&FactoryComponentInvocationWizard_TitlehandleChangeDescription()Z _ \] a bcgetChangeDescription2()Lorg/eclipse/emf/ecore/change/ChangeDescription; e fgcontainsChanges3(Lorg/eclipse/emf/ecore/change/ChangeDescription;)Z i j$getModelElementl0org/eclipse/egf/model/FactoryComponentInvocation kn op getContext!()Lorg/eclipse/egf/model/Context; rtsorg/eclipse/egf/model/Context uvgetContextElements%()Lorg/eclipse/emf/common/util/EList; xzy!org/eclipse/emf/common/util/EList {]isEmpty } ~getModifiedFeatureu(Lorg/eclipse/emf/ecore/change/ChangeDescription;Lorg/eclipse/emf/ecore/EObject;)Lorg/eclipse/egf/common/misc/Couple; > 2FACTORY_COMPONENT_INVOCATION__FACTORY_COMPONENT_ID"Lorg/eclipse/emf/ecore/EAttribute; "org/eclipse/egf/common/misc/Couple getKey()Ljava/lang/Object; java/lang/Object equals(Ljava/lang/Object;)Z  getShell!()Lorg/eclipse/swt/widgets/Shell; 2 61FactoryComponentInvocationWizard_WarnDialog_Title 2 63FactoryComponentInvocationWizard_WarnDialog_Message 'org/eclipse/jface/dialogs/MessageDialog  openWarningF(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;)VcrchangeDescription0Lorg/eclipse/emf/ecore/change/ChangeDescription; fcInvocation2Lorg/eclipse/egf/model/FactoryComponentInvocation;contextLorg/eclipse/egf/model/Context;modifiedFeature$Lorg/eclipse/egf/common/misc/Couple;LocalVariableTypeTablebLorg/eclipse/egf/common/misc/Couple; SourceFile%FactoryComponentInvocationWizard.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals! T*+, ,- * D**Y 456  #$3 %+ =  /0.1 E  70.8 M  ;<R +,=-C W * IJ  KLM_ NY+,-P a 4 IS  TU VWX0.Y i  \][*^<*`M*,dJ*hkN-m:5qw&*,-|:* . qr svx"y'{6|>}L~Y >[ V Q?"7> > > Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/MappingWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3591 Text-content-md5: 451c6410ce895a21f495bbf26e1a05d8 Text-content-sha1: ab169a07de543bde2eeb1caba4b66fdb9206b926 Content-length: 3650 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1p,org/eclipse/egf/core/ui/wizard/MappingWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  LineNumberTableLocalVariableTablethis.Lorg/eclipse/egf/core/ui/wizard/MappingWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V  5org/eclipse/egf/core/ui/wizard/page/MappingWizardPagemappingWizardPage  (Ljava/lang/String;)V  !"addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)VdoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; &('"org/eclipse/egf/model/ModelFactory )* eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; &, -.createMappingModel&()Lorg/eclipse/egf/model/MappingModel;getAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; 243+org/eclipse/egf/model/ModelPackage$Literals 56MAPPING_VIEWPOINT__MAPPINGS"Lorg/eclipse/emf/ecore/EReference; 8:9'org/eclipse/emf/edit/command/AddCommand ;<create(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetCreationDescription()Ljava/lang/String; CED'org/eclipse/egf/core/ui/wizard/Messages FG'MappingWizard_CreateDescription_MessageLjava/lang/String;getEditDescription CJ KG%MappingWizard_EditDescription_MessagegetPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;OJorg/eclipse/egf/model/edit/command/plugin/mapping/SetMappingWrapperCommand NQ R(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;getTitle CZ [GMappingWizard_Title#getWizardDefaultPageImageDescriptor.()Lorg/eclipse/jface/resource/ImageDescriptor; _a`&org/eclipse/egf/core/ui/EgfUiActivator bc getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;ewizban/mapping.gif _g higetImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; SourceFileMappingWizard.java InnerClassesn"org/eclipse/egf/model/ModelPackageLiterals! T*+, *+ * D**Y 245  #$3 %+ <  /0R +,1-7 F * =>  ?@A.B N  HA.I V  LM_ NY+,-P ` 4 =S  TU VWXA.Y h  \]3 ^df p  jkl 2mo Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6354 Text-content-md5: b2bc979f826077760261baee3e36fb63 Text-content-sha1: bc452e248c644de1c01c723ec2107d2cde799af0 Content-length: 6413 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1'org/eclipse/egf/core/ui/wizard/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue 'org.eclipse.egf.core.ui.wizard.messagesCreationWizard_PrefixEditWizard_Prefix Wizard_TitleWizardPage_Description_TitleWizardPage_Description_Tooltip2EditFactoryComponentWizard_EditDescription_Message EditFactoryComponentWizard_Title$EditFactoryComponentWizardPage_Title)EditFactoryComponentWizardPage_Name_Title+EditFactoryComponentWizardPage_Name_Tooltip0EditFactoryComponentWizardPage_Name_ErrorMessage:FactoryComponentInvocationWizard_CreateDescription_Message8FactoryComponentInvocationWizard_EditDescription_Message&FactoryComponentInvocationWizard_Title*FactoryComponentInvocationWizardPage_Title/FactoryComponentInvocationWizardPage_Name_Title1FactoryComponentInvocationWizardPage_Name_Tooltip6FactoryComponentInvocationWizardPage_Name_ErrorMessageEFactoryComponentInvocationWizardPage_ReferencedFactoryComponent_TitleGFactoryComponentInvocationWizardPage_ReferencedFactoryComponent_TooltipLFactoryComponentInvocationWizardPage_ReferencedFactoryComponent_ErrorMessage1FactoryComponentInvocationWizard_WarnDialog_Title3FactoryComponentInvocationWizard_WarnDialog_Message1TaskFactoryHolderWizard_CreateDescription_Message/TaskFactoryHolderWizard_EditDescription_MessageTaskFactoryHolderWizard_Title!TaskFactoryHolderWizardPage_Title'TaskFactoryHolderWizardPage_Class_Title0TaskFactoryHolderWizardPage_OpenTypeDialog_Title/ContractElementWizard_CreateDescription_Message-ContractElementWizard_EditDescription_MessageContractElementWizard_TitleContractElementWizardPage_Title#ContractElementWizardPage_Key_Title%ContractElementWizardPage_Key_Tooltip*ContractElementWizardPage_Key_ErrorMessage)ContractElementWizardPage_TypeGroup_Title(ContractElementWizardPage_TypeGroup_Type-ContractElementWizardPage_TypeGroup_Reference,ContractElementWizardPage_OptionsGroup_Title6ContractElementWizardPage_OptionsGroup_Mandatory_Title8ContractElementWizardPage_OptionsGroup_Mandatory_Tooltip)ContractElementTypeWizardPage_Class_Title,ContractElementTypeWizardPage_ErrorMessage_1,ContractElementTypeWizardPage_ErrorMessage_22ContractElementTypeWizardPage_OpenTypeDialog_Title&DomainWizard_CreateDescription_Message$DomainWizard_EditDescription_MessageDomainWizard_TitleDomainWizardPage_Title!NewDomainWizardPage_Package_Title#NewDomainWizardPage_Package_Tooltip(NewDomainWizardPage_Package_ErrorMessage NewDomainWizardPage_Domain_Title"NewDomainWizardPage_Domain_Tooltip'NewDomainWizardPage_Domain_ErrorMessage&NewDomainWizardPage_CreateDomain_Title(NewDomainWizardPage_CreateDomain_Tooltip-EditDomainWizardPage_OpenResourceDialog_Title.ContextElementWizard_CreateDescription_Message,ContextElementWizard_EditDescription_MessageContextElementWizard_TitleContextElementWizardPage_Title"ContextElementWizardPage_Group_Key(ContextElementWizardPage_Group_Reference"ContextElementWizardPage_Key_Title$ContextElementWizardPage_Key_Tooltip)ContextElementWizardPage_Key_ErrorMessage&ContextElementKeyWizardPage_Type_Title0ContextElementKeyWizardPage_OpenTypeDialog_Title(ContextElementValueWizardPage_Type_Title*ContextElementValueWizardPage_Type_Tooltip)ContextElementValueWizardPage_Value_Title7ContextElementValueWizardPage_OpenValueTypeDialog_Title5ContextElementValueWizardPage_ErrorMessage_EmtpyValue8ContextElementValueWizardPage_ErrorMessage_NotValidValue()VCode  initializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable  |this)Lorg/eclipse/egf/core/ui/wizard/Messages; SourceFile Messages.java!r                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z{|},~ |}3*   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/NewDomainWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3586 Text-content-md5: bbfe7a32a4f907383d5896682d053409 Text-content-sha1: 2c9e5784af3bc053bba8f4535a08e9374d1e2e70 Content-length: 3645 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1r.org/eclipse/egf/core/ui/wizard/NewDomainWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard_newDomainWizardPage9Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  LineNumberTableLocalVariableTablethis0Lorg/eclipse/egf/core/ui/wizard/NewDomainWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V 'org/eclipse/egf/core/ui/wizard/Messages  Wizard_TitleLjava/lang/String;java/lang/String ! "CreationWizard_Prefix $ %&getTitle()Ljava/lang/String; (*)4org/eclipse/egf/common/ui/helper/MessageFormatHelper +, formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; . /0setWindowTitle(Ljava/lang/String;)V27org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage4newDomainWizardPage 16 0 8  : ;<addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)V titleMessagedoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;getAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetCreationDescription G H&DomainWizard_CreateDescription_MessagegetEditDescriptiongetPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand; 1M N&getRootPackagePHorg/eclipse/egf/model/edit/command/plugin/domain/SetDomainWrapperCommand OR S(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V OU V0setRootPackageForDomain+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;commandJLorg/eclipse/egf/model/edit/command/plugin/domain/SetDomainWrapperCommand; rootPackage ` aDomainWizard_Title#getWizardDefaultPageImageDescriptor.()Lorg/eclipse/jface/resource/ImageDescriptor; egf&org/eclipse/egf/core/ui/EgfUiActivator hi getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;kwizban/domain.gif em nogetImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; SourceFileNewDomainWizard.java!  T*+,  -. * w3Y SY*#S'L*+-*1Y357**79 8:<*=2> 3=>? , F @A J P *BCDE& .F X I& .F ` JK $:*7L:OY+,-Q:T jk ln!o H$$BW$$XY$Z[!\] ^%& ._ w bc 3 djl   pq Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/PatternLibraryWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1495 Text-content-md5: 77800e3448e2d4b11c5b55071dd7b090 Text-content-sha1: 79d979d46264f0314cde91a16a2537cfaa922d42 Content-length: 1554 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1,3org/eclipse/egf/core/ui/wizard/PatternLibraryWizard;org/eclipse/egf/core/ui/wizard/AbstractPatternLibraryWizardS(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;ZZ)VCode  LineNumberTableLocalVariableTablethis5Lorg/eclipse/egf/core/ui/wizard/PatternLibraryWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZcreationMode_pgetAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; +org/eclipse/egf/model/ModelPackage$Literals !PATTERN_LIBRARY__PATTERN_ELEMENTS"Lorg/eclipse/emf/ecore/EReference;  'org/eclipse/emf/edit/command/AddCommand !"create(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_p SourceFilePatternLibraryWizard.java InnerClasses*"org/eclipse/egf/model/ModelPackageLiterals!` *+, " # 4    R +,- , * #$  %&'( )+ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/PatternWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3834 Text-content-md5: 6cd94c79fcd5abf5e9d0dcabb9b0dd80 Text-content-sha1: d1841d1097bc5f05f2a6e80dfbbed2208a1a802b Content-length: 3893 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1,org/eclipse/egf/core/ui/wizard/PatternWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  LineNumberTableLocalVariableTablethis.Lorg/eclipse/egf/core/ui/wizard/PatternWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V  5org/eclipse/egf/core/ui/wizard/page/PatternWizardPagepatternWizardPage  (Ljava/lang/String;)V  !"addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)VdoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; &('"org/eclipse/egf/model/ModelFactory )* eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; &, -.createPatternModel&()Lorg/eclipse/egf/model/PatternModel; 0 12 getParent!()Lorg/eclipse/emf/ecore/EObject;4-org/eclipse/egf/model/NamedModelElementWithId 36 78getId()Ljava/lang/String; :<;+org/eclipse/egf/common/helper/PatternHelper =8generatePatternUID :? @A getFullId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; CED"org/eclipse/egf/model/PatternModel FsetIdcreatedPattern$Lorg/eclipse/egf/model/PatternModel;getAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; LNM+org/eclipse/egf/model/ModelPackage$Literals OP!PATTERN_LIBRARY__PATTERN_ELEMENTS"Lorg/eclipse/emf/ecore/EReference; RTS'org/eclipse/emf/edit/command/AddCommand UVcreate(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetCreationDescription \^]'org/eclipse/egf/core/ui/wizard/Messages _`'PatternWizard_CreateDescription_MessageLjava/lang/String;getEditDescription \c d`%PatternWizard_EditDescription_MessagegetPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;getTitle \n o`PatternWizard_Title#getWizardDefaultPageImageDescriptor.()Lorg/eclipse/jface/resource/ImageDescriptor; sut&org/eclipse/egf/core/ui/EgfUiActivator vw getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;ywizban/pattern.gif s{ |}getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; SourceFilePatternWizard.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals! T*+, ,- * D**Y 467  #$o#%+L+*/359>B+ > @ BCA@!F # GHIJb +,K-Q QRSTP * WX  YZ8.[ ]  a8.b e  efT o 4 Wghijkl8.m w  pq3 rxz   ~ L Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/RootPatternLibraryWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1502 Text-content-md5: 11494a42e3ffc648f8e05986fecdb6df Text-content-sha1: 6fab7127e2eb092d38a1e1d4a5379406253fee11 Content-length: 1561 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1,7org/eclipse/egf/core/ui/wizard/RootPatternLibraryWizard;org/eclipse/egf/core/ui/wizard/AbstractPatternLibraryWizardS(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;ZZ)VCode  LineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/wizard/RootPatternLibraryWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZcreationMode_pgetAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; +org/eclipse/egf/model/ModelPackage$Literals PATTERN_VIEWPOINT__LIBRARIES"Lorg/eclipse/emf/ecore/EReference;  'org/eclipse/emf/edit/command/AddCommand !"create(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_p SourceFileRootPatternLibraryWizard.java InnerClasses*"org/eclipse/egf/model/ModelPackageLiterals!` *+, # $ 4    R +,- - * #$  %&'( )+ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/TaskFactoryHolderWizard.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3324 Text-content-md5: 00e072dd1c1a91d2e0b113b82537088d Text-content-sha1: 003f995f0bed8fc8fc19e165b46a8c2624efe0a0 Content-length: 3383 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1b6org/eclipse/egf/core/ui/wizard/TaskFactoryHolderWizard9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizardR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VCode  LineNumberTableLocalVariableTablethis8Lorg/eclipse/egf/core/ui/wizard/TaskFactoryHolderWizard;parent_pLorg/eclipse/emf/ecore/EObject;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;readOnlyMode_pZaddPages()V  ?org/eclipse/egf/core/ui/wizard/page/TaskFactoryHolderWizardPagetaskFactoryHolderWizardPage  (Ljava/lang/String;)V  !"addPage)(Lorg/eclipse/jface/wizard/IWizardPage;)VdoCreateModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; &('"org/eclipse/egf/model/ModelFactory )* eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; &, -.createTaskFactoryHolder+()Lorg/eclipse/egf/model/TaskFactoryHolder;getCreationDescription()Ljava/lang/String; 243'org/eclipse/egf/core/ui/wizard/Messages 561TaskFactoryHolderWizard_CreateDescription_MessageLjava/lang/String;getEditDescription 29 :6/TaskFactoryHolderWizard_EditDescription_MessagegetAddCommandForCreatedElement(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/emf/common/command/Command; >@?+org/eclipse/egf/model/ModelPackage$Literals AB*FACTORY_COMPONENT_INVOCATION__TASK_FACTORY"Lorg/eclipse/emf/ecore/EReference; DFE'org/eclipse/emf/edit/command/AddCommand GHcreate(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command;editingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;createdElement_pgetPluginChangeCommand(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)Lorg/eclipse/egf/model/edit/command/plugin/PluginChangeWrapperCommand;OXorg/eclipse/egf/model/edit/command/plugin/taskfactory/SetTaskFactoryHolderWrapperCommand NQ R(Lorg/eclipse/emf/edit/domain/EditingDomain;Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)V+Lorg/eclipse/emf/edit/domain/EditingDomain; feature_p*Lorg/eclipse/emf/ecore/EStructuralFeature;value_pLjava/lang/Object;getTitle 2Z [6TaskFactoryHolderWizard_Title SourceFileTaskFactoryHolderWizard.java InnerClasses`"org/eclipse/egf/model/ModelPackageLiterals!T*+, '( * D**Y /01  #$3 %+ 8  /0.1 @  70.8 H  ;<R +,=-C R * IJ  KLM_ NY+,-P \ 4 IS  TU VWX0.Y d  \]^ >_a Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 8827 Text-content-md5: 97e5e30dd4a5dea906ce088e0860bc11 Text-content-sha1: d3fd64993d03face8be8ca50d455a203a2c7f55f Content-length: 8837 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### # Common message CreationWizard_Prefix=New EditWizard_Prefix=Edit Wizard_Title={0} {1} WizardPage_Description_Title=Description: WizardPage_Description_Tooltip=Describe the {0}. # FactoryComponent wizard messages. EditFactoryComponentWizard_EditDescription_Message=Modify the selected factory component. EditFactoryComponentWizard_Title=Factory Component EditFactoryComponentWizardPage_Title=Factory Component content EditFactoryComponentWizardPage_Name_Title=Name: EditFactoryComponentWizardPage_Name_Tooltip=Readable name of the factory component. EditFactoryComponentWizardPage_Name_ErrorMessage=Factory component name must be filled in. # FactoryComponentInvocation wizard messages. FactoryComponentInvocationWizard_CreateDescription_Message=Create a new factory component invocation. FactoryComponentInvocationWizard_EditDescription_Message=Modify the selected factory component invocation. FactoryComponentInvocationWizard_Title=Factory Component Invocation FactoryComponentInvocationWizardPage_Title=Factory Component Invocation content FactoryComponentInvocationWizardPage_Name_Title=Name: FactoryComponentInvocationWizardPage_Name_Tooltip=Readable name of the factory component invocation. FactoryComponentInvocationWizardPage_Name_ErrorMessage=Factory component invocation name must be filled in. FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Title=Referenced Factory Component: FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Tooltip=Referenced factory component. FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_ErrorMessage=Unknown referenced factory component. FactoryComponentInvocationWizard_WarnDialog_Title=Factory Component Invocation Modification FactoryComponentInvocationWizard_WarnDialog_Message=Referenced Factory Component was changed, existing context elements may be invalid! TaskFactoryHolderWizard_CreateDescription_Message=Create a new task factory. TaskFactoryHolderWizard_EditDescription_Message= Modify the selected task factory. TaskFactoryHolderWizard_Title=Task Factory Reference TaskFactoryHolderWizardPage_Title=Task Factory Reference content TaskFactoryHolderWizardPage_Class_Title=Class name: TaskFactoryHolderWizardPage_OpenTypeDialog_Title=Select an ITaskFactory Java class # ContractElement wizard messages. ContractElementWizard_CreateDescription_Message=Create a new contract element. ContractElementWizard_EditDescription_Message=Modify the selected contract element. ContractElementWizard_Title=Contract Element ContractElementWizardPage_Title=Contract Element content ContractElementWizardPage_Key_Title=Key: ContractElementWizardPage_Key_Tooltip=Define the key of the contract element. ContractElementWizardPage_Key_ErrorMessage=Key must be filled in. ContractElementWizardPage_TypeGroup_Title=Type selection ContractElementWizardPage_TypeGroup_Type=Type ContractElementWizardPage_TypeGroup_Reference=Reference ContractElementTypeWizardPage_Class_Title=Class name: ContractElementTypeWizardPage_OpenTypeDialog_Title=Select an ITypeHolder Java class ContractElementTypeWizardPage_ErrorMessage_1=At least, one contract element reference must be referenced ! ContractElementTypeWizardPage_ErrorMessage_2=All referenced contract element must have the same type. ContractElementWizardPage_OptionsGroup_Title=Options ContractElementWizardPage_OptionsGroup_Mandatory_Title=Mandatory ContractElementWizardPage_OptionsGroup_Mandatory_Tooltip=Whether or not this contract element is mandatory # Domain wizard messages. DomainWizard_CreateDescription_Message=Create a new domain. DomainWizard_EditDescription_Message=Modify the selected domain. DomainWizard_Title=Domain DomainWizardPage_Title=Domain content NewDomainWizardPage_Package_Title=Package name: NewDomainWizardPage_Package_Tooltip=Name of the root package for the created package. NewDomainWizardPage_Package_ErrorMessage=Root package name must be not empty and match the regular expression [a-z]*[A-Z]* NewDomainWizardPage_Domain_Title=Domain file path: NewDomainWizardPage_Domain_Tooltip=Name of the ecore file that contains the domain metamodel. NewDomainWizardPage_Domain_ErrorMessage=Selected domain file does not exist. NewDomainWizardPage_CreateDomain_Title=Create Domain NewDomainWizardPage_CreateDomain_Tooltip=To select an existing domain, uncheck the Create Domain checkbox. EditDomainWizardPage_OpenResourceDialog_Title=Select a domain # ContextElement wizard messages. ContextElementWizard_CreateDescription_Message=Create a new context element. ContextElementWizard_EditDescription_Message=Modify the selected context element. ContextElementWizard_Title=Context Element ContextElementWizardPage_Title=Context Element content ContextElementWizardPage_Group_Key=Key ContextElementWizardPage_Group_Reference=Reference to a contract element ContextElementWizardPage_Key_Title=Key: ContextElementWizardPage_Key_Tooltip=Define the key of the context element. ContextElementWizardPage_Key_ErrorMessage=Key must be filled in. ContextElementKeyWizardPage_Type_Title=Class name: ContextElementKeyWizardPage_OpenTypeDialog_Title=Select an ITypeHolder Java class ContextElementValueWizardPage_Type_Title=Type: ContextElementValueWizardPage_Type_Tooltip=Type of the context element. ContextElementValueWizardPage_Value_Title=Value: ContextElementValueWizardPage_OpenValueTypeDialog_Title=Select a ''{0}'' Java class ContextElementValueWizardPage_ErrorMessage_EmtpyValue=A Context element value must be filled in. ContextElementValueWizardPage_ErrorMessage_NotValidValue=Entered value is not a valid one for context element type. ContextElementValueWizardPage_ErrorMessage_NotValidJavaValue=Entered java class name is either not valid or unloadable. # Pattern library wizard messages. PatternLibraryWizard_Title=Pattern Library PatternLibraryWizard_CreateDescription_Message=Create a new pattern library. PatternLibraryWizard_EditDescription_Message=Modify the selected pattern library. PatternLibraryWizardPage_Title=Pattern Library content PatternLibraryWizardPage_Name_Title=Name: PatternLibraryWizardPage_Name_Tooltip=Name of the pattern library. PatternLibraryWizardPage_Name_ErrorMessage=Pattern library name must be filled in. PatternWizard_Title=Pattern PatternWizard_CreateDescription_Message=Create a new pattern. PatternWizard_EditDescription_Message=Modify the selected pattern. PatternWizardPage_Title=Pattern content PatternWizardPage_Name_Title=Name: PatternWizardPage_Name_Tooltip=Name of the pattern. PatternWizardPage_Name_ErrorMessage=Pattern name must be filled in. PatternLibraryProductionSequenceWizardPage_Title=Pattern Library production orchestration PatternLibraryRuntimeSequenceWizardPage_Title=Pattern Library runtime orchestration AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Title=Pattern Element Selection AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Message=Select a Pattern Element (*, ?): PatternElementValidator_Name_Already_Used_ErrorMessage=Name {0} is already used by {1}. PatternElementValidator_Sibling_EndMessage=a sibling element # Mapping wizard messages. MappingWizard_Title=Mapping MappingWizard_CreateDescription_Message=Create a new mapping. MappingWizard_EditDescription_Message=Modify the selected mapping. MappingWizardPage_Title=Mapping content MappingWizardPage_Id_Title=Id: MappingWizardPage_Id_Tooltip=Identifier of the mapping. MappingWizardPage_Id_ErrorMessage=Mapping ID must be filled in. MappingWizardPage_Name_Title=Name: MappingWizardPage_Name_Tooltip=Name of the mapping. MappingWizardPage_Name_ErrorMessage=Mapping name must be filled in. MappingWizardPage_FcAsSource_Title=Source (domain provided by): MappingWizardPage_FcAsSource_Tooltip=Factory component that provides the domain used as source for the mapping. MappingWizardPage_FcAsSource_ErrorMessage=Unknown referenced factory component as source. MappingWizardPage_FcAsTarget_Title=Target (domain provided by): MappingWizardPage_FcAsTarget_Tooltip=Factory component that provides the domain used as target for the mapping. MappingWizardPage_FcAsTarget_ErrorMessage=Unknown referenced factory component as target. Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/AbstractDomainWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4680 Text-content-md5: a9a63a0602a3650b261ea1e487ff5784 Text-content-sha1: 4f24986864ae27894dc2e32b472006254394537d Content-length: 4739 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/core/ui/wizard/page/AbstractDomainWizardPage; pageName_pS(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;getDefaultDomainFilePath()Ljava/lang/String; % &'getDomainFolder&()Lorg/eclipse/core/resources/IFolder; )+*"org/eclipse/core/resources/IFolder ,-getFile6(Ljava/lang/String;)Lorg/eclipse/core/resources/IFile; /10 org/eclipse/core/resources/IFile 23 getFullPath"()Lorg/eclipse/core/runtime/IPath; 576org/eclipse/core/runtime/IPath 89removeFirstSegments#(I)Lorg/eclipse/core/runtime/IPath; 5; <#toString domainFolder$Lorg/eclipse/core/resources/IFolder; domainFile"Lorg/eclipse/core/resources/IFile;relativeDomainFilePath Lorg/eclipse/core/runtime/IPath;createDomainFileFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V F G#getDomainFileExtension IKJ'org/eclipse/egf/core/ui/wizard/Messages L NewDomainWizardPage_Domain_Title IN O-EditDomainWizardPage_OpenResourceDialog_Title Q RS isReadOnly()Z UWV2org/eclipse/egf/common/ui/helper/FieldEditorHelper XYcreateDomainFieldEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/core/resources/IContainer;Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/field/DomainFieldEditor; [  ]_^5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor `agetValueControl#()Lorg/eclipse/swt/widgets/Control;corg/eclipse/swt/widgets/Text egf+org/eclipse/egf/model/ModelPackage$Literals hi DOMAIN__PATH"Lorg/eclipse/emf/ecore/EAttribute; k lmgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; o pqbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)Vparent_p#Lorg/eclipse/swt/widgets/Composite;pattern domainPathLorg/eclipse/swt/widgets/Text;isDomainSelectedExist y z{getDomainFileNameFieldEditor9()Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; b} ~#getText  getHostingProject%()Lorg/eclipse/jdt/core/IJavaProject; !org/eclipse/jdt/core/IJavaProject  getProject'()Lorg/eclipse/core/resources/IProject; +#org/eclipse/core/resources/IProject / SexistsresultZrelativeDomainPathhostingProject#Lorg/eclipse/jdt/core/IJavaProject;containerProject%Lorg/eclipse/core/resources/IProject;  getFolder8(Ljava/lang/String;)Lorg/eclipse/core/resources/IFolder; ;java/lang/Object (org/eclipse/egf/common/helper/FileHelper ensurePathAvailabilityprojectgetHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds NEW_DOMAIN_WIZARD_PAGE SourceFileAbstractDomainWizardPage.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!    >*+ <=T*+,- FG* !"#v"*$L+ (M,.4N-:PQST*"=>?@ABCD;*$M*EN*+HM,-*PTZ*Z\b:*d*jn6 \^ _ ` abcde_h,j:k4;;rs6=> 1t,uvwS7<*x\b|M*N--:,:<"rtuvw#x-y5{>75% #-?@&'$L*M,,N-L++ "*$">G#- #. z{/*Z  e Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7484 Text-content-md5: e0e04422ac7ad6e8bfcc4961585efae8 Text-content-sha1: 953f1d0571e0ae92c7ebcd6d01f53b92b5982354 Content-length: 7543 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Borg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage8org/eclipse/egf/common/ui/wizard/page/AbstractWizardPage__loggerLorg/apache/log4j/Logger;_hostingProjectClassLoaderLjava/lang/ClassLoader;_hostingBundleLorg/osgi/framework/Bundle;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; ! LineNumberTableLocalVariableTable(Ljava/lang/String;)V ' $%thisDLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V . $,title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; 5 67getModelElementWizard=()Lorg/eclipse/egf/core/ui/wizard/AbstractModelElementWizard; 9;:9org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard 23 getParent 9> <?!()Lorg/eclipse/emf/ecore/EObject;A-org/eclipse/egf/model/NamedModelElementWithId C DE getWizard$()Lorg/eclipse/jface/wizard/IWizard; isReadOnly()Z 9I JGisInReadOnlyModehandleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z N O%setErrorMessage QSR5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor TGisValid QV WgetErrorMessagefieldEditors_p8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;Z errorMessageiI fieldEditor7Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;getPageDescription 9b cgetDescriptionshowErrorMessageR(Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;Ljava/lang/String;)V gNh;org/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor gj d  fieldEditor_p=Lorg/eclipse/egf/common/ui/toolkit/fields/CStringFieldEditor;errorMessage_pbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V qr org/eclipse/emf/ecore/EAttribute t nu(Lorg/eclipse/swt/widgets/Text;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)Vtext_pLorg/eclipse/swt/widgets/Text; feature_p"Lorg/eclipse/emf/ecore/EAttribute;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;featureValueChangeListener_p?Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;=org/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage ~ $G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)V 2org/eclipse/egf/common/ui/helper/DataBindingHelper bindTextToProperty(Lorg/eclipse/swt/widgets/Control;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/core/databinding/observable/value/IValueChangeListener;)VpropertyName_pLjava/lang/Object;featureValueChangeListenergetHostingProject%()Lorg/eclipse/jdt/core/IJavaProject;  <3 -org/eclipse/egf/model/data/helper/ModelHelper  getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject; #org/eclipse/core/resources/IProject +org/eclipse/egf/common/helper/ProjectHelper getJavaProject7(Ljava/lang/String;)Lorg/eclipse/jdt/core/IJavaProject; javaProject#Lorg/eclipse/jdt/core/IJavaProject;project%Lorg/eclipse/core/resources/IProject;getHostingPluginId getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; &org/eclipse/egf/model/FactoryComponent getId 0org/eclipse/egf/common/misc/PlatformLocationType WORKSPACE_ONLY2Lorg/eclipse/egf/common/misc/PlatformLocationType; 8org/eclipse/egf/model/edit/helper/FactoryComponentHelper  getPluginIdX(Ljava/lang/String;Lorg/eclipse/egf/common/misc/PlatformLocationType;)Ljava/lang/String; fcContainer(Lorg/eclipse/egf/model/FactoryComponent;hostingPluginIdgetHostingProjectClassLoader()Ljava/lang/ClassLoader;    java/lang/Object getClass()Ljava/lang/Class;  getClassLoader getClassLoaderForS(Lorg/eclipse/jdt/core/IJavaProject;Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader;java/lang/StringBuilderBAbstractNamedElementWizardPage.getHostingProjectClassLoader(..) _ ' toString  warn*(Ljava/lang/Object;Ljava/lang/Throwable;)Vjava/lang/Exception exception_pLjava/lang/Exception; loggerMessageLjava/lang/StringBuilder;getHostingBundle()Lorg/osgi/framework/Bundle;  "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator; getBundleForFactoryComponentL(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/osgi/framework/Bundle;getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory; &org/eclipse/egf/core/ui/EgfUiActivator *()Lorg/eclipse/egf/core/ui/EgfUiActivator; getEditingDomainInReadOnly;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getEditingDomainresult.Lorg/eclipse/emf/common/notify/AdapterFactory; SourceFile#AbstractModelElementWizardPage.java!   3 " 2-#$% >*+&" DE#()*+$, T*+,--" OP#*()*+/+0123 2*48"W# ()<3 5 *4=@"_#  ()67 2*B9"g# ()FG 2*4H"o# ()KL N=*4H *MN6 +2:P= UN+-*-M":y{ }!)-5CGL#>N()NXYLTZ9[++\]!^_` 5 *B9a"#  ()de P +,f+i" #  () kl m+no e*+,p-s" #4()vwxyz{|}nu  ~Y*:+,-"#>()vw+z|} } hL*M, ,L+" # ()  ]*L+M,"# ()+ B*9*L+**+*¶ȸ˵MYѷN -,*$'"&  '(2=#*B() 1(2  L****"# () f"*4H L+"  #"()  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2782 Text-content-md5: 590e1f534e41b42cc5d570084f719562 Text-content-sha1: 10a25809afdfd08b03e71c55ff6826cf5b5c2b9f Content-length: 2841 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1sNorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$1java/lang/Object1org/eclipse/egf/common/ui/viewers/IContentHandlerthis$0NLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;Q(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisPLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$1;createNewElement()Ljava/lang/Object;Dorg/eclipse/egf/core/ui/internal/dialogs/ModelElementSelectionDialog Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage getShell!()Lorg/eclipse/swt/widgets/Shell;  !"(Lorg/eclipse/swt/widgets/Shell;)V #%$'org/eclipse/egf/core/ui/wizard/Messages &'LAbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_TitleLjava/lang/String; ) *+setTitle(Ljava/lang/String;)V #- .'NAbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Message 0 1+ setMessage 3 45setMultipleSelection(Z)V 7 89getDisplayedPatternElements()Ljava/util/List; ; <= setElements(Ljava/util/List;)V ? @Aopen()I C DE getResult()[Ljava/lang/Object;patternLjava/lang/Object;selectionDialogFLorg/eclipse/egf/core/ui/internal/dialogs/ModelElementSelectionDialog; selection[Ljava/lang/Object; SignatureD()Ljava/util/List<+Lorg/eclipse/egf/model/NamedModelElementWithId;>;Ojava/util/ArrayList Q RSgetPatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary; UWV$org/eclipse/egf/model/PatternLibrary XYgetPatternElements%()Lorg/eclipse/emf/common/util/EList; N[ \(Ljava/util/Collection;)V ^ _9getFilteredPatternElements acbjava/util/List de removeAll(Ljava/util/Collection;)ZcontainedElementsLjava/util/List;LocalVariableTypeTable@Ljava/util/List; removeElement(Ljava/lang/Object;)V element_p SourceFile-AbstractPatternLibrarySequenceWizardPage.javaEnclosingMethod qinitializeContentHandler InnerClasses   8 *+ * T   GLY* M,"(,,/,2,*6:,>,BN- --2L+. Y[]_a$c,e3g8hAjEm*GEFG6HI8 JK89LM r$NY* PTZL+* ]`W+wy"z$fgh fijk 5lGmnopr  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1219 Text-content-md5: 0d5e395595a9049c525278f180b3bf44 Text-content-sha1: ba48046562572707f295e51e9b7e8f42c57fd260 Content-length: 1278 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&Porg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2$1Iorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandlerthis$1PLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2;S(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2;)VCode    ()VLineNumberTableLocalVariableTablethisRLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2$1;doHandleSelection)(Lorg/eclipse/jface/viewers/ISelection;)Z $org/eclipse/jface/viewers/ISelection isEmpty()Z selection_p&Lorg/eclipse/jface/viewers/ISelection; SourceFile-AbstractPatternLibrarySequenceWizardPage.javaEnclosingMethod!Norg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2 #$createRemoveButtonHandlerM()Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler; InnerClasses  8 *+ *     C+ "%  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1725 Text-content-md5: 297ec828da936d26fcb32443da00b4a0 Text-content-sha1: 02fcc714f9a385614a9adbba06b11b61a8335d70 Content-length: 1784 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1+Norg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2Corg/eclipse/egf/common/ui/viewers/OrderedListViewerWithAddAndRemovethis$0NLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;t(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;Lorg/eclipse/swt/widgets/Composite;)VCode    &(Lorg/eclipse/swt/widgets/Composite;)VLineNumberTableLocalVariableTablethisPLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2; $anonymous0#Lorg/eclipse/swt/widgets/Composite;getContentHandler5()Lorg/eclipse/egf/common/ui/viewers/IContentHandler; Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage access$0(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;)Lorg/eclipse/egf/common/ui/viewers/IContentHandler;createRemoveButtonHandlerM()Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler; Porg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2$1 " #S(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2;)V SourceFile-AbstractPatternLibrarySequenceWizardPage.javaEnclosingMethod ()createOrderedViewerZ(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer; InnerClasses  C *+ *,     2*   3 Y*!  $%&'* Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5694 Text-content-md5: d23ed96d991d6cfc3fbf040f5a0cb222 Text-content-sha1: 5f24372a6688c447f89eaf4743d015966ba83402 Content-length: 5753 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage?org/eclipse/egf/core/ui/internal/observable/IListViewerObserverVIEWER_HEIGHT_IN_CHARSI ConstantValue VIEWER_WIDTH_IN_CHARS<_orderedViewer5Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;_runtimeSequenceContentHandler3Lorg/eclipse/egf/common/ui/viewers/IContentHandler;(Ljava/lang/String;)VCode    initializeContentHandler()VLineNumberTableLocalVariableTablethisNLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V "  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;'Norg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$1 &) *Q(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;)V , getFilteredPatternElements()Ljava/util/List; Signature&()Ljava/util/List; 243java/util/Collections 5. emptyListcreateOrderedViewerZ(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/egf/common/ui/viewers/OrderedListViewer;9Norg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage$2 8; <t(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;Lorg/eclipse/swt/widgets/Composite;)Vparent_p#Lorg/eclipse/swt/widgets/Composite;initializeOrderedViewer/(Lorg/eclipse/jface/viewers/StructuredViewer;)V BDC*org/eclipse/jface/viewers/StructuredViewer EF getControl#()Lorg/eclipse/swt/widgets/Control; HJIorg/eclipse/swt/widgets/Control KL getLayoutData()Ljava/lang/Object;Norg/eclipse/swt/layout/GridData P QRconvertWidthInCharsToPixels(I)I MT U widthHint W XRconvertHeightInCharsToPixels MZ [ heightHint]@org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProvider _ `agetAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory; \c d1(Lorg/eclipse/emf/common/notify/AdapterFactory;)V Bf ghsetLabelProvider1(Lorg/eclipse/jface/viewers/IBaseLabelProvider;)VdecoratedViewer,Lorg/eclipse/jface/viewers/StructuredViewer;data!Lorg/eclipse/swt/layout/GridData;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V p 67 r  tvu3org/eclipse/egf/common/ui/viewers/OrderedListViewer wxgetDecoratedViewer.()Lorg/eclipse/jface/viewers/StructuredViewer; z ?@|Porg/eclipse/egf/core/ui/internal/viewers/ObservablePatternElementContentProvider {~  { addListViewerObserverD(Lorg/eclipse/egf/core/ui/internal/observable/IListViewerObserver;)V B setContentProvider/(Lorg/eclipse/jface/viewers/IContentProvider;)V  .getPatternElementsOrder B setInput(Ljava/lang/Object;)V'observablePatternElementContentProviderRLorg/eclipse/egf/core/ui/internal/viewers/ObservablePatternElementContentProvider;patternElementsOrderLjava/util/List;LocalVariableTypeTable$Ljava/util/List;java/util/ArrayList (I)V  getOrchestrationValue()Ljava/lang/String; java/lang/String length()I  getPatternElements$(Ljava/lang/String;)Ljava/util/List;result orchestration8(Ljava/lang/String;)Ljava/util/List; elementAdded(Ljava/util/List;)V'(Ljava/util/List;)V elements_pelementRemovedgetCompleteStatus()ZB()Ljava/util/List;  getPatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary; $org/eclipse/egf/model/PatternLibrary %()Lorg/eclipse/emf/common/util/EList;  getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;access$0(Lorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage;)Lorg/eclipse/egf/common/ui/viewers/IContentHandler; SourceFile-AbstractPatternLibrarySequenceWizardPage.java InnerClasses!      F *+*AB C   \ *+,-!*LM N*   # $%; *&Y*(+ T   -./0.1 67> 8Y*+:  =>?@}/+AGMM,*<OS,* VY+\Y*^be . //ij $klmn5**+oq*qsM*,y{Y}N-*,-*:,& #(.4455=>$ij. ../0!YL*M,, *,L+  !   //G /G , ./4 *  2*  %*+:&8 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage$JavaTypeHolderChangeListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1941 Text-content-md5: 8df48a01844270ea00fd0d7e81762709 Text-content-sha1: f5785786537b48a0d78e4103016bb16363191c75 Content-length: 2000 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1=\org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage$JavaTypeHolderChangeListener=org/eclipse/egf/core/ui/internal/databinding/UpdateWizardPagethis$0ALorg/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage;(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode    G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VLineNumberTableLocalVariableTablethis^Lorg/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage$JavaTypeHolderChangeListener; wizardPage_pDLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;handleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V >org/eclipse/core/databinding/observable/value/ValueChangeEvent getObservableValueB()Lorg/eclipse/core/databinding/observable/value/IObservableValue;  >org/eclipse/core/databinding/observable/value/IObservableValue !"getValue()Ljava/lang/Object;$java/lang/String &('?org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage )*getContextElement(()Lorg/eclipse/egf/model/ContextElement; ,.--org/eclipse/egf/model/data/helper/ModelHelper /0setContextType;(Lorg/eclipse/egf/model/ContextElement;Ljava/lang/String;)V 2 event_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent; typeClassNameLjava/lang/String;contextElement&Lorg/eclipse/egf/model/ContextElement; SourceFile ContextElementKeyWizardPage.java InnerClassesJavaTypeHolderChangeListener  C *+ *,     x +#M* %N-,+*+1 *  34 56 789:; &< Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6583 Text-content-md5: c3c147eacd46434fac8718da139719fe Text-content-sha1: 01b2a4690ec83fe84372d68def930a485402262c Content-length: 6642 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage!_contextElementKeyTypeFieldEditor6Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;_contextElementKeyFieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V  createKeyFieldEditor  !createKeyTypeFieldEditor # $handlePageLayoutparent_p#Lorg/eclipse/swt/widgets/Composite; (  *,+2org/eclipse/egf/common/ui/helper/FieldEditorHelper -.layoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)V 021'org/eclipse/egf/core/ui/wizard/Messages 3&ContextElementKeyWizardPage_Type_Title 05 60ContextElementKeyWizardPage_OpenTypeDialog_Title 8 9:getHostingProjectClassLoader()Ljava/lang/ClassLoader; < =>getHostingBundle()Lorg/osgi/framework/Bundle;@/org/eclipse/egf/model/contract/type/ITypeHolder B CD isReadOnly()Z *F GHcreateJavaClassFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor; J  LNM4org/eclipse/egf/common/ui/field/JavaClassFieldEditor OPgetTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; R STgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;V$org/eclipse/egf/model/ContextElement UX YZgetContextType()Lorg/eclipse/egf/model/Type; \^]org/eclipse/egf/model/Type _`getTypeHolderClassName()Ljava/lang/String;bdtypef;org/eclipse/egf/core/ui/internal/databinding/JavaTypeHolder e i\org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage$JavaTypeHolderChangeListener hk l(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)V n opbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V Lr stisValid(Z)Z classNameLorg/eclipse/swt/widgets/Text;contextElement&Lorg/eclipse/egf/model/ContextElement; contextTypeLorg/eclipse/egf/model/Type;typeHolderClassName 0} ~"ContextElementWizardPage_Key_Title 0 $ContextElementWizardPage_Key_TooltipDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator 0 )ContextElementWizardPage_Key_ErrorMessage * createStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; Dorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor O ()Lorg/eclipse/swt/widgets/Text; org/eclipse/swt/widgets/Text DsetFocus +org/eclipse/egf/model/ModelPackage$Literals CONTEXT_ELEMENT__KEY"Lorg/eclipse/emf/ecore/EAttribute;  o(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V rkeygetCompleteStatuscanFlipToNextPage5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor  handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z  getContextElement(()Lorg/eclipse/egf/model/ContextElement; U setContractElementReference3(Lorg/eclipse/egf/model/ContractElementReference;)V fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;Z getPageTitle 0 ContextElementWizardPage_TitlegetHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds $NEW_CONTEXT_ELEMENT_TYPE_WIZARD_PAGE getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage;   getWizard$()Lorg/eclipse/jface/wizard/IWizard;contextElementValuePage  org/eclipse/jface/wizard/IWizard getPage:(Ljava/lang/String;)Lorg/eclipse/jface/wizard/IWizardPage;Aorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage L `getStringValue updateContextElementTypewizard"Lorg/eclipse/jface/wizard/IWizard;nextPageCLorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage; SourceFile ContextElementKeyWizardPage.java InnerClassesJavaTypeHolderChangeListener"org/eclipse/egf/model/ModelPackageLiterals!   >*+  ;<  T*+,- EF* P*+*+*+"NP RS%&$ B +*') Z [  %&!  l*+*/4*7*;?*AEI*I+KM*QUN-W: [a:*,ceYghY**jm*IqWFcdefg h ijkcn&p.r6sIubwkx>ll%&&Fuv.>wx66yzI#{ C*+*|Y*A'*'M,W*,*Q*'W> ',9B CC%&'vD , D w)Y*'SY*ISL*+= *' )` . ` .  2*QU  h*L+ĹM,*Iζ,  h Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1253 Text-content-md5: 1171ba29747cc88317f8360a99c39358 Text-content-sha1: f3b3558c008b4c64087976b2ffa763cdfe534208 Content-length: 1312 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Gorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$1java/lang/Objectjava/lang/Runnablethis$0GLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;J(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisILorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$1;run Eorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage _treeTransferViewerBLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer; @org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer ! getControl#()Lorg/eclipse/swt/widgets/Control;#!org/eclipse/swt/widgets/Composite "% &layoutcontrol#Lorg/eclipse/swt/widgets/Composite; SourceFile&ContextElementReferenceWizardPage.javaEnclosingMethod -.createTransferViewer&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses   8 *+ *    O* "L+$'()*+,/  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1249 Text-content-md5: 3442c417a3876660234e7c9945ab7343 Text-content-sha1: 1313fddee85e6bb6d1b51e8ba25aa9d07dd34bcb Content-length: 1308 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(Gorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$2borg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$TypedSelectionChangedHandlerthis$0GLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;J(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;)VCode    LineNumberTableLocalVariableTablethisILorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$2;handleInitialCondition()Z Eorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage getContextElement(()Lorg/eclipse/egf/model/ContextElement; $org/eclipse/egf/model/ContextElement getContractElementReference2()Lorg/eclipse/egf/model/ContractElementReference; SourceFile&ContextElementReferenceWizardPage.javaEnclosingMethod $%initializeHandlersE(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;)V InnerClassesTypedSelectionChangedHandler  9 *+ *+     =*   !"#&' Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1249 Text-content-md5: c2206c47743f7d9066b9c6b9df73d626 Text-content-sha1: 1b0999560f9663d03973c72c08a061fd0a1ff850 Content-length: 1308 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(Gorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$3borg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$TypedSelectionChangedHandlerthis$0GLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;J(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;)VCode    LineNumberTableLocalVariableTablethisILorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$3;handleInitialCondition()Z Eorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage getContextElement(()Lorg/eclipse/egf/model/ContextElement; $org/eclipse/egf/model/ContextElement getContractElementReference2()Lorg/eclipse/egf/model/ContractElementReference; SourceFile&ContextElementReferenceWizardPage.javaEnclosingMethod $%initializeHandlersE(Lorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;)V InnerClassesTypedSelectionChangedHandler  9 *+ *+     =*   !"#&' Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$ContractElementListObserver.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3071 Text-content-md5: 4c58e923ebe1108f6e11b5da7b4e7fac Text-content-sha1: 513cd23466d3b2c0b9a9aec276eee091c4de1d71 Content-length: 3130 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1paorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$ContractElementListObserverjava/lang/Object?org/eclipse/egf/core/ui/internal/observable/IListViewerObserverthis$0GLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;J(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethiscLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$ContractElementListObserver; elementAdded(Ljava/util/List;)V Signature'(Ljava/util/List;)V java/util/List get(I)Ljava/lang/Object; %org/eclipse/egf/model/ContractElement "$#-org/eclipse/egf/model/data/helper/ModelHelper %&%createContractElementReferenceBasedOnY(Lorg/eclipse/egf/model/ContractElement;)Lorg/eclipse/egf/model/ContractElementReference; (*)Eorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage +,getContextElement(()Lorg/eclipse/egf/model/ContextElement; .0/$org/eclipse/egf/model/ContextElement 12setContractElementReference3(Lorg/eclipse/egf/model/ContractElementReference;)V (4 5 updateButtons elements_pLjava/util/List;referencedContractElement'Lorg/eclipse/egf/model/ContractElement;contractElementReference0Lorg/eclipse/egf/model/ContractElementReference;LocalVariableTypeTable$Ljava/util/List;elementRemoved @BA+org/eclipse/egf/core/data/helper/DataHelper CDgetReferencedContractElementForO(Lorg/eclipse/egf/model/ContextElement;)Lorg/eclipse/egf/model/ContractElement; .F GHsetContractReferenceId(Ljava/lang/String;)VJjava/lang/StringBuilderL1ContractElementListObserver.elementRemoved(..) _ IN HPBFailed to remove the ContractElementReference for context element: IR STappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; .V WXgetId()Ljava/lang/String; (Z [\__loggerLorg/apache/log4j/Logger; I^ _XtoString acborg/apache/log4j/Logger dewarn(Ljava/lang/Object;)VcontextElement&Lorg/eclipse/egf/model/ContextElement;!referencedContractElementToRemove loggerMessageLjava/lang/StringBuilder;elementUpdated SourceFile&ContextElementReferenceWizardPage.java InnerClassesContractElementListObserver   4 *+ *E   %+M,!N* '--* 3K MOQ$R*%%67 89:;< %6=> b* 'M+N,?:-,-,E-IYKM:OQW,UQWY]`* 32 YZ\]_&a0c;dCeOfZiaj>bb67ZfgOh9I89;ij< b6=k R* 3 qr67< 6=lmn (o Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$TypedSelectionChangedHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1641 Text-content-md5: 2656a271e0b091dd4dad1bd4816251b3 Text-content-sha1: 90b676eb7cbc62f64e7201d266918a1c920f4ae2 Content-length: 1700 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1<borg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$TypedSelectionChangedHandlerIorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandlerthis$0GLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;J(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisdLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$TypedSelectionChangedHandler;doHandleSelection)(Lorg/eclipse/jface/viewers/ISelection;)Z  handleInitialCondition()Z-org/eclipse/jface/viewers/StructuredSelection  iterator()Ljava/util/Iterator; "!java/util/Iterator #$next()Ljava/lang/Object;&%org/eclipse/egf/model/ContractElement ( )hasNext selection_p&Lorg/eclipse/jface/viewers/ISelection;resultZ selection/Lorg/eclipse/jface/viewers/StructuredSelection;selectedObjectsLjava/util/Iterator;selectedObjectLjava/lang/Object;LocalVariableTypeTableLjava/util/Iterator<*>; SourceFile&ContextElementReferenceWizardPage.java InnerClasses:Eorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPageTypedSelectionChangedHandler  4 *+ * y   9*=+.+N-::%='&  #)7>99*+4,-&./ 01#234  05678 9; Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 10185 Text-content-md5: b9600dfb3febcc973f1f06ff7b5b0c74 Text-content-sha1: e74b09293ccab217082c48c0e795a25a5ae30dbc Content-length: 10244 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1jEorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPageTREE_VIEWER_STYLEI ConstantValue __loggerLorg/apache/log4j/Logger;TRANSFER_BUTTONSTRANSFER_TREE_STYLEX_treeTransferViewerBLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;_decoratedLabelProvider*Lorg/eclipse/jface/viewers/ILabelProvider;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package !getName()Ljava/lang/String; #%$org/apache/log4j/Logger &' getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; ) LineNumberTableLocalVariableTable(Ljava/lang/String;)V / ,- 1  3 thisGLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V : ,8title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)VACorg/eclipse/egf/core/ui/internal/viewers/CustomTooltipLabelProviderCDorg/eclipse/egf/core/ui/internal/viewers/DecoratedModelLabelProvider BE , @G ,H-(Lorg/eclipse/jface/viewers/ILabelProvider;)V J  L M?createTransferViewerparent_p#Lorg/eclipse/swt/widgets/Composite;Q; SignatureB(Ljava/util/Collection;)V   getParent1()Lorg/eclipse/egf/model/NamedModelElementWithId; -org/eclipse/egf/model/data/helper/ModelHelper getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent;  getContractJ(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/Contract; +org/eclipse/egf/core/data/helper/DataHelper  getReferencedContractElementsFor8(Lorg/eclipse/egf/model/Contract;)Ljava/util/Collection; java/util/Collection addAll(Ljava/util/Collection;)ZreferencedContractElements_pLjava/util/Collection;fc(Lorg/eclipse/egf/model/FactoryComponent;contract Lorg/eclipse/egf/model/Contract;?Ljava/util/Collection;org/eclipse/egf/model/Context 7(Lorg/eclipse/egf/model/Context;)Ljava/util/Collection;contextLorg/eclipse/egf/model/Context;Gorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$2 \ setSelectionChangedHandlerO(Lorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;I)VGorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$3 transferViewer_phandlerKLorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandler;m(Ljava/util/Collection;)Lorg/eclipse/jface/viewers/IContentProvider; \ HsetLeftLabelProvider$org/eclipse/jface/viewers/TreeViewer 4org/eclipse/jface/viewers/ColumnViewerToolTipSupport  enableFor+(Lorg/eclipse/jface/viewers/ColumnViewer;)V\org/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProvider , \ setLeftContentProvider/(Lorg/eclipse/jface/viewers/IContentProvider;)V \  setLeftInput(Ljava/lang/Object;)VreferencedContractElementList_p3possibleContractElementReferenceTreeContentProvider^Lorg/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProvider; \ HsetRightLabelProvider[org/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProvider E \ setRightContentProvider  getContextElement(()Lorg/eclipse/egf/model/ContextElement;    getReferencedContractElementForO(Lorg/eclipse/egf/model/ContextElement;)Lorg/eclipse/egf/model/ContractElement; ([Lorg/eclipse/egf/model/ContractElement;%org/eclipse/egf/model/ContractElementKorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer  ,+([Lorg/eclipse/egf/model/ContractElement;)V \  setRightInputaorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$ContractElementListObserver   addListViewerObserverD(Lorg/eclipse/egf/core/ui/internal/observable/IListViewerObserver;)VobservableContentProvider]Lorg/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProvider;referencedContractElementArray initialInputMLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;contractElementListObservercLorg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$ContractElementListObserver;getCompleteStatus()Z getPageTitle )+*'org/eclipse/egf/core/ui/wizard/Messages ,7ContextElementWizardPage_TitlegetHelpContextId /105org/eclipse/egf/core/ui/internal/help/IHelpContextIds 27)NEW_CONTEXT_ELEMENT_REFERENCE_WIZARD_PAGE 4 5getModelElement7$org/eclipse/egf/model/ContextElementcanFlipToNextPage 6: ;<setContextType(Lorg/eclipse/egf/model/Type;)V 6> ?-setKeycontextElement&Lorg/eclipse/egf/model/ContextElement;Z getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage; F GH getWizard$()Lorg/eclipse/jface/wizard/IWizard;JcontextElementValuePage LNM org/eclipse/jface/wizard/IWizard OPgetPage:(Ljava/lang/String;)Lorg/eclipse/jface/wizard/IWizardPage;RAorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage  T UVgetContractType()Lorg/eclipse/egf/model/Type; XZYorg/eclipse/egf/model/Type [!getTypeHolderClassName Q] ^-updateContextElementTypewizard"Lorg/eclipse/jface/wizard/IWizard;nextPageCLorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage; SourceFile&ContextElementReferenceWizardPage.java InnerClassesContractElementListObserverhborg/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage$TypedSelectionChangedHandlerTypedSelectionChangedHandler!    3"(* C;+,-R*+.*0*X2*ZG K[+4567,8h*+,-9*0*X2*dG Ke+*4567;7<=>?T*@YBYDFI*+K*lno+45NOM?0*PY+X  RU**UW*U[aMcYeN,-f*Uj-m,p*t:xYz: |W***W+Y**Bvxz'{/|4~?DJTYciov+>45NO'_/WJ<T2 T2*M,N+-W* +*45  l*M+,͹W*+ 45  YZo!Y*M+,ջY*M+,ձ*  + !45! 6*U*I*UjY+M*U,*U*,*&  !)4+ 6456! 6vwo*U*I*U[YL*U+*M N, N-,S NY-:*UY*:+,*>  (059>EJT]gm+>o45 O0?5:  T!"g#$%&,*+ 45'!.(*+ 45-!..*+ 452*36*+ 458&(*L+M,>+9+=*&' )+-/&1+*(45#@A 8BCD+*EL+IKQM*N,-SW\,*9:<=)>+*+45&_`abcde*fgi Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2088 Text-content-md5: c2f8d4986a2183bb27e0626311d9efee Text-content-sha1: d128babb777e9a8e9ef7330f84a2551e67e74f43 Content-length: 2147 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1TCorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$1>org/eclipse/egf/common/ui/toolkit/validators/AbstractValidatorthis$0CLorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage;X(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage;Ljava/lang/String;)VCode    (Ljava/lang/String;)VLineNumberTableLocalVariableTablethisELorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$1; $anonymous0Ljava/lang/String;isValid&(Ljava/lang/Object;)Ljava/lang/String; Aorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage  _typeHolder1Lorg/eclipse/egf/model/contract/type/ITypeHolder;  /org/eclipse/egf/model/contract/type/ITypeHolder !"isJava()Z$3org/eclipse/egf/model/contract/type/ClassTypeHolder & '(getHostingProjectClassLoader()Ljava/lang/ClassLoader; #* +,setClassLoader(Ljava/lang/ClassLoader;)V .0/'org/eclipse/egf/core/ui/wizard/Messages 19org/eclipse/egf/common/ui/field/ContextElementFieldEditor @AgetStringValue()Ljava/lang/String; C D(Ljava/lang/String;)Z F GAgetErrorMessagevalue_pLjava/lang/Object; errorMessageresultZ SourceFile"ContextElementValueWizardPage.javaEnclosingMethod QRcreateValueTypeFieldEditor8(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;)V InnerClasses  C *+ *,     iM* Z* !* #* %)*-2 *52* * 8<B>*EM5M,.  /9@W[cg*iiHIgJW KLMNOPS  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1768 Text-content-md5: d2eb5e7862f5988926653cc3cfe85c39 Text-content-sha1: 4ee921f3fad2a75aee2a3c5f048f39b6407d96b1 Content-length: 1827 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 16Corg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$2?org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandlerthis$0CLorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage;(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode    G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VLineNumberTableLocalVariableTablethisELorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$2; $anonymous0DLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;doHandleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V >org/eclipse/core/databinding/observable/value/ValueChangeEvent diff9Lorg/eclipse/core/databinding/observable/value/ValueDiff;  7org/eclipse/core/databinding/observable/value/ValueDiff !" getNewValue()Ljava/lang/Object;$java/lang/String &('Aorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage )*access$0X(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage;Ljava/lang/String;)Vevent_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;fullIdLjava/lang/String; SourceFile"ContextElementValueWizardPage.javaEnclosingMethod 34createValueChangeHandlerC()Lorg/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler; InnerClasses  C *+ *,     Z+#M* ,%  +, -./01&25  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 11931 Text-content-md5: 5d4b9dba731c134ce76c5b9c10ad0081 Text-content-sha1: fbee1089d14d0b29e2b8790840f46f6445a98904 Content-length: 11990 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Aorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage__loggerLorg/apache/log4j/Logger;_contextElementTypeFieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;_contextElementValueFieldEditor;Lorg/eclipse/egf/common/ui/field/ContextElementFieldEditor;_contextElementType=Lorg/eclipse/egf/core/ui/internal/databinding/JavaTypeHolder; _typeHolder1Lorg/eclipse/egf/model/contract/type/ITypeHolder;_providedSelectionDialog(Lorg/eclipse/ui/dialogs/SelectionDialog;()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; !#"org/apache/log4j/Logger $% getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; ' LineNumberTableLocalVariableTable(Ljava/lang/String;)V - *+thisCLorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V 4 *2title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V ; <=createTypeFieldEditor7(Lorg/eclipse/swt/widgets/Composite;)Ljava/lang/String; ? @AcreateValueTypeFieldEditor8(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;)V C D9handlePageLayoutparent_p#Lorg/eclipse/swt/widgets/Composite;typeHolderClassName getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage; K  MON2org/eclipse/egf/common/ui/helper/FieldEditorHelper PQlayoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)V SUT'org/eclipse/egf/core/ui/wizard/Messages V1(ContextElementValueWizardPage_Type_Title SX Y1*ContextElementValueWizardPage_Type_Tooltip[Dorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator Z- ^ _` isReadOnly()Z Mb cdcreateStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; fhgDorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor ijgetTextControl ()Lorg/eclipse/swt/widgets/Text; lnmorg/eclipse/swt/widgets/Text op setEditable(Z)V r stgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;v$org/eclipse/egf/model/ContextElement xzy+org/eclipse/egf/core/data/helper/DataHelper {|getContextType:(Lorg/eclipse/egf/model/ContextElement;)Ljava/lang/String; u~ {()Lorg/eclipse/egf/model/Type; u getContractElementReference2()Lorg/eclipse/egf/model/ContractElementReference; .org/eclipse/egf/model/ContractElementReference getReferencedContractElement)()Lorg/eclipse/egf/model/ContractElement; %org/eclipse/egf/model/ContractElement getContractType;org/eclipse/egf/core/ui/internal/databinding/JavaTypeHolder -  type  bindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)VLorg/eclipse/swt/widgets/Text;contextElement&Lorg/eclipse/egf/model/ContextElement; contextTypeLorg/eclipse/egf/model/Type;referencedContractElement'Lorg/eclipse/egf/model/ContractElement;    getClassTypeFilterD(Lorg/eclipse/egf/model/contract/type/ITypeHolder;)Ljava/lang/Class; S 1)ContextElementValueWizardPage_Value_Title S 17ContextElementValueWizardPage_OpenValueTypeDialog_Title  getHostingProjectClassLoader()Ljava/lang/ClassLoader;  getHostingBundle()Lorg/osgi/framework/Bundle; M createContextElementFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/ContextElementFieldEditor;  Corg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$1 S 18ContextElementValueWizardPage_ErrorMessage_NotValidValue *X(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage;Ljava/lang/String;)V 9org/eclipse/egf/common/ui/field/ContextElementFieldEditor  setValidator<(Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;)V iC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text;  createValueChangeHandlerC()Lorg/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler; +org/eclipse/egf/model/ModelPackage$Literals CONTEXT_ELEMENT__READABLE_VALUE"Lorg/eclipse/emf/ecore/EAttribute;  (Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V  +updateContextElementType isValid(Z)ZtypeHolderClassName_pclassTypeFilterLjava/lang/Class;valueValidator9Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;contextElementValuehandlerALorg/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler;LocalVariableTypeTableLjava/lang/Class<*>;Corg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage$2 *(Lorg/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VgetProvidedSelectionDialogI(Lorg/eclipse/swt/widgets/Shell;)Lorg/eclipse/ui/dialogs/SelectionDialog; /org/eclipse/egf/model/contract/type/ITypeHolder getSelectionDialog 0org/eclipse/egf/common/helper/ClassLoadingHelper  loadClass<(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;org/eclipse/swt/widgets/Shell  getConstructor3([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;java/lang/Object java/lang/reflect/Constructor   newInstance'([Ljava/lang/Object;)Ljava/lang/Object; &org/eclipse/ui/dialogs/SelectionDialog java/lang/StringBuilder?ContextElementValueWizardPage.getProvidedSelectionDialog(..) _  -   toString ! error*(Ljava/lang/Object;Ljava/lang/Throwable;)Vjava/lang/Exception parentShell_pLorg/eclipse/swt/widgets/Shell;resultselectionDialogClassNameselectionDialogClass constructorLjava/lang/reflect/Constructor; exception_pLjava/lang/Exception; loggerMessageLjava/lang/StringBuilder;"Ljava/lang/reflect/Constructor<*>;getSelectionHandler1()Lorg/eclipse/egf/common/misc/ISelectionHandler; ) &'/Lorg/eclipse/egf/common/misc/ISelectionHandler;getContextElement(()Lorg/eclipse/egf/model/ContextElement;getCompleteStatus/5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor 1 23handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle S8 91ContextElementWizardPage_TitlegetHelpContextId <>=5org/eclipse/egf/core/ui/internal/help/IHelpContextIds ?1%NEW_CONTEXT_ELEMENT_VALUE_WIZARD_PAGE lA BgetText DFEjava/lang/String GHequals(Ljava/lang/Object;)Z lJ K+setText M N+setType P QR instantiate=(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Object; T UVgetShell!()Lorg/eclipse/swt/widgets/Shell; X Z  \ ]`isJava _ `asetClassTypeFilter(Ljava/lang/Class;)V c degetHelperControl#()Lorg/eclipse/swt/widgets/Control; gihorg/eclipse/swt/widgets/Control jp setEnabled l mnsetDialogToOpen+(Lorg/eclipse/ui/dialogs/SelectionDialog;)V p +, ur sgetReadableValue u v+-setInitialSelectionForProvidedSelectionDialog ) y z{setSelectionHandler2(Lorg/eclipse/egf/common/misc/ISelectionHandler;)V } ~egetValueControl l `setFocus g ` forceFocustypeHolderHasChangedZ textControl currentValue typeInstanceLjava/lang/Object;selectionDialogProvidedtextIsEditableselectionHandlertextValueWidget SignatureG(Lorg/eclipse/egf/model/contract/type/ITypeHolder;)Ljava/lang/Class<*>;3org/eclipse/egf/model/contract/type/ClassTypeHolder  getExpectedType()Ljava/lang/Class; typeHolder_pclassTypeHolder5Lorg/eclipse/egf/model/contract/type/ClassTypeHolder;   setInitialSelections([Ljava/lang/Object;)VfullId_pinitialSelection[Ljava/lang/Object;access$0 SourceFile"ContextElementValueWizardPage.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!   3 &( :5)*+>*+,( VW)./01*2T*+,-3( `a)*./01516789\*+:M*+,>*+B(ik mn) ./EF G1HI,(v) ./D9B +*JL( ~ ) ./ EF<=- w*+*RWZY\*]aJ*JeM,k*quN-w:-}:-::*Y*,*(V %*28@ER[ht)Hw./wEF%R2E8?G1@7R @A4 t***N*+***-*]Y*:**+:*:**q*,*W(N!%&*0=FPVejs)Ht./tEFt1`=7P$V `D Y**L+(  ) ./ $dM*,*N-L-*:YS:Y+S M: Y:&,#DG(2  #3GIUb )Rd./dbO1#?3 I!"U #$#?3%&'[L*+*(L+(  )./*+,2*qu(!) ./-`J.Y*SL*+0( * ,)./ 456.7(4) ./:.;(<) ./+/'*"=*J$*JeN-@:+C-+I= *+L= *+*ON-*-***SWY*Y66*[6***^*b*[f**Yk**oqt*w:*x*|l:k W*bW I("DF HIJL'M,N1R9S;UFWOYSZ[[g\u^x_adghjloprsuvy|}&)f './'1 1OuxA*,M+[ +N-M,( )*./ v+l*Y+Y+SM*Y,(  ) ./1 &*+t() Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContextElementWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4246 Text-content-md5: 8c02af76c8617b16ca8db1f6407d7880 Text-content-sha1: 052772fcf4e065d2a4b04c6dd31a59d53161ad9a Content-length: 4305 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1()VCode java/lang/String valueOf(I)Ljava/lang/String;    LineNumberTableLocalVariableTable(Ljava/lang/String;)V  this>Lorg/eclipse/egf/core/ui/wizard/page/ContextElementWizardPage; pageName_pS(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V "  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V ) *'createTypeGroup , -'handlePageLayoutparent_p#Lorg/eclipse/swt/widgets/Composite; 1  3542org/eclipse/egf/common/ui/helper/FieldEditorHelper 67layoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)V 9 :;getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;=$org/eclipse/egf/model/ContextElement?[Ljava/lang/String; ACB'org/eclipse/egf/core/ui/wizard/Messages D"ContextElementWizardPage_Group_Key AF G(ContextElementWizardPage_Group_Reference AI J)ContractElementWizardPage_TypeGroup_Title L MN isReadOnly()Z 3P QRcreateRadioGroupFieldEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;I[[Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor; <T UVgetContractElementReference2()Lorg/eclipse/egf/model/ContractElementReference; <X YZgetKey()Ljava/lang/String; \^]?org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor _`selectRadioButtonFor(Ljava/lang/Object;)VcontextElement&Lorg/eclipse/egf/model/ContextElement;labelAndValues[[Ljava/lang/String;contractElementReference0Lorg/eclipse/egf/model/ContractElementReference;hasReferencedContractElementZtypeGroupSelectionLjava/lang/Object;getCompleteStatuscanFlipToNextPage getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage; \p qrgetSelectedRadioButton()Ljava/lang/Object; t uv getWizard$()Lorg/eclipse/jface/wizard/IWizard; x yzequals(Ljava/lang/Object;)Z|contextElementKeyPage ~ org/eclipse/jface/wizard/IWizard getPage:(Ljava/lang/String;)Lorg/eclipse/jface/wizard/IWizardPage;contextElementReferencePageresult&Lorg/eclipse/jface/wizard/IWizardPage;radioButtonValuewizard"Lorg/eclipse/jface/wizard/IWizard;isReferencingContractElement getPageTitle A ContextElementWizardPage_TitlegetHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds NEW_CONTEXT_ELEMENT_WIZARD_PAGE SourceFileContextElementWizardPage.java!   7  #( >*+ 45  T*+,-! >?*#$%&' G *+(*++GI J  ./-' B +*02 Q R  ./*' 8*8YY@SYSSYYESYSSN*+H-*KO0,S:6: :,W :*0[RZ\]!^2\3`4a5b8c9d:e>`DhLiXj[k`lho|qrH./~ab3ScdL:efX.gh[+ijkN ,z lN , mn :L*0oM*sN,w-{}L,w -}L+" %/8*:8 0j+N H*0oL+w jZ . Z .  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1634 Text-content-md5: 7d592a5448d0b7219f46327318ef24eb Text-content-sha1: d520a47d3de53e2b33a0d4c6d5da06a502aac91c Content-length: 1693 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1<Horg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$1Iorg/eclipse/egf/common/ui/toolkit/widgets/handler/SelectionChangedHandlerthis$0HLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage;K(Lorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$1;doHandleSelection)(Lorg/eclipse/jface/viewers/ISelection;)Z-org/eclipse/jface/viewers/StructuredSelection  iterator()Ljava/util/Iterator; java/util/Iterator  next()Ljava/lang/Object;"%org/eclipse/egf/model/ContractElement $ %&hasNext()Z selection_p&Lorg/eclipse/jface/viewers/ISelection;resultZ selection/Lorg/eclipse/jface/viewers/StructuredSelection;selectedObjectsLjava/util/Iterator;selectedObjectLjava/lang/Object;LocalVariableTypeTableLjava/util/Iterator<*>; SourceFile'ContractElementReferenceWizardPage.javaEnclosingMethod7Forg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage 9:createTransferViewer&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  8 *+ *  }   ?=+5+N-::!=# =.   (*;=>??'(=)*-+,'-. /01 '-234568;  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1259 Text-content-md5: 6e07d3b3c90f4ed45d1df8398d5e3785 Text-content-sha1: ea1e3d0adfcd802a713ee4d52352613b04072eea Content-length: 1318 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Horg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$2java/lang/Objectjava/lang/Runnablethis$0HLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage;K(Lorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$2;run Forg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage _treeTransferViewerBLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer; @org/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer ! getControl#()Lorg/eclipse/swt/widgets/Control;#!org/eclipse/swt/widgets/Composite "% &layoutcontrol#Lorg/eclipse/swt/widgets/Composite; SourceFile'ContractElementReferenceWizardPage.javaEnclosingMethod -.createTransferViewer&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses   8 *+ *    O* "L+$'()*+,/  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$ContractElementListObserver.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3075 Text-content-md5: bd7dbaed11d3c74af4562c88c7a5f892 Text-content-sha1: a40d3ecb0da1162b5a835c62654a0dbe05fcbbff Content-length: 3134 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1hborg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$ContractElementListObserverjava/lang/Object?org/eclipse/egf/core/ui/internal/observable/IListViewerObserverthis$0HLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage;K(Lorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisdLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$ContractElementListObserver; elementAdded(Ljava/util/List;)V Signature'(Ljava/util/List;)V Forg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage getContractElement)()Lorg/eclipse/egf/model/ContractElement; "!%org/eclipse/egf/model/ContractElement #$getContractElementReferences%()Lorg/eclipse/emf/common/util/EList; &('java/util/List )*iterator()Ljava/util/Iterator; ,.-java/util/Iterator /0next()Ljava/lang/Object; 243-org/eclipse/egf/model/data/helper/ModelHelper 56%createContractElementReferenceBasedOnY(Lorg/eclipse/egf/model/ContractElement;)Lorg/eclipse/egf/model/ContractElementReference; 8:9!org/eclipse/emf/common/util/EList ;<add(Ljava/lang/Object;)Z ,> ?@hasNext()Z B C updateButtons elements_pLjava/util/List;contractElementReferences#Lorg/eclipse/emf/common/util/EList;elementLjava/lang/Object;referencedContractElement'Lorg/eclipse/egf/model/ContractElement;contractElementReference0Lorg/eclipse/egf/model/ContractElementReference;LocalVariableTypeTable$Ljava/util/List;ULorg/eclipse/emf/common/util/EList;elementRemoved 8(T.org/eclipse/egf/model/ContractElementReference VXW+org/eclipse/egf/core/data/helper/DataHelper YZresolveContractElement3(Lorg/eclipse/egf/model/ContractElementReference;)V S\ ]getReferencedContractElement ,_ `removeLjava/util/Iterator;FLjava/util/Iterator;elementUpdated SourceFile'ContractElementReferenceWizardPage.java InnerClassesContractElementListObserver   4 *+ *7   H* M+%:!+N- :1:,7W=* A"= ? A&C-E6?@HGI>HHDE ;FG HI&JK- LMNHDO ;FPQ -q* M+%:J+N- :,R:'+S:U[ ^==* A6 P R T&V.W1X=ZB[N^UW_RicpdHqqDE dFG ?HI&9JK.1)a=LMN qDO dFP.1)bc R* A klDEN DOdef g Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 10465 Text-content-md5: 6e94ff082dd182a4df8708d7bce88371 Text-content-sha1: 7fd33906c3a457253c1913dc647d72de08aa2866 Content-length: 10524 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1wForg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPageTRANSFER_BUTTONSI ConstantValueTRANSFER_TREE_STYLEX_treeTransferViewerBLorg/eclipse/egf/common/ui/toolkit/viewers/AbstractTransferViewer;_decoratedLabelProvider*Lorg/eclipse/jface/viewers/ILabelProvider;(Ljava/lang/String;)VCode      LineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor; getPageTitle()Ljava/lang/String; ')('org/eclipse/egf/core/ui/wizard/Messages *ContractElementWizardPage_Title getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V0Corg/eclipse/egf/core/ui/internal/viewers/CustomTooltipLabelProvider2Dorg/eclipse/egf/core/ui/internal/viewers/DecoratedModelLabelProvider 14 5()V /7 8-(Lorg/eclipse/jface/viewers/ILabelProvider;)V :  < =.createTransferViewerparent_p#Lorg/eclipse/swt/widgets/Composite;A; SignatureB(Ljava/util/Collection;)V   getParent1()Lorg/eclipse/egf/model/NamedModelElementWithId; -org/eclipse/egf/model/data/helper/ModelHelper getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; getProductionPlanP(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/ProductionPlan; $org/eclipse/egf/model/ProductionPlan  getContext!()Lorg/eclipse/egf/model/Context; +org/eclipse/egf/core/data/helper/DataHelper  getReferencedContractElementsFor7(Lorg/eclipse/egf/model/Context;)Ljava/util/Collection; java/util/Collection addAll(Ljava/util/Collection;)Z getFactoryComponentInvocations%()Lorg/eclipse/emf/common/util/EList; java/util/List iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object;0org/eclipse/egf/model/FactoryComponentInvocation hasNext()ZreferencedContractElements_pfc(Lorg/eclipse/egf/model/FactoryComponent;productionPlan&Lorg/eclipse/egf/model/ProductionPlan;contextLorg/eclipse/egf/model/Context; fcInvocationsLjava/util/List; fcInvocation2Lorg/eclipse/egf/model/FactoryComponentInvocation;DLjava/util/List;org/eclipse/egf/model/Contract 8(Lorg/eclipse/egf/model/Contract;)Ljava/util/Collection;contract Lorg/eclipse/egf/model/Contract;m(Ljava/util/Collection;)Lorg/eclipse/jface/viewers/IContentProvider; M 8setLeftLabelProvider$org/eclipse/jface/viewers/TreeViewer 4org/eclipse/jface/viewers/ColumnViewerToolTipSupport  enableFor+(Lorg/eclipse/jface/viewers/ColumnViewer;)V\org/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProvider p M setLeftContentProvider/(Lorg/eclipse/jface/viewers/IContentProvider;)V M  setLeftInput(Ljava/lang/Object;)VreferencedContractElementList_p3possibleContractElementReferenceTreeContentProvider^Lorg/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProvider;A()Ljava/util/Collection; M 8setRightLabelProvider[org/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProvider 4 M setRightContentProvider  getContractElement)()Lorg/eclipse/egf/model/ContractElement;  ?(Lorg/eclipse/egf/model/ContractElement;)Ljava/util/Collection; Korg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer   size()I%org/eclipse/egf/model/ContractElement  toArray(([Ljava/lang/Object;)[Ljava/lang/Object;([Lorg/eclipse/egf/model/ContractElement;   +([Lorg/eclipse/egf/model/ContractElement;)V M  setRightInputborg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$ContractElementListObserver J ! "#addListViewerObserverD(Lorg/eclipse/egf/core/ui/internal/observable/IListViewerObserver;)VobservableContentProvider]Lorg/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProvider; initialInputMLorg/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer;contractElementListObserverdLorg/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage$ContractElementListObserver;getCompleteStatus , -hasAtLeastOneContractReference '/ 0,ContractElementTypeWizardPage_ErrorMessage_1 2 3.checkEveryReferencedContractElementHasSameType '5 6,ContractElementTypeWizardPage_ErrorMessage_2 8 9setErrorMessage errorMessageresultZ > ?getContractElementReferences AB!org/eclipse/emf/common/util/EListD.org/eclipse/egf/model/ContractElementReference CF GgetReferencedContractElement I JKgetContractType()Lorg/eclipse/egf/model/Type; MONorg/eclipse/egf/model/Type P%getTypeHolderClassName RTSjava/lang/String UVequals(Ljava/lang/Object;)Z X YZsetContractType<(Lorg/eclipse/egf/model/ContractElement;Ljava/lang/String;)VtypeHolderNamecontractElement'Lorg/eclipse/egf/model/ContractElement;Ljava/util/Iterator;contractElementReference0Lorg/eclipse/egf/model/ContractElementReference;currentTypeHolderClassNameFLjava/util/Iterator; Ad eisEmpty g hgetModelElementdispose k i5 MkgetHelpContextId oqp5org/eclipse/egf/core/ui/internal/help/IHelpContextIds r*NEW_CONTRACT_ELEMENT_REFERENCE_WIZARD_PAGE SourceFile'ContractElementReferenceWizardPage.java InnerClassesContractElementListObserver!    R*+**XN; ?Oh*+,-**XX; ?Y*!"#$%.&` +,,i -.T*/Y1Y369*+;qst>?=.u*@Y+XBEGY*IM*E,L*ERVN-X\Y^:-_*Ecf*i:*m*q*tW+x~Y*:{}!,1:@LRX^et>uu>?^,I:;R# R#spa*M,N-:+W-::$::+Wر*  !)AJV`HaaY TL)8Aa)8opl*M+,عW   vw6*E*9*EcY+M*E,*E*,&  !)4 66! 6kld*E*9*ERYL*E+*M Y,, N*E-Y*:+ ,6  (06>IJR\b4d D$%04J&'\() 04*&L*+= .L*1=4L*+7&   $  &$:;<3b<M*N-=@:3C:EHL:, M ,Q<-,W: %8<B!IW%[&`(Hb`;<^[ Y\]L^%$_`8a Lb-A*=c0 2*ft i5> *j*El|} ~  m%.n stuG~v Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage$JavaTypeHolderChangeListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1959 Text-content-md5: c07fba7b603e65e36e31f5ad996b7b79 Text-content-sha1: e2b871516a5260794cd7ef1af7da7fb56e3504bc Content-length: 2018 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1=^org/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage$JavaTypeHolderChangeListener=org/eclipse/egf/core/ui/internal/databinding/UpdateWizardPagethis$0CLorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage;(Lorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode    G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VLineNumberTableLocalVariableTablethis`Lorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage$JavaTypeHolderChangeListener; wizardPage_pDLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;handleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V >org/eclipse/core/databinding/observable/value/ValueChangeEvent getObservableValueB()Lorg/eclipse/core/databinding/observable/value/IObservableValue;  >org/eclipse/core/databinding/observable/value/IObservableValue !"getValue()Ljava/lang/Object;$java/lang/String &('Aorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage )*getContractElement)()Lorg/eclipse/egf/model/ContractElement; ,.--org/eclipse/egf/model/data/helper/ModelHelper /0setContractType<(Lorg/eclipse/egf/model/ContractElement;Ljava/lang/String;)V 2 event_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent; typeClassNameLjava/lang/String;contractElement'Lorg/eclipse/egf/model/ContractElement; SourceFile"ContractElementTypeWizardPage.java InnerClassesJavaTypeHolderChangeListener  C *+ *,     x +#M* %N-,+*+1 *  34 56 789:; &< Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4210 Text-content-md5: fc6faf749a7a7d7ef8f851cce51e604b Text-content-sha1: e7ce33a8dcbe906e4ea496afc840c17ea5e6c0ca Content-length: 4269 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Aorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage_classFieldEditorCLorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor;(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisCLorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor; getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V  createClassFieldEditorparent_p#Lorg/eclipse/swt/widgets/Composite; "$#'org/eclipse/egf/core/ui/wizard/Messages %)ContractElementTypeWizardPage_Class_Title "' (2ContractElementTypeWizardPage_OpenTypeDialog_Title * +,getHostingProjectClassLoader()Ljava/lang/ClassLoader; . /0getHostingBundle()Lorg/osgi/framework/Bundle;2/org/eclipse/egf/model/contract/type/ITypeHolder 4 56 isReadOnly()Z 8:92org/eclipse/egf/common/ui/helper/FieldEditorHelper ;<createJavaClassFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor; >  @BAAorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor CDgetValueControl#()Lorg/eclipse/swt/widgets/Control;Forg/eclipse/swt/widgets/Text H IJgetContractElement)()Lorg/eclipse/egf/model/ContractElement; LNM%org/eclipse/egf/model/ContractElement OPgetContractType()Lorg/eclipse/egf/model/Type; RTSorg/eclipse/egf/model/Type UVgetTypeHolderClassName()Ljava/lang/String;XZtype\;org/eclipse/egf/core/ui/internal/databinding/JavaTypeHolder [ _^org/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage$JavaTypeHolderChangeListener ^a b(Lorg/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)V d efbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V @h ijisValid(Z)Z classNameLorg/eclipse/swt/widgets/Text;contractElement'Lorg/eclipse/egf/model/ContractElement; contractTypeLorg/eclipse/egf/model/Type;typeHolderClassName s tugetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;getCompleteStatusx5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor z {|handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle " ContractElementWizardPage_TitlegetHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds %NEW_CONTRACT_ELEMENT_TYPE_WIZARD_PAGE SourceFile"ContractElementTypeWizardPage.java InnerClassesJavaTypeHolderChangeListener!  >*+  12  T*+,- ;< * , D  >*+ LM    k*+*!&*)*-1*37=*=?EM*GN-K: QW:*,Y[Y]^Y**`c*=gW ZTUVWX Y Z[\T_(a-c5dHfIgJhLiUj^faljm >kk (Ckl->mn56opH#qIJ 2*rL s v6 JwY*=SL*+y | ~  }~V .  V .   ^ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1576 Text-content-md5: 9557c3b8cca4135370d1b272f0e7ed17 Text-content-sha1: 56c65003f494956a16a25fcad959434e1825a2a8 Content-length: 1635 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1=?org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage$1java/lang/Object(org/eclipse/jface/text/IDocumentListenerthis$0?Lorg/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage;B(Lorg/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage$1;documentAboutToBeChanged)(Lorg/eclipse/jface/text/DocumentEvent;)Vevent_p&Lorg/eclipse/jface/text/DocumentEvent;documentChanged $org/eclipse/jface/text/DocumentEvent  getDocument$()Lorg/eclipse/jface/text/IDocument; !#" org/eclipse/jface/text/IDocument $%get()Ljava/lang/String; ')(=org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage *+getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; -/.-org/eclipse/egf/model/NamedModelElementWithId 01setDescription(Ljava/lang/String;)Vdocument"Lorg/eclipse/jface/text/IDocument; enteredTextLjava/lang/String; SourceFileContractElementWizardPage.javaEnclosingMethod :;createDescriptionFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses   8 *+ *    5 n+M, N* &-, *23 45678'9<  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 8974 Text-content-md5: fc6c98f02c334e3d0bbd46c6b9764409 Text-content-sha1: f71f09f58dc29927c37384edf0f3d8193b2ef73e Content-length: 9033 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1:=org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPageCONTRACT_ELEMENT_TYPELjava/lang/String;CONTRACT_ELEMENT_REFERENCEGROUP_NUM_COLUMNSI ConstantValue_contractElementKeyFieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; _typeGroupALorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor;_checkBoxFieldEditorFLorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter;()VCode java/lang/String valueOf(I)Ljava/lang/String;    LineNumberTableLocalVariableTable(Ljava/lang/String;)V $ !"this?Lorg/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage; pageName_pS(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V * !(title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V 1322org/eclipse/egf/common/ui/helper/FieldEditorHelper 45 createGroupX(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;II)Lorg/eclipse/swt/widgets/Group; 7 8/createKeyFieldEditor : ;/createDescriptionFieldEditor=1org/eclipse/egf/common/ui/field/SpacerFieldEditor <? !/ A B/createTypeGroup D E/createMandatoryCheckBox G H/handlePageLayoutparent_p#Lorg/eclipse/swt/widgets/Composite;definitionGroup M OQPDorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor RSgetValueControl#()Lorg/eclipse/swt/widgets/Control; UWVorg/eclipse/swt/widgets/Control XY getParent%()Lorg/eclipse/swt/widgets/Composite; 1[ \]layoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)V _  aQbDorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter d  f ghgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;j%org/eclipse/egf/model/ContractElement lnm'org/eclipse/egf/core/ui/wizard/Messages o,ContractElementWizardPage_OptionsGroup_Title lq r6ContractElementWizardPage_OptionsGroup_Mandatory_Title lt u8ContractElementWizardPage_OptionsGroup_Mandatory_Tooltip iw xy isMandatory()Z { |y isReadOnly 1~ createCheckBoxFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;ZIIZ)Lorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter; +org/eclipse/egf/model/ModelPackage$Literals CONTRACT_ELEMENT__MANDATORY"Lorg/eclipse/emf/ecore/EAttribute;  org/eclipse/emf/ecore/EAttribute getName()Ljava/lang/String; 2org/eclipse/egf/common/ui/helper/DataBindingHelper bindControlSelectionToProperty(Lorg/eclipse/swt/widgets/Control;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/core/databinding/observable/value/IValueChangeListener;)VcontractElement'Lorg/eclipse/egf/model/ContractElement;options[Ljava/lang/String; l (ContractElementWizardPage_TypeGroup_Type l -ContractElementWizardPage_TypeGroup_Reference l )ContractElementWizardPage_TypeGroup_Title 1 createRadioGroupFieldEditor(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;I[[Ljava/lang/String;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor; i getContractElementReferences%()Lorg/eclipse/emf/common/util/EList; !org/eclipse/emf/common/util/EList yisEmpty ?org/eclipse/egf/common/ui/toolkit/fields/CRadioGroupFieldEditor selectRadioButtonFor(Ljava/lang/Object;)VlabelAndValues[[Ljava/lang/String;contractElementReferences#Lorg/eclipse/emf/common/util/EList;hasReferencedContractElementsZtypeGroupSelectionLjava/lang/Object;LocalVariableTypeTableULorg/eclipse/emf/common/util/EList; l #ContractElementWizardPage_Key_Title l %ContractElementWizardPage_Key_TooltipDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator l *ContractElementWizardPage_Key_ErrorMessage $ 1 createStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; O getTextControl ()Lorg/eclipse/swt/widgets/Text; org/eclipse/swt/widgets/Text ysetFocus !NAMED_MODEL_ELEMENT_WITH_ID__NAME  bindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V O isValid(Z)ZkeyLorg/eclipse/swt/widgets/Text; l WizardPage_Description_Tooltip l ContractElementWizard_Title 4org/eclipse/egf/common/ui/helper/MessageFormatHelper  formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;?org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage$1 !B(Lorg/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage;)V l WizardPage_Description_Title -org/eclipse/egf/model/NamedModelElementWithId getDescription 1 ;(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/jface/text/IDocumentListener;Z)Lorg/eclipse/swt/custom/StyledText;formattedTooltipmodificationHandler*Lorg/eclipse/jface/text/IDocumentListener;getCompleteStatuscanFlipToNextPage5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor    handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage;  getSelectedRadioButton()Ljava/lang/Object;   getWizard$()Lorg/eclipse/jface/wizard/IWizard;  equals(Ljava/lang/Object;)ZcontractElementTypePage   org/eclipse/jface/wizard/IWizard !"getPage:(Ljava/lang/String;)Lorg/eclipse/jface/wizard/IWizardPage;$contractElementReferencePageresult&Lorg/eclipse/jface/wizard/IWizardPage;radioButtonValuewizard"Lorg/eclipse/jface/wizard/IWizard; getPageTitle l, -ContractElementWizardPage_TitlegetHelpContextId 0215org/eclipse/egf/core/ui/internal/help/IHelpContextIds 3 NEW_CONTRACT_ELEMENT_WIZARD_PAGE SourceFileContractElementWizardPage.java InnerClasses8"org/eclipse/egf/model/ModelPackageLiterals!    716, !">*+# RS %&'!(T*+,-) \] *%&'+,-./)+0M*,6*,9<+>*+@*+C*+F2 efghdk moqs#u(v )%&)IJ!KJH/.*LNT*LZ*^`T*^Z+*cZ6  ~ !$%)*- .%&.IJE/ B*eiM+k0N*-*ps,v*z}^*^`,Z !"#'-4<=>A *B%&BIJ:0JB/4|*eiMYYSYSSYYSYSSN*+-*zc,:6 :*cF!234589:>DLbr{ H|%&|IJt3IL0br  L08/ C*+*YƷ*zʵL*LM,W*,*e*LWR ',-.1569B C%&CIJ';/3YSMY*N+,*e-*zW: ( ) * .2 *3%&3IJ"y, %&yJY*LSL*+   %&    <L*cM*N,-L, -#L+"(* +,-&.0/:1 *<%&:%& 2'-()*.+9 %&../A %&45679 Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/EditDomainWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1256 Text-content-md5: 983c1718ee256cacb87c58973e7a5b7f Text-content-sha1: 65cfa0cbbe6c05b9206d34a63c22a5b6602be7ac Content-length: 1315 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1+8org/eclipse/egf/core/ui/wizard/page/EditDomainWizardPage(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethis:Lorg/eclipse/egf/core/ui/wizard/page/EditDomainWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V  createDomainFileFieldEditorparent_p#Lorg/eclipse/swt/widgets/Composite;getCompleteStatus()Z  !isDomainSelectedExist getPageTitle()Ljava/lang/String; %'&'org/eclipse/egf/core/ui/wizard/Messages (DomainWizardPage_Title SourceFileEditDomainWizardPage.java!>*+   T*+,- '( * >*+ /0  /* 7  "#.$ ?  )* Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1606 Text-content-md5: 7933f45c5e58d497401aedb08a216f51 Text-content-sha1: 366e61121fd363bec75cb7efdb89b906a62f8a96 Content-length: 1665 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1=Dorg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage$1java/lang/Object(org/eclipse/jface/text/IDocumentListenerthis$0DLorg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage;G(Lorg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage$1;documentAboutToBeChanged)(Lorg/eclipse/jface/text/DocumentEvent;)Vevent_p&Lorg/eclipse/jface/text/DocumentEvent;documentChanged $org/eclipse/jface/text/DocumentEvent  getDocument$()Lorg/eclipse/jface/text/IDocument; !#" org/eclipse/jface/text/IDocument $%get()Ljava/lang/String; ')(Borg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage *+getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; -/.-org/eclipse/egf/model/NamedModelElementWithId 01setDescription(Ljava/lang/String;)Vdocument"Lorg/eclipse/jface/text/IDocument; enteredTextLjava/lang/String; SourceFile#EditFactoryComponentWizardPage.javaEnclosingMethod :;createDescriptionFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses   8 *+ * d   5j n+M, N* &-,mn op*23 45678'9<  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4397 Text-content-md5: 6b89cc1ebb1ff3dc76084702b147c954 Text-content-sha1: eb04a4c675eb0919fc66079c25ff739aeaaf9777 Content-length: 4456 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Borg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage _factoryComponentNameFieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V  %createFactoryComponentNameFieldEditor  createDescriptionFieldEditorparent_p#Lorg/eclipse/swt/widgets/Composite; #%$'org/eclipse/egf/core/ui/wizard/Messages &)EditFactoryComponentWizardPage_Name_Title #( )+EditFactoryComponentWizardPage_Name_Tooltip+Dorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator #- .0EditFactoryComponentWizardPage_Name_ErrorMessage * 1 23 isReadOnly()Z 5762org/eclipse/egf/common/ui/helper/FieldEditorHelper 89createStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; ;  =?>Dorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor @AgetTextControl ()Lorg/eclipse/swt/widgets/Text; CED+org/eclipse/egf/model/ModelPackage$Literals FG!NAMED_MODEL_ELEMENT_WITH_ID__NAME"Lorg/eclipse/emf/ecore/EAttribute; I JKgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; M NObindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V =Q RSisValid(Z)ZfcNameLorg/eclipse/swt/widgets/Text; #W XWizardPage_Description_TooltipZjava/lang/String #\ ]ContractElementWizard_Title _a`4org/eclipse/egf/common/ui/helper/MessageFormatHelper bc formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;eDorg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage$1 dg hG(Lorg/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage;)V #j kWizardPage_Description_Title mon-org/eclipse/egf/model/NamedModelElementWithId pqgetDescription()Ljava/lang/String; 5s t(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/jface/text/IDocumentListener;Z)Lorg/eclipse/swt/custom/StyledText;formattedTooltipmodificationHandler*Lorg/eclipse/jface/text/IDocumentListener;getCompleteStatusz5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor | }~handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle # $EditFactoryComponentWizardPage_TitlegetHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds EDIT_FC_WIZARD_PAGE SourceFile#EditFactoryComponentWizardPage.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals! >*+  ./  T*+,- 89 * G *+*+ AB C   ! >*+*"'*Y,/*04:*:> !'TU 3VYY[S^MdY*fN+i,*Hl-*0rW . bdtuvw(x)y*z.s2| *33 !"uvwx3 JyY*:SL*+{   q .  q .  dC Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1165 Text-content-md5: 08ff5c6331c006a6ea8b773a2db550a4 Text-content-sha1: 5c9669a8705a23309e449d05cbff63a24ce35e2d Content-length: 1224 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#Jorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$1Oorg/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidatorthis$0JLorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage;_(Lorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage;Ljava/lang/String;)VCode    (Ljava/lang/String;)VLineNumberTableLocalVariableTablethisLLorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$1; $anonymous0Ljava/lang/String;&handleReferencedFactoryComponentChange Horg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage _referencedFactoryComponentIdnewReferencedFcIdValue_p SourceFile)FactoryComponentInvocationWizardPage.javaEnclosingMethod !+createReferencedFactoryComponentFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  C *+ *,     A * +   "  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1641 Text-content-md5: 270fe2c8224083b36711518c1c77597b Text-content-sha1: f11b19db7c3395e34ea165da36110aed13405aba Content-length: 1700 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10Jorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$2?org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandlerthis$0JLorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage;(Lorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode    G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VLineNumberTableLocalVariableTablethisLLorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$2; $anonymous0DLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;doHandleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V Horg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage getFactoryComponentInvocation4()Lorg/eclipse/egf/model/FactoryComponentInvocation;   _referencedFactoryComponentIdLjava/lang/String; "$#0org/eclipse/egf/model/FactoryComponentInvocation %&setFactoryComponentId(Ljava/lang/String;)Vevent_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent; SourceFile)FactoryComponentInvocationWizardPage.javaEnclosingMethod -.+createReferencedFactoryComponentFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  C *+ *,     L* * ! '()*+,/  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7499 Text-content-md5: 821d2493eb44857577744a7e1fb5b199 Text-content-sha1: 051d966d54036dad2cd2fec1c5a69f556581ce5f Content-length: 7558 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Horg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage*_factoryComponentInvocationNameFieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;&_referencedFactoryComponentFieldEditorCLorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor;_referencedFactoryComponentIdLjava/lang/String;(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage; pageName_pS(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;getFactoryComponentInvocation4()Lorg/eclipse/egf/model/FactoryComponentInvocation;   getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;"0org/eclipse/egf/model/FactoryComponentInvocationcreatePageArea&(Lorg/eclipse/swt/widgets/Composite;)V & '$/createFactoryComponentInvocationNameFieldEditor ) *$+createReferencedFactoryComponentFieldEditor , -$handlePageLayoutparent_p#Lorg/eclipse/swt/widgets/Composite; 132'org/eclipse/egf/core/ui/wizard/Messages 4 /FactoryComponentInvocationWizardPage_Name_Title 16 7 1FactoryComponentInvocationWizardPage_Name_Tooltip9Dorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator 1; < 6FactoryComponentInvocationWizardPage_Name_ErrorMessage 8 ? @A isReadOnly()Z CED2org/eclipse/egf/common/ui/helper/FieldEditorHelper FGcreateStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; I  KMLDorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor NOgetTextControl ()Lorg/eclipse/swt/widgets/Text; QSR+org/eclipse/egf/model/ModelPackage$Literals TU!NAMED_MODEL_ELEMENT_WITH_ID__NAME"Lorg/eclipse/emf/ecore/EAttribute; W XYbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V K[ \]isValid(Z)ZfcInvocationNameLorg/eclipse/swt/widgets/Text;aHorg/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog c degetShell!()Lorg/eclipse/swt/widgets/Shell; `g h"(Lorg/eclipse/swt/widgets/Shell;)V j k  getParent mon-org/eclipse/egf/model/data/helper/ModelHelper pqgetFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; sutjava/util/Collections vw singletonList$(Ljava/lang/Object;)Ljava/util/List; `y z{setFilteredFactoryComponents(Ljava/util/List;)V}Jorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$1 1 LFactoryComponentInvocationWizardPage_ReferencedFactoryComponent_ErrorMessage | _(Lorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage;Ljava/lang/String;)V 1 EFactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Title 1 GFactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Tooltip Dorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor #createModelElementButtonFieldEditor"(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor;     "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator; ! getFactoryComponentId()Ljava/lang/String; getFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; -org/eclipse/egf/model/NamedModelElementWithId getNameGorg/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponent  Aorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor NC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text;Jorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage$2 (Lorg/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)Vname  X(Lorg/eclipse/swt/widgets/Text;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V [fcSelectionDialogJLorg/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog; fcContainer(Lorg/eclipse/egf/model/FactoryComponent; validatorQLorg/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidator; fcInvocation2Lorg/eclipse/egf/model/FactoryComponentInvocation; referenceFc/Lorg/eclipse/egf/model/NamedModelElementWithId;referencedFcName referencedFcILorg/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponent;referencedFcNameTextvalueChangeHandlerALorg/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler; C layoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)VgetCompleteStatus5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor  handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle 1 *FactoryComponentInvocationWizardPage_TitlegetHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds  NEW_FC_CONFIGURATION_WIZARD_PAGE SourceFile)FactoryComponentInvocationWizardPage.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!   >*+ CD   T*+,- MN*   2*!U #$ P*+%*+(*++^` bc./'$ >*+*058Y:=*>BH*HJM*,P*V*HZW:klmno p q rskv'x4z={ >>./'^_*$  `Y*bfM*ilN,-rx|Y*~:*+*,*>*:: :Y:*+: Y**: *  *WZ )*+,/2359?ETgr|p ./ )tEXTIg6 r+|!_  -$ B +*H̱    ./A QY*HSY*SL*+Ӭ  .ڰ  .ް |Q Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1023 Text-content-md5: 2a9a0ad4d3788f2d6540ae524942d147 Text-content-sha1: 4abb3328f798e3646ff6d9325a6597937c931e03 Content-length: 1082 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$1Oorg/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidatorthis$07Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;L(Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;Ljava/lang/String;)VCode    (Ljava/lang/String;)VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage$1; $anonymous0Ljava/lang/String;&handleReferencedFactoryComponentChange 5org/eclipse/egf/core/ui/wizard/page/MappingWizardPage _fcIdForSourcenewReferencedFcIdValue_p SourceFileMappingWizardPage.javaEnclosingMethod !createMappingSourceFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  C *+ *,     A * +   "  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1445 Text-content-md5: 17158e7f2b3845c4a5d7a5af14b3f6a5 Text-content-sha1: cdcf78e3e845726bd654c1461c2ed7130f2a9074 Content-length: 1504 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 107org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$2?org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandlerthis$07Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;~(Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode    G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage$2; $anonymous0DLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;doHandleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V 5org/eclipse/egf/core/ui/wizard/page/MappingWizardPage getMappingModel&()Lorg/eclipse/egf/model/MappingModel;   _fcIdForSourceLjava/lang/String; "$#"org/eclipse/egf/model/MappingModel %& setSource(Ljava/lang/String;)Vevent_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent; SourceFileMappingWizardPage.javaEnclosingMethod -.createMappingSourceFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  C *+ *,     L* * ! '()*+,/  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1023 Text-content-md5: 2c3e65d2a8bf711d030d599e2fcf798c Text-content-sha1: 76b28d47a2abb40f480fd3ce99a6362cfe187bcc Content-length: 1082 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$3Oorg/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidatorthis$07Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;L(Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;Ljava/lang/String;)VCode    (Ljava/lang/String;)VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage$3; $anonymous0Ljava/lang/String;&handleReferencedFactoryComponentChange 5org/eclipse/egf/core/ui/wizard/page/MappingWizardPage _fcIdForTargetnewReferencedFcIdValue_p SourceFileMappingWizardPage.javaEnclosingMethod !createMappingTargetFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  C *+ *,     A * +   "  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1445 Text-content-md5: 57d0cf69f54ee5a3218ca8cd90d0ee85 Text-content-sha1: 7aaa9e113ffb2ad15fec8df9df63e65e15d5d824 Content-length: 1504 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 107org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$4?org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandlerthis$07Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;~(Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode    G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage$4; $anonymous0DLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;doHandleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V 5org/eclipse/egf/core/ui/wizard/page/MappingWizardPage getMappingModel&()Lorg/eclipse/egf/model/MappingModel;   _fcIdForTargetLjava/lang/String; "$#"org/eclipse/egf/model/MappingModel %& setTarget(Ljava/lang/String;)Vevent_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent; SourceFileMappingWizardPage.javaEnclosingMethod -.createMappingTargetFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  C *+ *,     L* * ! '()*+,/  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2235 Text-content-md5: 676d823732839fbdcea8bf97a4aab555 Text-content-sha1: 2095defb910e7fab8ac85afa5e300053dbe2cc13 Content-length: 2294 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1W7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$5?org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandlerthis$07Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;~(Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VCode    G(Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)VLineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage$5; $anonymous0DLorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;doHandleValueChangeC(Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent;)V >org/eclipse/core/databinding/observable/value/ValueChangeEvent diff9Lorg/eclipse/core/databinding/observable/value/ValueDiff;  7org/eclipse/core/databinding/observable/value/ValueDiff !" getNewValue()Ljava/lang/Object;$java/lang/String &('*org/eclipse/egf/common/helper/StringHelper )*replaceNonWordCharactersWithDot&(Ljava/lang/String;)Ljava/lang/String;,java/lang/StringBuilder. model/mapping +0 1(Ljava/lang/String;)V +3 45append(C)Ljava/lang/StringBuilder; +7 48-(Ljava/lang/String;)Ljava/lang/StringBuilder;: .ecore2ecore +< =>toString()Ljava/lang/String; @BA5org/eclipse/egf/core/ui/wizard/page/MappingWizardPage CDgetMappingModel&()Lorg/eclipse/egf/model/MappingModel; FHG"org/eclipse/egf/model/MappingModel I1setPathevent_p@Lorg/eclipse/core/databinding/observable/value/ValueChangeEvent; mappingNameLjava/lang/String;mappingFilePathmappingfileName SourceFileMappingWizardPage.javaEnclosingMethod TUcreateMappingNameFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses  C *+ *,  6   A+#MN,%,%:+Y-//2696;N* ?-EF< = >@ABA D"C%F'E*H,G/I2A3L@M4AAJK 6LM 4NMOMPQR@SV  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/MappingWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 10160 Text-content-md5: 726e629527064d4eb430a3bc9d9b733c Text-content-sha1: 5755e46fa60597687e80a7fe7025635ee3f0d779 Content-length: 10219 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1d5org/eclipse/egf/core/ui/wizard/page/MappingWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPageMAPPING_RELATIVE_FOLDER_PATHLjava/lang/String; ConstantValue  model/mappingMAPPING_FILE_EXTENSION  .ecore2ecore_mappingNameFieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;_mappingIdFieldEditor_fcAsSourceFieldEditorCLorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor;_fcIdForSource_fcAsTargetFieldEditor_fcIdForTarget(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethis7Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage; pageName_pS(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V ! title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V ( )&createMappingIdFieldEditor + ,&createMappingNameFieldEditor . /&createMappingSourceFieldEditor 1 2&createMappingTargetFieldEditor 4 5&handlePageLayoutparent_p#Lorg/eclipse/swt/widgets/Composite; 9  ;=<2org/eclipse/egf/common/ui/helper/FieldEditorHelper >?layoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)V A C7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$1 EGF'org/eclipse/egf/core/ui/wizard/Messages H)MappingWizardPage_FcAsSource_ErrorMessage BJ KL(Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;Ljava/lang/String;)V EM N"MappingWizardPage_FcAsSource_Title EP Q$MappingWizardPage_FcAsSource_Tooltip S TU%createFactoryComponentSelectionDialogL()Lorg/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog; W XY isReadOnly()Z []\Dorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor ^_#createModelElementButtonFieldEditor"(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/ui/dialogs/ElementListSelectionDialog;Lorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor; a  ced"org/eclipse/egf/core/CoreActivator fg getDefault&()Lorg/eclipse/egf/core/CoreActivator; i jkgetMappingModel&()Lorg/eclipse/egf/model/MappingModel; mon"org/eclipse/egf/model/MappingModel pq getSource()Ljava/lang/String; cs tugetFactoryComponent<(Ljava/lang/String;)Lorg/eclipse/egf/model/FactoryComponent; wyx-org/eclipse/egf/model/NamedModelElementWithId zqgetName|~Gorg/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponent } Aorg/eclipse/egf/common/ui/field/ValidatingStringButtonFieldEditor getTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text;7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$2 ~(Lorg/eclipse/egf/core/ui/wizard/page/MappingWizardPage;Lorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage;)Vname  bindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Ljava/lang/String;Ljava/lang/Object;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V isValid(Z)Z validatorQLorg/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidator; fcAsSource/Lorg/eclipse/egf/model/NamedModelElementWithId;referencedFcSourceNamereferencedFcAsSourceILorg/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponent;referencedFcSourceNameTextLorg/eclipse/swt/widgets/Text;valueChangeHandlerALorg/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler;7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$3 E )MappingWizardPage_FcAsTarget_ErrorMessage J E "MappingWizardPage_FcAsTarget_Title E $MappingWizardPage_FcAsTarget_Tooltip   m q getTarget7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$4  fcAsTargetreferencedFcTargetNamereferencedFcAsTargetreferencedFcNameAsTargetTextHorg/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog  getShell!()Lorg/eclipse/swt/widgets/Shell; "(Lorg/eclipse/swt/widgets/Shell;)V &org/eclipse/egf/core/ui/EgfUiActivator f*()Lorg/eclipse/egf/core/ui/EgfUiActivator; "getTargetPlatformFactoryComponents()Ljava/util/List; java/util/List iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object;&org/eclipse/egf/model/FactoryComponent  getDomain ()Lorg/eclipse/egf/model/Domain; -org/eclipse/egf/model/data/helper/ModelHelper isDomainDefined!(Lorg/eclipse/egf/model/Domain;)Z remove()V YhasNext getWorkspaceFactoryComponents addAll(Ljava/util/Collection;)Z setFilteredFactoryComponents(Ljava/util/List;)VfcSelectionDialogJLorg/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog; filteredFcsLjava/util/List;Ljava/util/Iterator; currentFc(Lorg/eclipse/egf/model/FactoryComponent;LocalVariableTypeTable:Ljava/util/List;>Ljava/util/Iterator; E MappingWizardPage_Id_Title E MappingWizardPage_Id_TooltipDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator E !MappingWizardPage_Id_ErrorMessage  ;   createStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; Dorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor  ()Lorg/eclipse/swt/widgets/Text; +org/eclipse/egf/model/ModelPackage$Literals NAMED_MODEL_ELEMENT_WITH_ID__ID"Lorg/eclipse/emf/ecore/EAttribute;  getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;  (Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V  mappingIdText E# $MappingWizardPage_Name_Title E& 'MappingWizardPage_Name_Tooltip E) *#MappingWizardPage_Name_ErrorMessage,7org/eclipse/egf/core/ui/wizard/page/MappingWizardPage$5 + / 0!NAMED_MODEL_ELEMENT_WITH_ID__NAMEmappingNameTexthandlergetCompleteStatus55org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor 7 89handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle E> ?MappingWizardPage_TitlegetMappingFolder&()Lorg/eclipse/core/resources/IFolder; C DEgetHostingProject%()Lorg/eclipse/jdt/core/IJavaProject; GIH!org/eclipse/jdt/core/IJavaProject JK getProject'()Lorg/eclipse/core/resources/IProject; MON#org/eclipse/core/resources/IProject PQ getFolder8(Ljava/lang/String;)Lorg/eclipse/core/resources/IFolder;result$Lorg/eclipse/core/resources/IFolder;hostingProject#Lorg/eclipse/jdt/core/IJavaProject;project%Lorg/eclipse/core/resources/IProject;getHelpContextId Z\[5org/eclipse/egf/core/ui/internal/help/IHelpContextIds ]NEW_MAPPING_WIZARD_PAGE SourceFileMappingWizardPage.java InnerClassesb"org/eclipse/egf/model/ModelPackageLiterals!   >*+ bcT*+,-  lm*"#$%&b*+'*+**+-*+0*+3uw y{}~675&O+*8:+*@: 67/&C{BY*DIM*+*LO*R,*VZ`b*hlrN- -v{:}Y:*`+:Y**:**`W^ $4EPZefhjlnqzR{{67 o4GE6P+Z!e2&C{Y*M*+**R,*VZb*hrN- -v{:}Y:*+:Y**:**W^ $4EPZefhjlnqzR{{67 o4GE6P+Z!eTUXY*LM,N!-:ܙ --,W+,+. (5;DQV4X LE>(E>)& >*+*Y *V 8*8M*,**8 W:   '4 =! >>67'!,& H*+*"%Y( *V @*@M+Y**-N*,.*-*@ WR)*+,- . / 01)4'61P2Q3R6S:T;P>WGX*HH67'!1123Ys'4Y*8SY*@SY*`SY*SL*+6`a bcd `!g'!:;<q.=o jk2*mw @AyL*BM,,FN-LL+ *RSTU VWXq.Y ^_`2B+ac Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2228 Text-content-md5: 75d6f73a199787e88e3665704bbe5151 Text-content-sha1: e8cf9f08c268b82a2d6bc38a30eea439754414d5 Content-length: 2287 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1^9org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$1'org/eclipse/swt/events/SelectionAdapterthis$09Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;<(Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$1;widgetSelected*(Lorg/eclipse/swt/events/SelectionEvent;)V %org/eclipse/swt/events/SelectionEvent widget Lorg/eclipse/swt/widgets/Widget;org/eclipse/swt/widgets/Button    getSelection()Z "$#7org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage %&access$0(Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; (*)Dorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor +,getValueControl#()Lorg/eclipse/swt/widgets/Control;.org/eclipse/swt/widgets/Text -0 12 setEditable(Z)V "4 56getDomainFileNameFieldEditor9()Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; 8:95org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor ;,getHelperControl =?>org/eclipse/swt/widgets/Control @2 setEnabled 8* "C DEgetDefaultDomainFilePath()Ljava/lang/String; -G HIsetText(Ljava/lang/String;)VK "M N getCompleteStatusevent_p'Lorg/eclipse/swt/events/SelectionEvent;isCreatingDomainZpackageNameTextLorg/eclipse/swt/widgets/Text;domainFileNameFieldEditor7Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; SourceFileNewDomainWizardPage.javaEnclosingMethod [\createDomainCreationCheckBoxk(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter; InnerClasses  8 *+ *     d+=* !'-N-/* 3:7<A-* BF -JF* LW* ':>U[c4ddOP YQRKST'=UVWXY"Z]  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 963 Text-content-md5: 67df6007a77c344f14044fd7ce928af1 Text-content-sha1: 42a2d436ab8ecd42a1596946af801b81b0318559 Content-length: 1022 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1%9org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$2java/lang/Object%org/eclipse/swt/events/ModifyListenerthis$09Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;<(Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;)VCode    ()VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$2; modifyText'(Lorg/eclipse/swt/events/ModifyEvent;)V 7org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage  updateButtonse_p$Lorg/eclipse/swt/events/ModifyEvent; SourceFileNewDomainWizardPage.javaEnclosingMethod "#createPackageNameFieldEditor&(Lorg/eclipse/swt/widgets/Composite;)V InnerClasses   8 *+ *    @*   !$  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6407 Text-content-md5: c492d3eb3360a051aac3e0f3b18bc49d Text-content-sha1: 843216512e34439c3829aa5e68a6a005708208b8 Content-length: 6466 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 17org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethis9Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V #%$2org/eclipse/egf/common/ui/helper/FieldEditorHelper &' createGroupX(Lorg/eclipse/swt/widgets/Composite;Ljava/lang/String;II)Lorg/eclipse/swt/widgets/Group; ) + ,-createDomainCreationCheckBoxk(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter; / 0!createPackageNameFieldEditor 2 3!createDomainFileFieldEditor 5 6!handlePageLayoutparent_p 9  ;=<Dorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor >?getTextControl ()Lorg/eclipse/swt/widgets/Text; ACBorg/eclipse/swt/widgets/Text DE getParent%()Lorg/eclipse/swt/widgets/Composite; #G HIlayoutFieldEditorQ(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/preference/FieldEditor;I)V ;K LMgetLabel!()Lorg/eclipse/swt/widgets/Label; OQPorg/eclipse/swt/widgets/Label RS getLayoutData()Ljava/lang/Object;Uorg/eclipse/swt/layout/GridData TW XhorizontalIndent Z [\getDomainFileNameFieldEditor9()Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; ^`_5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor abgetValueControl#()Lorg/eclipse/swt/widgets/Control; dCeorg/eclipse/swt/widgets/Controlg(org/eclipse/jface/preference/FieldEditor Ti j()V ^K Om no setLayoutData(Ljava/lang/Object;)V q  s`tDorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdaptergd!Lorg/eclipse/swt/layout/GridData;domainFileNameFieldEditor7Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; z|{'org/eclipse/egf/core/ui/wizard/Messages }&NewDomainWizardPage_CreateDomain_Title z (NewDomainWizardPage_CreateDomain_Tooltip   isReadOnly()Z # createCheckBoxFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;ZIIZ)Lorg/eclipse/egf/common/ui/toolkit/adapters/BooleanFieldEditorAdapter;org/eclipse/swt/widgets/Button9org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$1 <(Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;)V addSelectionListener-(Lorg/eclipse/swt/events/SelectionListener;)Vgroup_p 21org/eclipse/egf/common/ui/field/DomainFieldEditor bgetHelperControl d  setEnabled(Z)V >C(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text;  getDefaultDomainFilePath()Ljava/lang/String; A setText isValid(Z)Z fieldEditor3Lorg/eclipse/egf/common/ui/field/DomainFieldEditor; domainPathLorg/eclipse/swt/widgets/Text; z !NewDomainWizardPage_Package_Title z #NewDomainWizardPage_Package_TooltipDorg/eclipse/egf/common/ui/toolkit/validators/NotEmptyStringValidator z (NewDomainWizardPage_Package_ErrorMessage  # createStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; ;9org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage$2 A addModifyListener*(Lorg/eclipse/swt/events/ModifyListener;)VpackageNameTextgetCompleteStatus s getBooleanValue  handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z  isDomainSelectedExist z 'NewDomainWizardPage_Domain_ErrorMessage  setErrorMessageresultZ fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; errorMessage getPageTitle z DomainWizardPage_TitlegetRootPackage ; getStringValueaccess$0(Lorg/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage;)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; SourceFileNewDomainWizardPage.java InnerClasses!     >*+ 9:T*+,- CD* !r**+"(**(*W**(.**(1*+4K LNP$R)S**7 6!g*8:@*8F*8JNTM, V*YN-]c-fFTYhM-k,l, V*prc*pFN\ ]^[a b&d+f4g8h9e<kDlNmTp^qbrcoft*gg7  Guv+<wx,- 0*+*y~*p*prY**p:z{|}~  z (+00 3!**+*YM,,+N-*,W #)***7  0! =*+*Y*8*8W*8:M,Y*ĶűB (019< ==7 0 7<*p˙^Y*8SM*,<*<MM*,*  !&(,05*75 ( . 2*8 %*8+ Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/PatternLibraryProductionSequenceWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4178 Text-content-md5: a371c8cbdae8ecb0f2f25ea33f4f8a16 Text-content-sha1: b07c793afa4680e6781a7ad702932357072af4a4 Content-length: 4237 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Norg/eclipse/egf/core/ui/wizard/page/PatternLibraryProductionSequenceWizardPageLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage_productionContentLjava/util/List; Signature$Ljava/util/List;(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisPLorg/eclipse/egf/core/ui/wizard/page/PatternLibraryProductionSequenceWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor; getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage;   getWizard$()Lorg/eclipse/jface/wizard/IWizard;!'patternLibraryRuntimeSequenceWizardPage #%$ org/eclipse/jface/wizard/IWizard &'getPage:(Ljava/lang/String;)Lorg/eclipse/jface/wizard/IWizardPage;getOrchestrationValue()Ljava/lang/String; + ,-getPatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary; /10$org/eclipse/egf/model/PatternLibrary 2)getProductionOrchestrationgetPatternElements$(Ljava/lang/String;)Ljava/util/List;8(Ljava/lang/String;)Ljava/util/List; 798:org/eclipse/egf/common/helper/PatternLibrarySequenceHelper :4extractSequenceIds<java/util/ArrayList >@?java/util/List ABsize()I ;D E(I)V G  >I JKiterator()Ljava/util/Iterator; MONjava/util/Iterator PQnext()Ljava/lang/Object;Sjava/lang/String UWV-org/eclipse/egf/model/data/helper/ModelHelper XYgetPatternElementh(Ljava/lang/String;Lorg/eclipse/egf/model/PatternLibrary;)Lorg/eclipse/egf/model/AbstractPatternElement; >[ \]add(Ljava/lang/Object;)Z M_ `ahasNext()ZorchestrationValue_ppatternElementAsStringlibrary&Lorg/eclipse/egf/model/PatternLibrary;patternElementShortIdpatternElement.Lorg/eclipse/egf/model/AbstractPatternElement;LocalVariableTypeTable$Ljava/util/List;getFilteredPatternElements()Ljava/util/List;&()Ljava/util/List; oqpjava/util/Collections rl emptyListresult getPageTitle vxw'org/eclipse/egf/core/ui/wizard/Messages y0PatternLibraryProductionSequenceWizardPage_TitleelementUpdated(Ljava/util/List;)V'(Ljava/util/List;)V~,org/eclipse/egf/model/AbstractPatternElement U getPatternElementShortIdB(Lorg/eclipse/egf/model/AbstractPatternElement;)Ljava/lang/String;  getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; 7 getFullSequence$(Ljava/util/List;)Ljava/lang/String; / setProductionOrchestration elements_ppatternElementsLjava/util/Iterator;orchestrationIds(Ljava/util/Iterator;getHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds *NEW_PATTERN_LIBRARY_PRODUCTION_WIZARD_PAGE SourceFile/PatternLibraryProductionSequenceWizardPage.java!   >*+  ,-  T*+,- 67* 6 * ">  () 4 **.F  345 Z+6M*;Y,=CF**N,H:(LR:-T:*FZW^*F& OPRT2U:V?WKTUZ>ZZbUc?de2f:ghi Ucjklm dL*F n*FL+bcdsi st) .ul z{| N+HM;Y+=CN,L}:-ZW,^*/-*+F& tuwx#z/w8}HM4NNG9# ghi NG9j) .  Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/PatternLibraryRuntimeSequenceWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3665 Text-content-md5: aec3e1fbb63fe5367eb759f88c6f5137 Text-content-sha1: 0e560be35c8e07985714abaf9d93824e6780e2e0 Content-length: 3724 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Korg/eclipse/egf/core/ui/wizard/page/PatternLibraryRuntimeSequenceWizardPageLorg/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/wizard/page/PatternLibraryRuntimeSequenceWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;getOrchestrationValue()Ljava/lang/String;  getPatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary; $org/eclipse/egf/model/PatternLibrary getRuntimeOrchestrationgetPatternElements$(Ljava/lang/String;)Ljava/util/List; Signature8(Ljava/lang/String;)Ljava/util/List; &(':org/eclipse/egf/common/helper/PatternLibrarySequenceHelper )"extractSequenceIds+java/util/ArrayList -/.java/util/List 01size()I *3 4(I)V -6 78iterator()Ljava/util/Iterator; :<;java/util/Iterator =>next()Ljava/lang/Object;@java/lang/String BDC+org/eclipse/egf/common/helper/PatternHelper EF deresolveId8(Ljava/lang/String;)Lorg/eclipse/egf/common/misc/Couple; HJI"org/eclipse/egf/common/misc/Couple K>getValue MON-org/eclipse/egf/model/data/helper/ModelHelper PQgetPatternElementh(Ljava/lang/String;Lorg/eclipse/egf/model/PatternLibrary;)Lorg/eclipse/egf/model/AbstractPatternElement; -S TUadd(Ljava/lang/Object;)Z :W XYhasNext()ZorchestrationValue_presultLjava/util/List;patternElementAsStringlibrary&Lorg/eclipse/egf/model/PatternLibrary;patternElementFullIdpatternElementShortIdpatternElement.Lorg/eclipse/egf/model/AbstractPatternElement;LocalVariableTypeTable$Ljava/util/List;$Ljava/util/List; getPageTitle ikj'org/eclipse/egf/core/ui/wizard/Messages l-PatternLibraryRuntimeSequenceWizardPage_TitleelementUpdated(Ljava/util/List;)V'(Ljava/util/List;)Vq,org/eclipse/egf/model/AbstractPatternElement ps tgetId v wxgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; &z {|getFullSequence$(Ljava/util/List;)Ljava/lang/String; ~ setRuntimeOrchestration elements_ppatternElementsLjava/util/Iterator;orchestrationIds(Ljava/util/Iterator;getHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds 'NEW_PATTERN_LIBRARY_RUNTIME_WIZARD_PAGE SourceFile,PatternLibraryRuntimeSequenceWizardPage.java!>*+ %&  T*+,- /0 * 4 * 7  !"#$ bM+%N*Y-,2M*:-5:39?:AG?:L: ,RWV, . ?ABDF2G?HHIMJVF`M Rb bZ`[\[]\G^_2$`?aHbcd`[e[]fg.h U  mn#oK+5M*Y+,2N,9p:-rRW,V*u-y} "]^`a#c1`:fJg 4K K\D6\#bcd KeD6f. n   Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/PatternLibraryWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4939 Text-content-md5: 6dc46e61907dc9948fcb125642a3e8c8 Text-content-sha1: 3d28ec28efd39b95db26f7b2cec8ac1a628f4a1a Content-length: 4998 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/core/ui/wizard/page/PatternLibraryWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V  createLibraryFullId()V  createLibraryNameFieldEditorparent_p#Lorg/eclipse/swt/widgets/Composite; $&%'org/eclipse/egf/core/ui/wizard/Messages '#PatternLibraryWizardPage_Name_Title $) *%PatternLibraryWizardPage_Name_Tooltip,Corg/eclipse/egf/core/ui/internal/validators/PatternElementValidator . /0 getParent1()Lorg/eclipse/egf/model/NamedModelElementWithId; 2 30getModelElement5,org/eclipse/egf/model/AbstractPatternElement $7 8*PatternLibraryWizardPage_Name_ErrorMessage +: ;r(Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/model/AbstractPatternElement;Ljava/lang/String;)V = >? isReadOnly()Z ACB2org/eclipse/egf/common/ui/helper/FieldEditorHelper DEcreateStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; G  IKJDorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor LMgetTextControl ()Lorg/eclipse/swt/widgets/Text; OQP+org/eclipse/egf/model/ModelPackage$Literals RS!NAMED_MODEL_ELEMENT_WITH_ID__NAME"Lorg/eclipse/emf/ecore/EAttribute; U VWbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V IY Z[isValid(Z)Z libraryNameLorg/eclipse/swt/widgets/Text; _ `agetPatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary; c degetModelElementWizard=()Lorg/eclipse/egf/core/ui/wizard/AbstractModelElementWizard;g;org/eclipse/egf/core/ui/wizard/AbstractPatternLibraryWizard fi j?isInCreationMode 4l mngetId()Ljava/lang/String;p$org/eclipse/egf/model/PatternLibrary rls-org/eclipse/egf/model/NamedModelElementWithId uwv+org/eclipse/egf/common/helper/PatternHelper xy getFullId8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 4{ |setIdpatternLibrary.Lorg/eclipse/egf/model/AbstractPatternElement;ZcreatedLibraryShortIdparent/Lorg/eclipse/egf/model/NamedModelElementWithId;parentIdgetCompleteStatus5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor  handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle $ PatternLibraryWizardPage_Title getNextPage(()Lorg/eclipse/jface/wizard/IWizardPage;   getWizard$()Lorg/eclipse/jface/wizard/IWizard;*patternLibraryProductionSequenceWizardPage  org/eclipse/jface/wizard/IWizard getPage:(Ljava/lang/String;)Lorg/eclipse/jface/wizard/IWizardPage;getHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds NEW_PATTERN_LIBRARY_WIZARD_PAGE SourceFilePatternLibraryWizardPage.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!  >*+  01  T*+,- :; * F **+ CE F   !"  I*+*#(+Y*-*1469*<@F*FHM*,N*1T*FXW ^NOPQR S T UVWXU Z$N*]2_3`4a7b;c<_?fHg II!"2\] C*^L*bfh=1+kN*-:oq:-t:+z * npqst!x)y2|:~B HC>}~3j'!!2:? JY*FSL*+   n .  `a 2*1o   6 *   n .   O Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/PatternWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4105 Text-content-md5: 9bc0478cace96c9264c730a47dbcf8ce Text-content-sha1: 002bf077987af539b7b882738c49729d01fd9a3d Content-length: 4164 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 15org/eclipse/egf/core/ui/wizard/page/PatternWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage_patternNameFieldEditorFLorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor;(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethis7Lorg/eclipse/egf/core/ui/wizard/page/PatternWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V  createLibraryNameFieldEditorparent_p#Lorg/eclipse/swt/widgets/Composite; >org/eclipse/egf/common/ui/toolkit/validators/CompoundValidator"'org/eclipse/egf/core/ui/wizard/Messages @#PatternWizardPage_Name_ErrorMessage 1B Cr(Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/model/AbstractPatternElement;Ljava/lang/String;)V E F0 addValidator =H IPatternWizardPage_Name_Title =K LPatternWizardPage_Name_Tooltip N OP isReadOnly()Z RTS2org/eclipse/egf/common/ui/helper/FieldEditorHelper UVcreateStringFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILorg/eclipse/egf/common/ui/toolkit/validators/IValidator;Z)Lorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor; X  Z\[Dorg/eclipse/egf/common/ui/toolkit/fields/ValidatingStringFieldEditor ]^getTextControl ()Lorg/eclipse/swt/widgets/Text; `ba+org/eclipse/egf/model/ModelPackage$Literals cd!NAMED_MODEL_ELEMENT_WITH_ID__NAME"Lorg/eclipse/emf/ecore/EAttribute; f ghbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V Zj klisValid(Z)ZcompoundValidator@Lorg/eclipse/egf/common/ui/toolkit/validators/CompoundValidator; libraryNameLorg/eclipse/swt/widgets/Text;getCompleteStatuss5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor u vwhandleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle()Ljava/lang/String; =} ~PatternWizardPage_TitlegetHelpContextId 5org/eclipse/egf/core/ui/internal/help/IHelpContextIds NEW_PATTERN_WIZARD_PAGE SourceFilePatternWizardPage.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals! >*+  -.  T*+,- 78 * >*+ @A  ' cY!Y#(+.M,1Y*3*7:<AD*+*GJ,*MQW*WYN*-_*7e*WiW HIJ KIHNOPQ%R(O+N.U/V0W1X4Y7Z8[9\:]>UD`LbMcNdQeUfVbYibj *ccNmnLopqP JrY*WSL*+t r t  xyz{ .| | { .   ` Node-path: plugins/org.eclipse.egf.core.ui/bin/org/eclipse/egf/core/ui/wizard/page/TaskFactoryHolderWizardPage.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3368 Text-content-md5: a1a485f28f248735c88833996f10f1f0 Text-content-sha1: 90425dcf066bc68f2067c1af140f1ae2338dd581 Content-length: 3427 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1q?org/eclipse/egf/core/ui/wizard/page/TaskFactoryHolderWizardPageBorg/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage_classFieldEditor6Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor;(Ljava/lang/String;)VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/wizard/page/TaskFactoryHolderWizardPage; pageName_pLjava/lang/String;S(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jface/resource/ImageDescriptor;)V  title_p titleImage_p,Lorg/eclipse/jface/resource/ImageDescriptor;createPageArea&(Lorg/eclipse/swt/widgets/Composite;)V  createClassFieldEditorparent_p#Lorg/eclipse/swt/widgets/Composite; "!'org/eclipse/egf/core/ui/wizard/Messages #'TaskFactoryHolderWizardPage_Class_Title % &0TaskFactoryHolderWizardPage_OpenTypeDialog_Title ( )*getHostingProjectClassLoader()Ljava/lang/ClassLoader; , -.getHostingBundle()Lorg/osgi/framework/Bundle;0&org/eclipse/egf/core/task/ITaskFactory 2 34 isReadOnly()Z 6872org/eclipse/egf/common/ui/helper/FieldEditorHelper 9:createJavaClassFieldEditor(Lorg/eclipse/swt/widgets/Composite;Lorg/eclipse/jface/dialogs/DialogPage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Lorg/osgi/framework/Bundle;Ljava/lang/Class;Z)Lorg/eclipse/egf/common/ui/field/JavaClassFieldEditor; <  >@?4org/eclipse/egf/common/ui/field/JavaClassFieldEditor ABgetTextControlC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; DFE+org/eclipse/egf/model/ModelPackage$Literals GH"TASK_FACTORY_HOLDER__FACTORY_CLASS"Lorg/eclipse/emf/ecore/EAttribute; J KLgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; N OPbindTextToAttribute(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/emf/ecore/EAttribute;Lorg/eclipse/egf/model/NamedModelElementWithId;Lorg/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage;)V >R STisValid(Z)Z classNameLorg/eclipse/swt/widgets/Text;getCompleteStatusY5org/eclipse/egf/common/ui/toolkit/fields/IFieldEditor [ \]handleFieldEditorValidation;([Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor;)Z fieldEditors8[Lorg/eclipse/egf/common/ui/toolkit/fields/IFieldEditor; getPageTitle()Ljava/lang/String; c d!TaskFactoryHolderWizardPage_TitlegetHelpContextId gih5org/eclipse/egf/core/ui/internal/help/IHelpContextIds jNEW_TASK_FACTORY_PAGE SourceFile TaskFactoryHolderWizardPage.java InnerClasseso"org/eclipse/egf/model/ModelPackageLiterals! >*+  *+  T*+,- 45 * >*+ =>  =*+*$*'*+/*15;*;+=M*,C*IM*;QW NFGHIJ K LMNFQ&S'T(U+V/W0S3Z<[ ==&UVW4 JXY*;SL*+Z c e  ^_`a .b m ea .f u klm Dnp Node-path: plugins/org.eclipse.egf.core.ui/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 639 Text-content-md5: 123704b491227e860606c42e471ab743 Text-content-sha1: 623a1a8c3b9608a69cbfc7d3c196a08ba82ff3d1 Content-length: 684 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ about.html,\ plugin.xml,\ plugin.properties,\ icons/ src.includes = about.html Node-path: plugins/org.eclipse.egf.core.ui/icons Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/icons/ovr Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/icons/ovr/required_field_cue.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 126 Text-content-md5: 410e9099dd0c0bddc79fdf99b6982075 Text-content-sha1: c0b0b0df13cf0b510a1fde4fa4d3ada9afebe31b Content-length: 185 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a`.j655Ѐ!Created with GIMP! ,)3(T tR,; Node-path: plugins/org.eclipse.egf.core.ui/icons/wizban Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/icons/wizban/Thumbs.db Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 11776 Text-content-md5: 18846074ecdf39b1634d8cf6cdb6a2ab Text-content-sha1: f569dddd5b9822a891857b726973d272657bf24b Content-length: 11835 K 13 svn:mime-type V 24 application/octet-stream PROPS-END ࡱ>  Root Entry!1^ 2&3C  !"#$%'()*+,-./0123456789:;<=>?@ABDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeghijklmnopqrstuvwxyz{|}~ R JFIFxxC     C   BK" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S(߇5;=OIԟITfGccU@}zŅZjqQ!Cݪd rXh{)=.ω~x i<] .ZL'G8Qn KgҴ>zLc \XG].U-O.X F\;= VH׉x?7/6$aӡ;S|S&󒧧s>.ŖzG[7kV# 硭ӷӹSMsy=={sO1 1E^*$\։'%浧\$Ώs@yѫƦw4χzzjV]LI&/2RD&> 칹SwxOƏ ]qK%ݽ l/b6Nи$vyok_z''yfԢ.DLVv@Ԃqn|?6RҼ! ,Kkof G8K(qx{zwڲnef,'k7e+k67^Lkst(+]B~F07W:"Z "Mn,Gݑzמ[>_}V->h<3Nf;+.b*)oze_k§ aM숔8/ /xM$->]>t=[Lqq qdp xzΗ[OetXpxeafWY&{;j3~л-#08w X|5knGwe E–򻴏 V&11Ue'o^hnW+Woez>m[I nTÕ6`H_6MoP4-#zr7__Ot/NދJ+tIq3O_Q9r'_<7*^x?ZSѴXt׵\Iq"9+3j~#ZGLLV/&=~qsڽ~'~kzDyc5㺉B[#> `,׷hgs&[2a8goz_Ks.<֫q0SF>Hb~zsּ^C9m_߄pl~ 1.U)]Yo[Nyf^KI>^}-}{~ VԼKv񾍦%Wsd^N7F7n t:ݦn/j]ޗ2ڋ v'ob=Y,yb}+F(d+CjUIݒGByѶÿO}&-6Bg0 Ė'WWJF)+)NS|wl#N*0VKw6x᮵p$!տZyHQrT_+_KԪ_Cޡ׹~|O4 uBBHc5OI=2C_vD繍O#F\1Xh*qOD1S(>p'b7&RH-+SRB _6Oz)E#Sm\bƆK~}l܁WBw؇nz}yƏ xz'ֵL-49^29_78ZxddC2 y s|.Ǔo^g[' $*W4Cs:,w6Y"dpAƻ4]<( WF(?حyoWno3?jx+pTW  Uy4!.߱T&cst֟RO/-ux @Bg[^iqڮ0ݢ%?f ǗK:úKœd^qT>ǫ+]f'*7̄ݐ;S ZixE E6IDcs''U/5XV\d9&;C$'/LNIɠŻ kA5 Q2mqc8־I'DQk(IJo܌5֛hZzx!bhĶRqqHIs[U>.:x;Zi$fͳI1k?x ^&ЛK n>6<1]|Nucٰ*yM F }:s4.W*Q|ݻ(M N45_b)뗗_Ai,p T %QaNxƗuMqmrn&g:I((*@' yҏXV/43oo&*F:WxO7^ 7,tWYUI ~l.%'J1o],T0||_i}E)CoM㞵[mK|0=-z~#˝"StEl$YpF3l=]2].KYdzb=GC]>OXwJ]g⬴F?ŷXeѵEm|Уe$L$\(k8KLA2\E.vH*Ѓ޹ǃ{^bpkKUH[}*4#xOԵ?`v !@R2Hw<׌n|u.i|i:W9j1Hm5h%HX8FXm){ 7)wsۊ3?<AWJϕsCc9#>x~[+J`bRJ+8\4hrV&0ri[zHL&zj>>Ok/363a!D#n$xw>|K⯂mc[iתCE*cv@ܼp>Q,$hqhڞ.'jVX~#?QjJEW=Nߊ3,u}NMṟ.bPNk8QS8Ԏ:*AUfҴkTHUv@'Q$Kk/gOx'Uj祿-rGo!ܖy-A9$1KOŸ͠SӚ5Bi-%ܡI%p8 ҪK/ܾv>iԖ\;yyYuɬfW6> GmVUz\3cgK9kfΰBfsOZG QE˖u̮u;[PHe5|*k_m>Dv:(`wfQo?Uğ~,_BRp/|@  WѾ7heڄkɡQgn3kZ+JMtQH]E=nԔI^9@#=oά@㣱iV}&h6##ǽa}+e꼕Ig1C,Rmu E`ou #B##&a'F㰱7;-X>+IҺT} lmL _4踫i+TmtjJԓ~QExd/U䢊$ZNQ]3+Uڒ+A``8* >patternLibrary.png(* >domain.gif** >mapping.gif** >pattern.gif Node-path: plugins/org.eclipse.egf.core.ui/icons/wizban/domain.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3032 Text-content-md5: bbde47bd1f1b38d6b9de171b9dae53ec Text-content-sha1: 9f1137a175d1d0c4a785c74f6ae6a4be957ad665 Content-length: 3091 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF87aKBw8vڭp\SԇDȿ}kŤhƚ¨ɼɵbĢɤw)ؚl<Ҫ[zhl(蹇طYͻ¶Λcڹu\篇țeL}h¥ŭ`ŸbVq~տ`^ܟUT;cp0ȨGnqDZn7ѺתvϷνоʒѭǤmٰhϝwa)qmͶīͦݴ!,KB@H*\H0L7-0HqbS@̙c Q"Ā(+:QK0A"E&$4͘q:QhyŸ`Ө I, ajbԐAO`j5BM#F_YQCRleУӡ kBË7Hk(ɳ <˧D'؏긡!2NnFrA%Q5Ņfx~v!Lm!.Ȇm,(nj A)0TFu4T 1bIl" V FU&a%ES8/14M8iG#t@T dd]RQՀH$UE9gW7iSX?Yz˦9ŔSP ҡdyAbsG.hqE;rng }HHeadpUf lVJh5V~kͪȢ8[/xp!h1{_$p  ÊD,"rB$4ʹ.+\2!>@70F6> 2O@(*749M,q`(Mj Џl$R8ooʜ4bGQƍJ%*@fN9TƢ,(B#N< f ;U,d%K>v)O5bG ^Jҭ&u4]hgT dl+Eꮵ; Znap:XIP(e$"6u(ƞEXYR0^9e+@cЅ%8Aъz"qZ6 z.g4"l| ;>"hp=PqE+#jP*cnڻZbt#.0A O3nGA3{N'r>$H f-@Z@P,RX9M}\:+CenU8;4CtX})ӧ { zD*$@NjD*rC uπnAߐ ñ0-^vHi!l̴w xr/,ZѮL@˨04 հD,6N`'xCX$T7LȈ‚u L  ȶ L` F$ zHvg[t&:MDi+7ɂƁvI5T+ BX(C-O`"1{ ClAHOhT%^erMH BUK5eZY,@p+6nP(vW8{ߎ{ Up I.N7bp(B9JV@4klg~NUOSpH 9q_Ѻ N}:8bY)@ 33'm66ثǷc/QG^ "xUs=^MJ&D8@$d/4B?P(5dPс"f $rʊ5b5``r!q7 A8"4.%Lbns8LdYtAF iL6O z0F7P\„ ,%>M `&Ah0xhf.]i' B}(HYI j-&c Vʅ#wiV|*h:@攓 AIw,;R@ق,*Y BPC@de`#D ѭ2*[7< +tbq;?2"$"JRK0Yqă:KlPdka!?%{mrq.=,35k&$\p2$Eh{v >DRfD N F,K3C\A `|CD@D'@ЂTꬻ"oGZ`A 5T@ qyAD2&(zp ʠAweO;H'2> 0$ JpA8a`T9!@bxBeM x!Z"*= EBQ% e<0"$LhNbHȣC,j3W%1 7Q֘7*ؓmV;$&ő7cu’ '<7.1ڛdT q l8@&\ Gj-u(@p U"‘p% X{+#Ĕ9HIJ@AJHP)#%Rфz3&(TNx iNt\@;K@'r*Z@HB}&V\\xVԩJ-:>M#% "ٔ hC '$!u_j Z82 ), )_ஐjd5A@4nCR vbl]Z C(akYR1NU,rv`!ِdGP @@"Q8*HB$E@?S@+MV:g(> ծ՘!XwlkPjE2Z\!z5Q?P] k&T$`}&bj^ `F;`[NqCB_(D$2 wh pXwXрP0)8-ؑKո7 IH&AnA ob;S`9t!C\@G0x9Zkdl!]r R 5# h N$ 0̛qFX*|DY'@:OB0gzKơ q 8ct#3I սt3 WpX'R"XBe4d` $ti6(VzB4BpN#L ж-yi8X%阢D`$-M0]X`shD_#:^HwoM  ~&"380yTt7r1n-lC 1!Vݨ0+:l✃ ]q 0&P}hGo=/b"~_~i>&l?+/=zGN/E7u}#`~zW|ZL6Kh €w|'Z; Node-path: plugins/org.eclipse.egf.core.ui/icons/wizban/pattern.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2892 Text-content-md5: d00542b5d2806d9fccf6b0f263ea3302 Text-content-sha1: bdcfd73ac5de3ed7a09d7a721558b3373c277bf9 Content-length: 2951 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89aKBU&n6w윸;|oY ]ZHvν,r@P``h׾y˽㑴pd㣿faGީ޻KGlOskʕۘb_A!,KBH*\H0D 0H?S:DѢǏCLǓA\ I(@ّ͐ `4SzJӁذ6JltS"0@6+S]maj  b]mZ.ٶ Aܲt(zp`Wٺ'[ty0[IUd P̍w9I~{fǁY62&Ծl%= pQo~8`3`9i̯<]:vS8wO]g [~ĉy9Rt'YS@Hv[EqW;u9`"KrJ)`O3s!GKr &Ӏr)śx241|z1/o 6 0ޝGB>hMs yMGv6lq+z>yyO$ӌ@B *j=<9B 4&9Э`wഔAr( 9a D6B|`%TU6  1/}< y(BfcDt! &(pf&5 QW0 HbB@?LvjW@bV`GAp& 5h0Kִ1Kȫf Jak.`d*8Lr2wi+^Ҷ-&A*I4Kdzk + |n@}!5fDgAB #8I@(\Y̢=xqpȅ7hÚ9 \0Ui 2(8! (6lp:Ё YLjH &~j֢zx2m%D>Fk3" I6]ā8ƜB@@W1,'FFL2_'k<q2s筀yb`C@ zͅ3Z X?2h>A)AK9mnK?hQw_ֳYzH34 -Dv&#}jzo;\N6Kl^!v]f7X>v\\,`M>'`Uo'֟Wwᙣ>f3,0]`-kIt ( o<đmWܳp p݇F8z\[6شXٹsbrC+;|6\6av>Ȍ|KGax5S&gpU q۳qvw;8`aa MVql^_XFV|A|Al\lo5Ӂ+6f mW\a&f#ۿl =rcuʋp[ĥ@OG EO|{ Y)gP:(N+{q02Sýk^zֻ9|&7oA905'? j2<K,ѕުaY,,0,Pĺ($P۲ aCo<'tኾgv[D[D%NU`l Suvb^fS/2n㗁1XO@91X?wMt..f{Q>:2#G&DWGk;"_m_JH<\EƂaa@v̚밾AsE12\{6EDP&V؀& D5L3*%96 P@[W. Lu_muol DIo󙕤zA 'W}Zp S[,An݀OJ!~<a1c`Öel@!&]m=UaM.o{0`$`s \U}IJĐ p`hfbGSx<"aeAQBC@"PBq 3hWo\coȥ0bCD DŔD:OGZ)-:ٞGX l?C83^uދf$@ Kt]&;5Mm1{$|VVȁVžbYjs&b?} w< <U(@ in)ϲMoUB4 - .ڈm ڲMªg [w v $@9&6Jo㒃 sA,@O̶@ҩZMT39Mh. nh?2_G11h ЈKN9c "E{; ,-%R ᖖ( \iz@iZpO]ډG3jqn8k ahc`ľ95ڸ<`ϢPAlh9 8Dcl[98J8<'M{ݦgQvp c܅q)ZC6.'l7{^{ : vEʳ)K/mOW#1&6L* w=ظvS'Ybj}Yɰ`.cM)s#&<FkaŇn++. |<.ȏ96Abv8Q$gk/15Ѷų!3LPhjn]XZ&b5cu1V} ojc_$m 9,um# B-F-A0ݯݖ՝/Z< ]XqBD[5sn$ c3$9z=.L՚0p`m?Pe9D9%v6Nq&3bNĴ x#rɅt#Փ+ŕHX *Pb)h/*>v=! E".DsA Nւ*~(|i kFޓ םA:s)lqDI0™j̃j `~=ј~8WVem`Y(U. s p52W-_ `N\X_lِX8mygMD[{atWGᶭt/)m%L՚v:\sМT ozu }UbIB)[CKZG6.{ǭxhîF̰zU? >wj v㆜c ַww vLc` @kݦ}')9WQQ@ ?KU[,X#*ÐĵL5QP? ð A@zԙxFܑNFz)#"'Kņݒb;R6+ X)@HH/d`X( [456-Sfo axJ"$"e^1x( f (`CC\I37!1"*Am6466MÓUTOq_ڕ);W" 99x ӨQb&0r_RURF@jfC:<6K3ƜÐI&LlsztߏMD7&v(2Bo B"YYǮDT6LUyGgԘ6"eCa1KQt/ N|C>^EtI! j3h.DodFB1| KO`lh6<BS0 jNi~N"g"p tU T1d RȫAICjڠtZD%5H3ĥ% H^5HHՔ珰*GfTX"B7OBW2YFa%4} J.!?ryD0hb8X²*O 3Se=|T,tj`vs'x)Pޔ*vmDx3Dei2dW_1M2Qaƴ U|K]m W<wxMܯE+PXZ^ =ќ"%Jfę)CȌٱ 9T"jcI*LA.}N ڐ8k7"d"%`b$gQ@L~!T<NSb34QI͵=o«eH 7{$S%FWЙ/UmvʮrJ@@G! XtrʌXEt<x(;oaUF`*J6-v*+Yt0LeU,BKAG%:)҆V.Qp.YPPT$"u&d~sVIENDB` Node-path: plugins/org.eclipse.egf.core.ui/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 717 Text-content-md5: b4f6ad13cfe0202127e79d477e7d338f Text-content-sha1: 2d53c034d45a942e65a6b90a2a5862e556534a9f Content-length: 762 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Core UI (Incubation) providerName=Eclipse Modeling Project egf.menu.entry=EGF egf.preferences.keyword.general=EGF egf.preferences.general=EGF egf.preferences.domain=Domain egf.preferences.fc=Factory Component egf.preferences.pattern=Pattern decoratorLabel=Mandatory Field Decorator Node-path: plugins/org.eclipse.egf.core.ui/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3356 Text-content-md5: 40ba07757fe1530925285370405e3563 Text-content-sha1: dfa5e4307750a56a1ae412cf72da338bbb653c11 Content-length: 3401 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/EgfPreferencesInitializer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1749 Text-content-md5: 9b98acbb5692e79f1ae76f084fa2bb22 Text-content-sha1: 694f7654550d7cf252aab88a83711988fbec46f6 Content-length: 1794 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.egf.core.ui.preferences.IPreferenceConstants; import org.eclipse.jface.preference.IPreferenceStore; /** * EGF preferences initializer. * @author Guillaume Brocard */ public class EgfPreferencesInitializer extends AbstractPreferenceInitializer { /** * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() */ @Override public void initializeDefaultPreferences() { IPreferenceStore preferenceStore = EgfUiActivator.getDefault().getPreferenceStore(); // Set the default domain editor. preferenceStore.setDefault(IPreferenceConstants.DOMAIN_EDITOR_ID, IPreferenceConstants.GRAPHICAL_ECORE_EDITOR_ID); // Set the default FC execution mode. preferenceStore.setDefault(IPreferenceConstants.FC_EXECUTION_MODE, IPreferenceConstants.EXECUTION_WITH_PRE_VALIDATION); // Set the default Pattern execution mode. preferenceStore.setDefault(IPreferenceConstants.PATTERN_EXECUTION_MODE, IPreferenceConstants.EXECUTION_WITH_PRE_VALIDATION); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/EgfUiActivator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 10877 Text-content-md5: af0edbb82dd51278a63f7a876c10202c Text-content-sha1: 6072208ae866827b6b5910750c52e63d0dcea1a0 Content-length: 10922 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.common.ui.activator.AbstractUIActivator; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.ui.data.ElementAdapterFactory; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentInWorkspace; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSetManager; import org.eclipse.egf.core.ui.data.fc.FactoryComponentInPlatform; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.provider.ModelItemProviderAdapterFactory; import org.eclipse.emf.common.command.BasicCommandStack; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.domain.IEditingDomainProvider; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle */ public class EgfUiActivator extends AbstractUIActivator { /** * The shared instance */ private static EgfUiActivator __plugin; /** * Edit domain used to deal with EGF data. */ private AdapterFactoryEditingDomain _editingDomain; /** * Edit domain used to deal with EGF data in a read only context. */ private AdapterFactoryEditingDomain _editingDomainInReadOnly; /** * Reference to the container that holds factory components located in the workspace. */ private FactoryComponentInWorkspace _factoryComponentInWorkspace; /** * Container where working sets are managed for the current workspace. */ private FactoryComponentWorkingSetManager _factoryComponentWorkingSetManager; /** * Reference to the container that holds factory components located in the running Eclipse instance. */ private FactoryComponentInPlatform _factoryComponentInPlatform; /** * Adapter factory for non EMF objects. */ private static final ElementAdapterFactory _factory = new ElementAdapterFactory(); /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context) throws Exception { super.start(context); __plugin = this; // Force to load the Core plug-in. CoreActivator.getDefault(); // Register adapter Platform.getAdapterManager().registerAdapters(_factory, FactoryComponentInWorkspace.class); Platform.getAdapterManager().registerAdapters(_factory, FactoryComponentInPlatform.class); Platform.getAdapterManager().registerAdapters(_factory, FactoryComponentWorkingSetManager.class); Platform.getAdapterManager().registerAdapters(_factory, FactoryComponentWorkingSet.class); // Force to load the editing domains that seem to be time consuming when instantiating. getEditingDomain(); getEditingDomainInReadOnly(); } /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext context) throws Exception { try { // Unregister the adapter factory. Platform.getAdapterManager().unregisterAdapters(_factory); // Dispose working set manager. if (null != _factoryComponentWorkingSetManager) { _factoryComponentWorkingSetManager.dispose(); _factoryComponentWorkingSetManager = null; } } finally { __plugin = null; super.stop(context); } } /** * Returns the shared instance * @return the shared instance */ public static EgfUiActivator getDefault() { return __plugin; } /** * Return an input related to factory components in the workspace. * @return not null object. */ public IAdaptable getFactoryComponentInWorkspaceInput() { return getFactoryComponentInWorkspace(); } /** * Return an input related to factory components in the workspace. * @return not null object. */ public IAdaptable getWorkingSetsInput() { if (null == _factoryComponentWorkingSetManager) { _factoryComponentWorkingSetManager = new FactoryComponentWorkingSetManager(); } return _factoryComponentWorkingSetManager; } /** * Return an input related to factory components in the platform. * @return a not null object. */ public IAdaptable getFactoryComponentInPlatormInput() { return getFactoryComponentInPlatform(); } /** * Return all factory components located in both workspace and running Eclipse platform. * @return a not null list. */ public List getAllFactoryComponents() { // Get factory components from the workspace. List allFcs = getWorkspaceFactoryComponents(); // Append factory components from the platform. allFcs.addAll(getTargetPlatformFactoryComponents()); return allFcs; } /** * Return all factory components located in the running Eclipse platform. * @return a not null list. */ public List getTargetPlatformFactoryComponents() { // Get factory components from the target platform. return new ArrayList(getFactoryComponentInPlatform().getFactoryComponents()); } /** * Return all factory components located in the workspace. * @return a not null list. */ public List getWorkspaceFactoryComponents() { // Get factory components from the workspace. return new ArrayList(getFactoryComponentInWorkspace().getFactoryComponents()); } /** * Get the object that manages all factory components located in the workspace. * @return */ private FactoryComponentInWorkspace getFactoryComponentInWorkspace() { // Lazy creation pattern. if (null == _factoryComponentInWorkspace) { _factoryComponentInWorkspace = new FactoryComponentInWorkspace(); } return _factoryComponentInWorkspace; } /** * Get the object that manages all factory components located in the target platform. * @return */ private FactoryComponentInPlatform getFactoryComponentInPlatform() { // Lazy creation pattern. if (null == _factoryComponentInPlatform) { _factoryComponentInPlatform = new FactoryComponentInPlatform(); } return _factoryComponentInPlatform; } /** * Get the editing domain to deal with EGF model elements.
* This editing domain supports model elements modifications. * @return a not null {@link AdapterFactoryEditingDomain} instance. */ public AdapterFactoryEditingDomain getEditingDomain() { if (null == _editingDomain) { // Create the adapter factory. ExtendedComposedAdapterFactory adapterFactory = createAdapterFactory(); // Create the editing domain. _editingDomain = new AdapterFactoryEditingDomain(adapterFactory, new BasicCommandStack()); // Initialize the created editing domain. initializeEditingDomain(_editingDomain, adapterFactory); } return _editingDomain; } /** * Initialize the editing domain. * @param editingDomain_p * @param adapterFactory_p */ private void initializeEditingDomain(AdapterFactoryEditingDomain editingDomain_p, ExtendedComposedAdapterFactory adapterFactory_p) { // Set the editing domain on the adapter factory. // Without this trick, all changes made on model element objects by the property sheet page are not performed through the EMF command mechanism. // We must do that because our model elements objects are not stored in resources (ResourceSet). adapterFactory_p.setEditingDomainProvider(editingDomain_p); } /** * Get the editing domain to deal with EGF model elements in a read only context. * * @return a not null {@link AdapterFactoryEditingDomain} instance. */ public AdapterFactoryEditingDomain getEditingDomainInReadOnly() { if (null == _editingDomainInReadOnly) { // Create the adapter factory ExtendedComposedAdapterFactory adapterFactory = createAdapterFactory(); // Create the editing domain. _editingDomainInReadOnly = new AdapterFactoryEditingDomain(adapterFactory, new BasicCommandStack()) { /** * @see org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain#isReadOnly(org.eclipse.emf.ecore.resource.Resource) */ @Override public boolean isReadOnly(Resource resource_p) { return true; } }; // Initialize the created editing domain. initializeEditingDomain(_editingDomainInReadOnly, adapterFactory); } return _editingDomainInReadOnly; } /** * Create adapter factory. */ private ExtendedComposedAdapterFactory createAdapterFactory() { // Create an adapter factory that yields item providers. return new ExtendedComposedAdapterFactory(new ModelItemProviderAdapterFactory()); } /** * Implements a {@link ComposedAdapterFactory} which is also an editing domain provider. * @author fournier */ private class ExtendedComposedAdapterFactory extends ComposedAdapterFactory implements IEditingDomainProvider { private EditingDomain _editingDomainProvider; /** * Constructor. * @param adapterFactories_p */ public ExtendedComposedAdapterFactory(AdapterFactory adapterFactory_p) { super(adapterFactory_p); } /** * @see org.eclipse.emf.edit.domain.IEditingDomainProvider#getEditingDomain() */ public EditingDomain getEditingDomain() { return _editingDomainProvider; } /** * Set given editing domain. * @param editingDomainProvider_p */ protected void setEditingDomainProvider(EditingDomain editingDomainProvider_p) { _editingDomainProvider = editingDomainProvider_p; } } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/IImageKeys.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1446 Text-content-md5: 53e537180af80260d4b74721d01987eb Text-content-sha1: d3e320dc760082096355d2220574288ce5fed457 Content-length: 1491 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui; /** * Defines common images constants. * @author fournier */ public interface IImageKeys { /** * Pattern model wizard id. */ public final static String IMG_WIZARD_PATTERN_MODEL = "wizban/pattern.gif"; //$NON-NLS-1$ /** * Pattern library wizard id. */ public final static String IMG_WIZARD_PATTERN_LIBARY = "wizban/patternLibrary.png"; //$NON-NLS-1$ /** * Domain wizard id. */ public final static String IMG_WIZARD_DOMAIN = "wizban/domain.gif"; //$NON-NLS-1$ /** * Mapping wizard id. */ public final static String IMG_WIZARD_MAPPING = "wizban/mapping.gif"; //$NON-NLS-1$ /** * Required Field cue image id.
* Copied from org.eclipse.team.ui plug-in. */ public final static String IMG_REQUIRED_FIELD_CUE = "ovr/required_field_cue.gif"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1194 Text-content-md5: a71f52a0d46d7818a12a945e1e15038d Text-content-sha1: 35327acb44d87f589f662b6a88f037a6381eafd8 Content-length: 1239 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui; import org.eclipse.osgi.util.NLS; /** * I18n translation helper. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.messages"; //$NON-NLS-1$ public static String PatternOverviewPage_PatternNameErrorMessage; public static String PatternOverviewPage_PatternNameRegularExpression; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5854 Text-content-md5: 1391c38fa9b74e34dd2dd896a193032b Text-content-sha1: 3bac73599d82e31700c7d65f99929bfa27272eb2 Content-length: 5899 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.actions; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.egf.common.helper.FileHelper; import org.eclipse.egf.common.misc.Couple; import org.eclipse.egf.pde.emf.reader.descriptor.IEmfExtensionDescriptor; import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory; import org.eclipse.emf.codegen.ecore.genmodel.GenModel; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** * This operation provides a template to perform code generation that modifies the workspace content. * @author Guillaume Brocard */ public abstract class AbstractGenerateCodeOperation extends WorkspaceModifyOperation { /** * The relative path against the eclipse platform to locate the Ecore file. */ private String _modelPath; /** * Generator adapter factory. */ private GeneratorAdapterFactory _generatorAdapterFactory; /** * Is the execution successful or not ? */ private boolean _result; /** * Constructor. */ protected AbstractGenerateCodeOperation() { // Set the ISchedulingRule to null to avoid the workspace to be locked. super(null); } /** * Return if the Emf generation is successful or not. * @return */ public boolean getResult() { return _result; } /** * @see org.eclipse.ui.actions.WorkspaceModifyOperation#execute(org.eclipse.core.runtime.IProgressMonitor) */ @Override final protected void execute(IProgressMonitor monitor_p) throws CoreException, InvocationTargetException, InterruptedException { _result = doExecute(monitor_p); } /** * Performs the steps that are to be treated as a single logical workspace change. *

* Subclasses must implement this method. *

* @param monitor_p * @return * @throws CoreException * @throws InvocationTargetException * @throws InterruptedException */ protected abstract boolean doExecute(IProgressMonitor monitor_p) throws CoreException, InvocationTargetException, InterruptedException; /** * Load potentially existing GenModel for given model file path. * @param modelFileName_p * @param extensions_p existing EMF generated_package extensions, whether in the workspace or in target platform. * @return */ protected GenModel loadExistingGenModel(IPath modelFileName_p, Collection extensions_p) { GenModel result = null; // Get file full URI. URI fileFullUri = FileHelper.getFileFullUri(modelFileName_p.toString()); // Unable to get it, return. if (null == fileFullUri) { return result; } // Load resource from this path. ResourceSet resourceSet = new ResourceSetImpl(); Resource resource = resourceSet.getResource(fileFullUri, true); // Get resource contents. List contents = resource.getContents(); // First element should be of EPackage type. if (!contents.isEmpty()) { EPackage rootPackage = (EPackage) contents.get(0); // Get namespace URI so as to get existing GenModel from registered extension point. String nsURI = rootPackage.getNsURI(); // Cycle through existing extensions for a possible match. for (IEmfExtensionDescriptor descriptor : extensions_p) { Couple generatedPackage = descriptor.getGeneratedPackage(); // Found namespace URI match. if (nsURI.equals(generatedPackage.getKey())) { Resource genModelResource = resourceSet.getResource(generatedPackage.getValue(), true); EList genModelContents = genModelResource.getContents(); if (!genModelContents.isEmpty()) { result = (GenModel) genModelContents.get(0); } break; } } } return result; } /** * Return the model path against the eclipse platform. * @return the modelPath */ protected String getModelPath() { return _modelPath; } /** * Set the model path against the eclipse platform. * @param modelPath_p the modelPath to set */ public void setModelPath(String modelPath_p) { _modelPath = modelPath_p; } /** * Return the generator adapter factory. * @return the generatorAdapterFactory */ protected GeneratorAdapterFactory getGeneratorAdapterFactory() { return _generatorAdapterFactory; } /** * Set the the generator adapter factory. * @param generatorAdapterFactory_p the generatorAdapterFactory to set */ public void setGeneratorAdapterFactory(GeneratorAdapterFactory generatorAdapterFactory_p) { _generatorAdapterFactory = generatorAdapterFactory_p; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/actions/AbstractUiHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3034 Text-content-md5: d141fd12f433ee2c0683f416630d2e49 Text-content-sha1: d12d4b953b971ddeab07d508c2fc0122795667ee Content-length: 3079 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.actions; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.expressions.EvaluationContext; import org.eclipse.core.runtime.IAdaptable; /** * This class extends the {@link AbstractHandler} implementation class to provide a method to get the selected elements matching an expected type. * @author Guillaume Brocard */ public abstract class AbstractUiHandler extends AbstractHandler { /** * Return the selected objects in current selection matching given expected type. * @param event_p * @param expectedSelectionType_p * @return an empty list if no object is found matching expected type. */ protected List getSelection(ExecutionEvent event_p, Class expectedSelectionType_p) { List result = new ArrayList(0); // Precondition. if (null == event_p) { return result; } EvaluationContext applicationContext = (EvaluationContext) event_p.getApplicationContext(); // Precondition. if (null == applicationContext) { return result; } // Get default variable as context. Collection defaultVariable = (Collection) applicationContext.getDefaultVariable(); // Loop over the context variables. for (Object currentVariable : defaultVariable) { T adapter = getAdapter(currentVariable, expectedSelectionType_p); if (null != adapter) { result.add(adapter); } } return result; } /** * Get an adapted instance for given object in specified type. * @param * @param object_p * @param expectedSelectionType_p * @return null if given object is not the expected type or not adaptable to expected type. */ private T getAdapter(Object object_p, Class expectedSelectionType_p) { T result = null; // Check given object is instance of expected class. if (expectedSelectionType_p.isInstance(object_p)) { result = expectedSelectionType_p.cast(object_p); } // Given object is adaptable, try to get an instance of expected type. if ((null == result) && (object_p instanceof IAdaptable)) { result = expectedSelectionType_p.cast(((IAdaptable) object_p).getAdapter(expectedSelectionType_p)); } return result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/command Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/command/ChangeDescriptionWrapperCommand.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3255 Text-content-md5: d8855cab357cb235bcc40e1c2793065f Text-content-sha1: 5a34577ca3779017dc0f825912d813e3d46269f0 Content-length: 3300 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.command; import java.util.ArrayList; import java.util.Collection; import org.eclipse.emf.ecore.change.ChangeDescription; import org.eclipse.emf.edit.command.AbstractOverrideableCommand; import org.eclipse.emf.edit.domain.EditingDomain; /** * Implements a runnable command by the EMF command stack.
* This command deals with modified model element objects described in a change description.
* @author fournier */ public class ChangeDescriptionWrapperCommand extends AbstractOverrideableCommand { /** * Change description that contains changes on a model element object. */ private ChangeDescription _changeDescription; /** * Constructor. * @param domain_p */ public ChangeDescriptionWrapperCommand(EditingDomain domain_p) { this(domain_p, Messages.ChangeDescriptionWrapperCommand_Command_Title); } /** * Constructor. * @param domain_p * @param label_p */ public ChangeDescriptionWrapperCommand(EditingDomain domain_p, String label_p) { super(domain_p, label_p); } /** * Constructor. * @param domain_p * @param label_p * @param description_p */ public ChangeDescriptionWrapperCommand(EditingDomain domain_p, String label_p, String description_p) { super(domain_p, label_p, description_p); } /** * @see org.eclipse.emf.edit.command.AbstractOverrideableCommand#doExecute() */ @Override public void doExecute() { // Do nothing because changes are already done by the change recorder. } /** * @see org.eclipse.emf.edit.command.AbstractOverrideableCommand#doRedo() */ @Override public void doRedo() { _changeDescription.applyAndReverse(); } /** * @see org.eclipse.emf.edit.command.AbstractOverrideableCommand#doUndo() */ @Override public void doUndo() { _changeDescription.applyAndReverse(); } /** * Set given change description. * @param changeDescription_p the changeDescription to set */ protected void setChangeDescription(ChangeDescription changeDescription_p) { _changeDescription = changeDescription_p; } /** * @see org.eclipse.emf.common.command.AbstractCommand#prepare() */ @Override protected boolean prepare() { // Can be executed if change description is set. return (null != _changeDescription); } /** * @see org.eclipse.emf.edit.command.AbstractOverrideableCommand#doGetAffectedObjects() */ @Override public Collection doGetAffectedObjects() { return new ArrayList(_changeDescription.getObjectChanges().keySet()); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/command/ChangeRecorderWrapperCommand.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2581 Text-content-md5: 01b06092aab4074f0fa004473ed91fb1 Text-content-sha1: 98ad31c1c0cb8977c0726826b51b18dea086aa65 Content-length: 2626 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.command; import java.util.List; import org.eclipse.egf.model.edit.command.AbstractModelElementCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.change.ChangeDescription; import org.eclipse.emf.edit.domain.EditingDomain; /** * Provides a support to have undo, redo mechanism for model element object changes performed through a change recorder. * @author fournier */ public class ChangeRecorderWrapperCommand extends AbstractModelElementCommand { /** * Constructor. * @param editingDomain_p * @param modelElement_p * @param feature_p * @param value_p */ public ChangeRecorderWrapperCommand(ChangeDescription changes, EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { super(editingDomain_p, modelElement_p, feature_p, value_p); // Set given change description on the "crud" equivalent command. List commands = getCommandList(); if (!commands.isEmpty()) { ChangeDescriptionWrapperCommand command = (ChangeDescriptionWrapperCommand) commands.get(0); command.setChangeDescription(changes); } } /** * @see org.eclipse.egf.model.edit.command.AbstractModelElementCommand#getCrudCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected Command getCrudCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { return new ChangeDescriptionWrapperCommand(editingDomain_p); } /** * @see org.eclipse.egf.model.edit.command.AbstractModelElementCommand#getLabel() */ @Override public String getLabel() { // Compute systematically the label. return getDetailedLabel(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/command/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1192 Text-content-md5: 05d08b55b2a99d7128f24bb2aa68362b Text-content-sha1: 4515018dcc46551f12c7c0665759e39b65bae8c4 Content-length: 1237 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.command; import org.eclipse.osgi.util.NLS; /** * I18n translation helper. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.command.messages"; //$NON-NLS-1$ /** * Label of the ChangeDescription command. */ public static String ChangeDescriptionWrapperCommand_Command_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/command/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 621 Text-content-md5: 29392a2dd992679ed08a3335c0fa02d0 Text-content-sha1: c97b30bce5d1bb96fbe147e9b58e90647ddac100 Content-length: 666 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### ChangeDescriptionWrapperCommand_Command_Title=Changes on Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/contract Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/contract/type Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/contract/type/GenModelTypeHolder.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1322 Text-content-md5: c32527a9028493d33e25f559e6100eb1 Text-content-sha1: 16b43a67b8d9515eb7126e603ef876a3f61f00c9 Content-length: 1367 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.core.ui.contract.type; import org.eclipse.egf.common.misc.ISelectionHandler; import org.eclipse.egf.core.ui.dialogs.GenModelSelectionDialog; import org.eclipse.egf.core.ui.dialogs.GenModelSelectionHandler; import org.eclipse.egf.model.contract.type.StringTypeHolder; /** * @author Xavier Maysonnave */ public class GenModelTypeHolder extends StringTypeHolder { /* (non-Javadoc) * @see org.eclipse.egf.model.contract.type.AbstractTypeHolder#getSelectionDialog() */ @Override public String getSelectionDialog() { return GenModelSelectionDialog.class.getName(); } /** * @see org.eclipse.egf.model.contract.type.AbstractTypeHolder#getSelectionHandler() */ @Override public ISelectionHandler getSelectionHandler() { return new GenModelSelectionHandler(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/ElementAdapterFactory.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3021 Text-content-md5: 15e5ddc3cfbe952cac91ac4e63af5328 Text-content-sha1: 256674ac4926e18e8814248b5967440d2ebcd82b Content-length: 3066 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data; import java.util.HashMap; import java.util.Map; import org.eclipse.egf.common.adapter.AbstractAdapterFactory; import org.eclipse.egf.common.adapter.AdapterDescriptor; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentInWorkspace; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSetManager; import org.eclipse.egf.core.ui.data.explorer.adapter.FactoryComponentInWorkspaceAdapter; import org.eclipse.egf.core.ui.data.explorer.adapter.FactoryComponentWorkingSetAdapter; import org.eclipse.egf.core.ui.data.explorer.adapter.FactoryComponentWorkingSetManagerAdapter; import org.eclipse.egf.core.ui.data.fc.FactoryComponentInPlatform; import org.eclipse.egf.core.ui.data.fc.adapter.FactoryComponentInPlatformAdapter; import org.eclipse.ui.model.IWorkbenchAdapter; /** * Adapter factory for non EMF objects. * @author fournier */ public class ElementAdapterFactory extends AbstractAdapterFactory { /** * Map of . */ private static Map, AdapterDescriptor> __adapters = new HashMap, AdapterDescriptor>(); static { __adapters.put(FactoryComponentInWorkspace.class, new AdapterDescriptor(FactoryComponentInWorkspaceAdapter.class)); __adapters.put(FactoryComponentInPlatform.class, new AdapterDescriptor(FactoryComponentInPlatformAdapter.class)); __adapters.put(FactoryComponentWorkingSetManager.class, new AdapterDescriptor(FactoryComponentWorkingSetManagerAdapter.class)); __adapters.put(FactoryComponentWorkingSet.class, new AdapterDescriptor(FactoryComponentWorkingSetAdapter.class)); } /** * @see org.eclipse.egf.common.adapter.AbstractAdapterFactory#getAdapters() */ @Override protected Map, AdapterDescriptor> getAdapters() { return __adapters; } /** * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList() */ @SuppressWarnings("unchecked") public Class[] getAdapterList() { return new Class[] { IWorkbenchAdapter.class }; } /** * Get workbench adapter for given object. * @param object_p * @return IWorkbenchAdapter */ public static IWorkbenchAdapter getWorkbenchAdapter(Object object_p) { return (IWorkbenchAdapter) getPlatformAdapter(object_p, IWorkbenchAdapter.class); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/FactoryComponentInWorkspace.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2740 Text-content-md5: 953fe34aa2554aa02534a89cf911dd0c Text-content-sha1: 0783139eecac23ec37cd3cbfe6d8c77f63bb14ca Content-length: 2785 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.explorer; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.pde.EgfPdeActivator; /** * @author fournier */ public class FactoryComponentInWorkspace implements IAdaptable { /** * Factory components located in the current workspace. */ private Set _factoryComponents; /** * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ @SuppressWarnings("unchecked") public Object getAdapter(Class adapter_p) { return Platform.getAdapterManager().getAdapter(this, adapter_p); } /** * Get all existing factory components in the workspace. * @return a shallow copy of the internal collection. */ public Collection getFactoryComponents() { if (null == _factoryComponents) { _factoryComponents = new HashSet(EgfPdeActivator.getDefault().getFactoryComponentsInWorkspace()); } return new ArrayList(_factoryComponents); } /** * Add given factory component to this factory components container. * @param factoryComponent_p * @return trueif given factory component was not already contained. */ public boolean addFactoryComponent(FactoryComponent factoryComponent_p) { if (null == _factoryComponents) { _factoryComponents = new HashSet(1); } return _factoryComponents.add(factoryComponent_p); } /** * Remove given factory component from this factory components container. * @param factoryComponent_p */ public void removeFactoryComponent(FactoryComponent factoryComponent_p) { // Remove it from internal factory components in workspace set. if (null != _factoryComponents) { _factoryComponents.remove(factoryComponent_p); } // The factory component registry has its own listener, so let it do its job !!! } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5274 Text-content-md5: 2dfa6fd9b57de00875922ad115517474 Text-content-sha1: d0a8ebbee723b378beed7979c71e0a9cae781c0c Content-length: 5319 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.explorer; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.internal.data.ModelElement; import org.eclipse.ui.IWorkingSet; /** * A working set that contains factory components * @author Guillaume Brocard */ public class FactoryComponentWorkingSet implements IAdaptable { /** * Reference to the related platform working set. */ private IWorkingSet _workingSet; /** * Constructor. * @param workingSet_p */ public FactoryComponentWorkingSet(IWorkingSet workingSet_p) { _workingSet = workingSet_p; } /** * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ @SuppressWarnings("unchecked") public Object getAdapter(Class adapter_p) { Object adapter = Platform.getAdapterManager().getAdapter(this, adapter_p); return adapter; } /** * Get all existing factory components in the workspace. * @return the internal collection or an empty list if this later one is null. */ public List getFactoryComponents() { List result = new ArrayList(0); // Get all factory components located in the workspace. FactoryComponentInWorkspace fcsInWorkspace = (FactoryComponentInWorkspace) EgfUiActivator.getDefault().getFactoryComponentInWorkspaceInput(); // Check if the current working set is related to "Other FCs" working set. FactoryComponentWorkingSetManager fcWorkingSetManager = (FactoryComponentWorkingSetManager) EgfUiActivator.getDefault().getWorkingSetsInput(); FactoryComponentWorkingSet otherFc = fcWorkingSetManager.getOtherFcsWorkingSet(); if (otherFc.equals(this)) { List allProjectContainedInPublicWorkingSets = new ArrayList(0); // Get all public working set. Collection publicWorkingSets = fcWorkingSetManager.getPublicWorkingSets(); // Iterates over public working sets to get all projects contained in public working sets. Iterator iter = publicWorkingSets.iterator(); while (iter.hasNext()) { FactoryComponentWorkingSet currentWorkingSet = iter.next(); allProjectContainedInPublicWorkingSets.addAll(FactoryComponentWorkingSetManager.getProjects(currentWorkingSet.getWorkingSet().getElements())); } Iterator iterOverFcs = fcsInWorkspace.getFactoryComponents().iterator(); // Iterate over factory components in workspace. while (iterOverFcs.hasNext()) { FactoryComponent currentFc = iterOverFcs.next(); // Get its project. IProject currentFcProject = (IProject) ((ModelElement) currentFc).getAdapter(IProject.class); // Is this project is not contained in the collected project list, default location is the "Other FCs" working set. if (!allProjectContainedInPublicWorkingSets.contains(currentFcProject)) { result.add(currentFc); } } } else { // We must not compute only once the factory components contained in a working set, because the end-user can rearrange them through the Package Explorer view. // Let's retrieve factory components contained in this working set. IAdaptable[] elements = _workingSet.getElements(); // Get Java projects contained in this working set. List projects = FactoryComponentWorkingSetManager.getProjects(elements); Iterator iter = fcsInWorkspace.getFactoryComponents().iterator(); if (!projects.isEmpty()) { // Iterate over all factory components in the workspace to retrieve the ones owned by the current working set as Java Project. while (iter.hasNext()) { FactoryComponent currentFc = iter.next(); // Get its project. IProject currentFcProject = (IProject) ((ModelElement) currentFc).getAdapter(IProject.class); // Is this project contained in the current platform working set ? if (projects.contains(currentFcProject)) { result.add(currentFc); } } } } return result; } /** * Get the related platform working set. * @return the workingSet */ public IWorkingSet getWorkingSet() { return _workingSet; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 15955 Text-content-md5: 06fc82432a9a545247f2c6a205b44ca3 Text-content-sha1: 7a400209a5c1a0249abc6da60add166d9afaf588 Content-length: 16000 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.explorer; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.core.ui.data.explorer.adapter.Messages; import org.eclipse.egf.core.ui.data.listener.IWorkingSetListener; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.internal.ui.workingsets.OthersWorkingSetUpdater; import org.eclipse.jdt.internal.ui.workingsets.WorkingSetModel; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.ui.ILocalWorkingSetManager; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.IWorkingSetManager; import org.eclipse.ui.PlatformUI; /** * @author Guillaume Brocard */ public class FactoryComponentWorkingSetManager implements IAdaptable, IPropertyChangeListener { /** * Used the JDT Other working set ID to get the icon resource */ private static final String OTHER_PROJECTS_WORKING_SET_ID = "org.eclipse.jdt.ui.JavaWorkingSetPage"; //$NON-NLS-1$ /** * Handled working set. Do not use a map because hashCode of IWorkingSet are based on working set name.
* Hence, when names changed, the Map.get(key) method fails... */ private List _workingSets; /** * List of the listeners to notify when changes occurred to working sets. */ private List _workingSetListeners; private ILocalWorkingSetManager _localWorkingSetManager; private FactoryComponentWorkingSet _otherFcs; /** * Constructor. * @param workingSetListener_p */ public FactoryComponentWorkingSetManager() { // At least the Factory Component Explorer would be registered as a listener. _workingSetListeners = new ArrayList(1); } /** * Dispose allocated resources, listeners,... */ public void dispose() { // Dispose the local working set. if (null != _localWorkingSetManager) { _localWorkingSetManager.dispose(); _localWorkingSetManager = null; } } /** * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ @SuppressWarnings("unchecked") public Object getAdapter(Class adapter_p) { return Platform.getAdapterManager().getAdapter(this, adapter_p); } /** * Get the working set manager registered for the workbench. * @return */ protected IWorkingSetManager getWorkingsetManager() { IWorkbench workbench = PlatformUI.getWorkbench(); IWorkingSetManager workingSetManager = workbench.getWorkingSetManager(); return workingSetManager; } /** * Get all existing working sets in the workspace. * @return a shallow copy of the internal collection. */ public synchronized Collection getAllWorkingSets() { if (null == _workingSets) { // Get the available working sets from the workspace. IWorkingSetManager workingSetManager = getWorkingsetManager(); IWorkingSet[] workingSets = workingSetManager.getWorkingSets(); // If some working sets exist, create their equivalent in EGF world. if (workingSets.length > 0) { // Loop over platform working sets. for (int i = 0; i < workingSets.length; i++) { IWorkingSet currentWorkingSet = workingSets[i]; // Add it. addWorkingSet(currentWorkingSet); } } // Create a local working set manager to handle the Other Projects working set as JDT does... _localWorkingSetManager = PlatformUI.getWorkbench().createLocalWorkingSetManager(); IWorkingSet others = _localWorkingSetManager.createWorkingSet(Messages.FactoryComponentWorkingSetManager_OtherWorkingSet_Title, new IAdaptable[0]); others.setId(OTHER_PROJECTS_WORKING_SET_ID); _localWorkingSetManager.addWorkingSet(others); _otherFcs = addWorkingSet(others); } return new ArrayList(_workingSets); } /** * Get all public working sets in the workspace. * @return a shallow copy of the internal collection. */ public synchronized Collection getPublicWorkingSets() { ArrayList workingSets = new ArrayList(_workingSets); workingSets.remove(_otherFcs); return workingSets; } /** * Update the public working sets order to follow the given collection. */ public synchronized void updatePublicWorkingSetsOrder(List upToDateWorkingSets_p) { List upToDateFcWorkingSets = new ArrayList(upToDateWorkingSets_p.size()); Iterator iter = upToDateWorkingSets_p.iterator(); while (iter.hasNext()) { IWorkingSet currentWorkingSet = iter.next(); FactoryComponentWorkingSet relatedFcWorkingSet = getFactoryComponentWorkingSet(currentWorkingSet); if (null != relatedFcWorkingSet) { upToDateFcWorkingSets.add(relatedFcWorkingSet); } else { // Is it the Other Project working set ? if (currentWorkingSet instanceof OthersWorkingSetUpdater) { upToDateFcWorkingSets.add(_otherFcs); } else { // Case a working set was hidden and now it is revealed again. FactoryComponentWorkingSet fcWorkingSet = new FactoryComponentWorkingSet(currentWorkingSet); upToDateFcWorkingSets.add(fcWorkingSet); } } } // Update internal list. _workingSets = upToDateFcWorkingSets; } /** * return the working set related to "Other Factory Components". * @return */ public FactoryComponentWorkingSet getOtherFcsWorkingSet() { return _otherFcs; } /** * Add a working set in the internal map. * @param workingSet_p */ private synchronized FactoryComponentWorkingSet addWorkingSet(IWorkingSet workingSet_p) { if (null == _workingSets) { _workingSets = new ArrayList(1); } FactoryComponentWorkingSet fcWorkingSet = new FactoryComponentWorkingSet(workingSet_p); _workingSets.add(fcWorkingSet); return fcWorkingSet; } /** * Remove a working set from the internal map. * @param workingSet_p */ private synchronized FactoryComponentWorkingSet removeWorkingSet(IWorkingSet workingSet_p) { FactoryComponentWorkingSet removedWorkingSet = null; if (null != _workingSets) { Iterator iter = _workingSets.iterator(); while (iter.hasNext() && (null == removedWorkingSet)) { FactoryComponentWorkingSet fcWorkingSet = iter.next(); // the equals method compares references first if (workingSet_p.equals(fcWorkingSet.getWorkingSet())) { removedWorkingSet = fcWorkingSet; iter.remove(); } } } return removedWorkingSet; } /** * Get the factory component working set for specified platform working set. * @return null if not found. */ public synchronized FactoryComponentWorkingSet getFactoryComponentWorkingSet(IWorkingSet workingSet_p) { FactoryComponentWorkingSet result = null; if (null != _workingSets) { Iterator iter = _workingSets.iterator(); while (iter.hasNext() && (null == result)) { FactoryComponentWorkingSet fcWorkingSet = iter.next(); // the equals method compares references first if (workingSet_p.equals(fcWorkingSet.getWorkingSet())) { result = fcWorkingSet; } } } return result; } /** * Add a working set listener. * @param listener_p */ public void addWorkingSetListener(IWorkingSetListener listener_p) { _workingSetListeners.add(listener_p); } /** * Remove a working set listener. * @param listener_p */ public void removeWorkingSetListener(IWorkingSetListener listener_p) { _workingSetListeners.remove(listener_p); } /** * Notify received working set events to registered listeners. * @param notifier_p */ private void notifyListeners(Notifier notifier_p) { for (Iterator iter = _workingSetListeners.iterator(); iter.hasNext();) { notifier_p.setListener(iter.next()); notifier_p.run(); } } /** * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ public void propertyChange(PropertyChangeEvent event_p) { String property = event_p.getProperty(); if (IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE.equals(property)) { IWorkingSet workingSet = (IWorkingSet) event_p.getNewValue(); handleWorkingSetContentChanged(workingSet, event_p); } else if (IWorkingSetManager.CHANGE_WORKING_SET_REMOVE.equals(property)) { IWorkingSet workingSet = (IWorkingSet) event_p.getOldValue(); handleWorkingSetRemoved(workingSet, event_p); } else if (IWorkingSetManager.CHANGE_WORKING_SET_ADD.equals(property)) { IWorkingSet workingSet = (IWorkingSet) event_p.getNewValue(); handleWorkingSetAdded(workingSet, event_p); } else if (IWorkingSetManager.CHANGE_WORKING_SET_NAME_CHANGE.equals(property)) { IWorkingSet workingSet = (IWorkingSet) event_p.getNewValue(); handleWorkingSetNameChanged(workingSet, event_p); } else if (IWorkingSetManager.CHANGE_WORKING_SET_LABEL_CHANGE.equals(property)) { IWorkingSet workingSet = (IWorkingSet) event_p.getNewValue(); handleWorkingSetLabelChanged(workingSet, event_p); } else if (WorkingSetModel.CHANGE_WORKING_SET_MODEL_CONTENT.equals(property)) { // Specific event sent by Package Explorer when working sets change: working sets order, content and so... // Get the new active working set from the Package Explorer. handleWorkingSetModelContentChanged(event_p); } } /** * Handle Package Explorer working set model changed. * @param event_p */ protected void handleWorkingSetModelContentChanged(final PropertyChangeEvent event_p) { // Notify received event. notifyListeners(new Notifier() { public void run() { getListener().workingSetModelChanged(event_p); } }); } /** * Handle working set added. * @param workingSet_p * @param event_p */ protected void handleWorkingSetAdded(IWorkingSet workingSet_p, final PropertyChangeEvent event_p) { final FactoryComponentWorkingSet addedWorkingSet = addWorkingSet(workingSet_p); // Notify received event. notifyListeners(new Notifier() { public void run() { getListener().workingSetAdded(addedWorkingSet, event_p); } }); } /** * Handle working set content changed. * @param workingSet_p * @param event_p */ protected void handleWorkingSetContentChanged(IWorkingSet workingSet_p, final PropertyChangeEvent event_p) { final FactoryComponentWorkingSet modifiedWorkingSet = getFactoryComponentWorkingSet(workingSet_p); if (null != modifiedWorkingSet) { // Notify received event. notifyListeners(new Notifier() { public void run() { getListener().workingSetContentChanged(modifiedWorkingSet, event_p); } }); } } /** * Handle working set label changed. * @param workingSet_p * @param event_p */ protected void handleWorkingSetLabelChanged(IWorkingSet workingSet_p, final PropertyChangeEvent event_p) { final FactoryComponentWorkingSet modifiedWorkingSet = getFactoryComponentWorkingSet(workingSet_p); // Notify received event. notifyListeners(new Notifier() { public void run() { getListener().workingSetLabelChanged(modifiedWorkingSet, event_p); } }); } /** * Handle working set name changed. * @param workingSet_p * @param event_p */ protected void handleWorkingSetNameChanged(IWorkingSet workingSet_p, final PropertyChangeEvent event_p) { final FactoryComponentWorkingSet modifiedWorkingSet = getFactoryComponentWorkingSet(workingSet_p); // Notify received event. notifyListeners(new Notifier() { public void run() { getListener().workingSetNameChanged(modifiedWorkingSet, event_p); } }); } /** * Handle working set removed. * @param workingSet_p * @param event_p */ protected void handleWorkingSetRemoved(IWorkingSet workingSet_p, final PropertyChangeEvent event_p) { final FactoryComponentWorkingSet removedWorkingSet = removeWorkingSet(workingSet_p); // Notify received event. notifyListeners(new Notifier() { public void run() { getListener().workingSetRemoved(removedWorkingSet, event_p); } }); } /** * Inner class to ease notifications. * @author Guillaume Brocard */ abstract class Notifier implements Runnable { private IWorkingSetListener _listener; /** * Set the listener used by the run implementation methods. * @param listener_p */ public void setListener(IWorkingSetListener listener_p) { _listener = listener_p; } /** * Get the listener. * @return the listener */ protected IWorkingSetListener getListener() { return _listener; } } /** * Get the parent working set of specified object * @param project_p * @return null if not found. */ public FactoryComponentWorkingSet getParent(IProject project_p) { FactoryComponentWorkingSet result = null; // Iterate over all working sets to find out the parent of given objects. Iterator allWorkingSets = getAllWorkingSets().iterator(); while (allWorkingSets.hasNext() && (null == result)) { FactoryComponentWorkingSet currentFcWorkingSet = allWorkingSets.next(); // Get elements contained in related workspace working set. IAdaptable[] elements = currentFcWorkingSet.getWorkingSet().getElements(); if (FactoryComponentWorkingSetManager.getProjects(elements).contains(project_p)) { result = currentFcWorkingSet; } } // No working set found containing specified project, it may be the Other Projects the container hence let's return the "Other FCs" working set. if (null == result) { result = getOtherFcsWorkingSet(); } return result; } /** * Get projects from specified elements. * @param elements_p * @return a not null list. */ public static List getProjects(IAdaptable[] elements_p) { List projects = new ArrayList(0); for (int i = 0; i < elements_p.length; i++) { IAdaptable adaptable = elements_p[i]; if (adaptable instanceof IJavaProject) { projects.add(((IJavaProject) adaptable).getProject()); } } return projects; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/adapter Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentInWorkspaceAdapter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1894 Text-content-md5: 11b328811e2288f1cf633c29989806b8 Text-content-sha1: 63bb827d3c238d6e6b3856271c516984e3f70c67 Content-length: 1939 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.explorer.adapter; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentInWorkspace; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.model.IWorkbenchAdapter; /** * @author fournier */ public class FactoryComponentInWorkspaceAdapter implements IWorkbenchAdapter { /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object) */ public Object[] getChildren(Object object_p) { FactoryComponentInWorkspace fcInWorkspace = (FactoryComponentInWorkspace) object_p; return fcInWorkspace.getFactoryComponents().toArray(); } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object) */ public ImageDescriptor getImageDescriptor(Object object_p) { // Do nothing. return null; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object) */ public String getLabel(Object o_p) { // Just to suppress at runtime a message with "No Label Provider for..." return Messages.FactoryComponentInWorkspaceAdapter_Label_Title; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object) */ public Object getParent(Object o_p) { // Do nothing. return null; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetAdapter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3477 Text-content-md5: 60b7e0e1b92844afafa0b392dfba734c Text-content-sha1: 7c1bf8ce47233a607cf98e6a7b7fac269b033d77 Content-length: 3522 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.explorer.adapter; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.model.IWorkbenchAdapter; /** * @author Guillaume Brocard */ public class FactoryComponentWorkingSetAdapter implements IWorkbenchAdapter { /** * Get the adapter for the platform working adapter for specified working set. * @param workingSet_p * @return can be null. */ private IWorkbenchAdapter getPlatformWorkingSetAdapter(IWorkingSet workingSet_p) { IWorkbenchAdapter platformWorkingSetAdapter = (IWorkbenchAdapter) Platform.getAdapterManager().getAdapter(workingSet_p, IWorkbenchAdapter.class); return platformWorkingSetAdapter; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object) */ public Object[] getChildren(Object object_p) { FactoryComponentWorkingSet workingSet = (FactoryComponentWorkingSet) object_p; return workingSet.getFactoryComponents().toArray(); } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object) */ public ImageDescriptor getImageDescriptor(Object object_p) { ImageDescriptor result = null; FactoryComponentWorkingSet workingSet = (FactoryComponentWorkingSet) object_p; // Get its related platform working set. IWorkingSet platformWorkingSet = workingSet.getWorkingSet(); // Get its adapter. IWorkbenchAdapter platformWorkingSetAdapter = getPlatformWorkingSetAdapter(platformWorkingSet); if (null != platformWorkingSetAdapter) { result = platformWorkingSetAdapter.getImageDescriptor(platformWorkingSet); } return result; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object) */ public String getLabel(Object object_p) { String result = ICommonConstants.EMPTY_STRING; FactoryComponentWorkingSet workingSet = (FactoryComponentWorkingSet) object_p; // Get its related platform working set. IWorkingSet platformWorkingSet = workingSet.getWorkingSet(); // Get its adapter. IWorkbenchAdapter platformWorkingSetAdapter = getPlatformWorkingSetAdapter(platformWorkingSet); if (null != platformWorkingSetAdapter) { result = platformWorkingSetAdapter.getLabel(platformWorkingSet); } return result; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object) */ public Object getParent(Object object_p) { // The parent is always the FactoryComponentInWorkspace object. return EgfUiActivator.getDefault().getFactoryComponentInWorkspaceInput(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/adapter/FactoryComponentWorkingSetManagerAdapter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1979 Text-content-md5: d776b75f42e0a3e9ef547b49996da58b Text-content-sha1: 6ddf8f5b8d7fffcc86995969402335cc0a552c0a Content-length: 2024 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.explorer.adapter; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSetManager; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.model.IWorkbenchAdapter; /** * @author Guillaume Brocard */ public class FactoryComponentWorkingSetManagerAdapter implements IWorkbenchAdapter { /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object) */ public Object[] getChildren(Object object_p) { FactoryComponentWorkingSetManager fcWorkingSetManager = (FactoryComponentWorkingSetManager) object_p; Object[] result = fcWorkingSetManager.getAllWorkingSets().toArray(); return result; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object) */ public ImageDescriptor getImageDescriptor(Object object_p) { // Do nothing. return null; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object) */ public String getLabel(Object object_p) { // Just to suppress at runtime a message with "No Label Provider for..." return Messages.FactoryComponentInWorkspaceAdapter_Label_Title; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object) */ public Object getParent(Object object_p) { // Do nothing. return null; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/adapter/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1257 Text-content-md5: e2ad678efdd3b321a593f9eef57b123b Text-content-sha1: acf1e893cdaed4320aa627cd41b9d9ef9b1535f9 Content-length: 1302 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.explorer.adapter; import org.eclipse.osgi.util.NLS; /** * I18n messages. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.data.explorer.adapter.messages"; //$NON-NLS-1$ public static String FactoryComponentInWorkspaceAdapter_Label_Title; // I18n messages related to working set feature. public static String FactoryComponentWorkingSetManager_OtherWorkingSet_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/explorer/adapter/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 730 Text-content-md5: c1ffd1dfba90d8d589bc718310c93f48 Text-content-sha1: 58e5b0e20abdc67caa6db166042176fdbbb3f94f Content-length: 775 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### FactoryComponentInWorkspaceAdapter_Label_Title=Factory Components under development FactoryComponentWorkingSetManager_OtherWorkingSet_Title=Other Factory Components Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/fc/FactoryComponentInPlatform.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1826 Text-content-md5: 8aea2ba36b2c4b701a1899cedfed234e Text-content-sha1: 0acf4986de4cf6c5c328a59a9761d4c6992337e5 Content-length: 1871 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.fc; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Platform; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.model.FactoryComponent; /** * @author Guillaume Brocard */ public class FactoryComponentInPlatform implements IAdaptable { /** * All factory components located in the running Eclipse instance. */ private List _factoryComponents; /** * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ @SuppressWarnings("unchecked") public Object getAdapter(Class adapter_p) { return Platform.getAdapterManager().getAdapter(this, adapter_p); } /** * Get all existing factory components in the running Eclipse instance. * @return a shallow copy of the internal collection. */ public Collection getFactoryComponents() { if (null == _factoryComponents) { _factoryComponents = new ArrayList(CoreActivator.getDefault().getFactoryComponentsInPlatform()); } return new ArrayList(_factoryComponents); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/fc/adapter Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/fc/adapter/FactoryComponentInPlatformAdapter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1890 Text-content-md5: a90eb095f0bba2307bb586d9fac71476 Text-content-sha1: c1be5a7f5d4543e9314906fabfed0d5c64415488 Content-length: 1935 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.fc.adapter; import org.eclipse.egf.core.ui.data.fc.FactoryComponentInPlatform; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.model.IWorkbenchAdapter; /** * @author Guillaume Brocard */ public class FactoryComponentInPlatformAdapter implements IWorkbenchAdapter { /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object) */ public Object[] getChildren(Object object_p) { FactoryComponentInPlatform fcInPlatform = (FactoryComponentInPlatform) object_p; return fcInPlatform.getFactoryComponents().toArray(); } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getImageDescriptor(java.lang.Object) */ public ImageDescriptor getImageDescriptor(Object object_p) { // Do nothing. return null; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object) */ public String getLabel(Object o_p) { // Just to suppress at runtime a message with "No Label Provider for..." return Messages.FactoryComponentInPlatformAdapter_LabelProvider_Title; } /** * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object) */ public Object getParent(Object o_p) { // Do nothing. return null; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/fc/adapter/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1099 Text-content-md5: 8ca5d45209986198ead278490c838efb Text-content-sha1: f495bf5296d3444e7321524314aa06b757e63098 Content-length: 1144 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.fc.adapter; import org.eclipse.osgi.util.NLS; /** * @author Guillaume Brocard * */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.data.fc.adapter.messages"; //$NON-NLS-1$ public static String FactoryComponentInPlatformAdapter_LabelProvider_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/fc/adapter/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 647 Text-content-md5: 269ae68a47236a73ecab66a409495b3c Text-content-sha1: ae191b10d786a2f6d3a6bbd0158c1ec508fa0457 Content-length: 692 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### FactoryComponentInPlatformAdapter_LabelProvider_Title=Installed Factory Components Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/listener Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/data/listener/IWorkingSetListener.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2182 Text-content-md5: be4c6e3c7a330d7231bb3b7dc4ce61f0 Text-content-sha1: dbdfe78e69a90933ba958064f49942a070f89507 Content-length: 2227 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.data.listener; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet; import org.eclipse.jface.util.PropertyChangeEvent; /** * Interface to implement listeners that observe factory component working sets in the workspace. * @author Guillaume Brocard */ public interface IWorkingSetListener { /** * Called when working set label changes. * @param workingSet_p * @param event_p */ public void workingSetLabelChanged(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p); /** * Called when working set name changes. * @param workingSet_p * @param event_p */ public void workingSetNameChanged(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p); /** * Called when a working set is added. * @param workingSet_p * @param event_p */ public void workingSetAdded(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p); /** * Called when a working set is removed * @param workingSet_p * @param event_p */ public void workingSetRemoved(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p); /** * Called when a working set content changes. * @param workingSet_p * @param event_p */ public void workingSetContentChanged(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p); /** * Called when working sets are modified from the Package Explorer. * @param event_p */ public void workingSetModelChanged(PropertyChangeEvent event_p); } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/dialogs Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/dialogs/GenModelSelectionDialog.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1250 Text-content-md5: e8902befe28458f540030d60c0ee3fff Text-content-sha1: 7643abebb42bb817d4038010acd0892eaf7ceed8 Content-length: 1295 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.core.ui.dialogs; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.model.WorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.emf.common.ui.dialogs.WorkspaceResourceDialog; import org.eclipse.egf.core.ui.viewers.GenModelViewerFilter; /** * @author Xavier Maysonnave */ public class GenModelSelectionDialog extends WorkspaceResourceDialog { public GenModelSelectionDialog(Shell parent) { super(parent, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); setAllowMultiple(false); setTitle(Messages._UI_SelectGenModel_message); addFilter(createDefaultViewerFilter(true)); addFilter(new GenModelViewerFilter()); loadContents(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/dialogs/GenModelSelectionHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1125 Text-content-md5: 0f8f7081af1e329e0e08e3b57cc7e889 Text-content-sha1: 8ddda1bbf791f41123cfa5934b356a8e5a2bdb78 Content-length: 1170 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.core.ui.dialogs; import org.eclipse.core.resources.IFile; import org.eclipse.emf.common.util.URI; import org.eclipse.egf.common.misc.ISelectionHandler; /** * @author Xavier Maysonnave */ public class GenModelSelectionHandler implements ISelectionHandler { /** * @see org.eclipse.egf.common.misc.ISelectionHandler#handleSelection(java.lang.Object) */ public String handleSelection(Object selectedObject) { if (selectedObject instanceof IFile) { return URI.createPlatformResourceURI(((IFile) selectedObject).getFullPath().toString(), true).toString(); } return null; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/dialogs/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 934 Text-content-md5: d8082dd44b8efc7ee7cd1170f5a2b130 Text-content-sha1: 0cba83092e5d8a822e69a69363e029c41e349dab Content-length: 979 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation **/ package org.eclipse.egf.core.ui.dialogs; import org.eclipse.osgi.util.NLS; /** * I18n messages. * @author Xavier Maysonnave */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.dialogs.messages"; //$NON-NLS-1$ public static String _UI_SelectGenModel_message; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/dialogs/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 487 Text-content-md5: 80969bf6a79340fdcac2f1db3538bb2b Text-content-sha1: 78be73be76118810fb046ed4a5a3b713d6ed7674 Content-length: 532 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## _UI_SelectGenModel_message=Select the generator model file to be referenced: Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/data Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/data/AbstractUiContainer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2699 Text-content-md5: 7d6ac55af9108c85f45ee67e4870899b Text-content-sha1: 5c480a584c1b3b85189d80aa68851a311294ec65 Content-length: 2744 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.data; import java.util.HashSet; import java.util.Set; import org.eclipse.swt.graphics.Image; /** * Defines an API to describe an UI container displayed in TreeViewer. * @author fournier */ public abstract class AbstractUiContainer { /** * Parent of this container. */ private Object _parent; /** * Set of children. */ private Set _children; /** * Constructor. * @param parent_p * @param children_p */ protected AbstractUiContainer(Object parent_p, Set children_p) { _parent = parent_p; _children = children_p; } /** * Constructor. * @param parent_p */ protected AbstractUiContainer(Object parent_p) { this(parent_p, new HashSet(0)); } /** * Add a child in the children set. * @param child_p */ public boolean addChild(Object child_p) { return _children.add(child_p); } /** * Remove a child from the children set. * @param child_p */ public boolean removeChild(Object child_p) { return _children.remove(child_p); } /** * Return true if this container contains no elements. * @return */ public boolean isEmpty() { return _children.isEmpty(); } /** * Return the parent of this container or null if none. * @return */ public Object getParent() { return _parent; } /** * Return the children as an array of objects. * @return */ public Object[] getChildren() { return _children.toArray(); } /** * Return whether or not this container has children. * @return */ public boolean hasChildren() { return !_children.isEmpty(); } /** * Return the text used as label for this UI container. * @return */ public abstract String getText(); /** * Return the image used as icon for this UI container.
* Default implementation returns null. * @return an image or null if not provided. */ public Image getImage() { return null; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/data/UIDataHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1660 Text-content-md5: 47f173bca96160648a1cc04d68a22331 Text-content-sha1: 57fb8eaec37560d0fefb03b10bb2c31378235537 Content-length: 1705 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.data; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.data.helper.ModelHelper; /** * Provides useful services based on model elements and UI aspects. * @author Guillaume Brocard */ public class UIDataHelper { /** * Get the factory component id of a factory component from its name. * @param factoryComponentName_p * @return the factory component id or null if not found. */ public static String getFactoryComponentIdFor(String factoryComponentName_p) { String result = null; FactoryComponent searchedFc = null; // Search in all factory components located in both workspace and target platform. searchedFc = ModelHelper.getFactoryComponentFrom(factoryComponentName_p, EgfUiActivator.getDefault().getAllFactoryComponents()); // Searched factory component must be found, because it was selected from the UI. if (null != searchedFc) { result = searchedFc.getId(); } return result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponent.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2184 Text-content-md5: 864ad7ad9c0f3a4951e0f8c4e0e0d727 Text-content-sha1: 4bab8ac2f29231d969a3227938578f2afb356e24 Content-length: 2229 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.data; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.edit.IImageKeys; import org.eclipse.egf.model.provider.FactoryComponentEditPlugin; import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; import org.eclipse.swt.graphics.Image; /** * Define an UI container for referenced factory component used in a Contract. * @author fournier */ public class UiReferencedFactoryComponent extends AbstractUiContainer { /** * Underlying factory component. */ private FactoryComponent _underlyingFactoryComponent; /** * Constructor. * @param uiReferencedFactoryComponentContainer_p * @param name_p */ public UiReferencedFactoryComponent(UiReferencedFactoryComponentContainer uiReferencedFactoryComponentContainer_p, FactoryComponent fc_p) { super(uiReferencedFactoryComponentContainer_p); _underlyingFactoryComponent = fc_p; } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#getText() */ @Override public String getText() { return _underlyingFactoryComponent.getName(); } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#getImage() */ @Override public Image getImage() { return ExtendedImageRegistry.INSTANCE.getImage(FactoryComponentEditPlugin.INSTANCE.getImage(IImageKeys.IMG_FACTORY_COMPONENT_ID)); } /** * Return the underlying factory component. * @return */ public FactoryComponent getFactoryComponent() { return _underlyingFactoryComponent; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/data/UiReferencedFactoryComponentContainer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5567 Text-content-md5: 3b21727e088deb5a9230337f7b25e08d Text-content-sha1: a98b26d2bfa7ffb9fe4f1c82ccfe2ea0f26b8eb6 Content-length: 5612 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.data; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.data.helper.ModelHelper; /** * Define an UI container for UI Referenced factory component used in a Contract. * @author fournier */ public class UiReferencedFactoryComponentContainer extends AbstractUiContainer { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(UiReferencedFactoryComponentContainer.class.getPackage().getName()); private Map _referencedFactoryComponentMap; /** * Constructor. * @param parent_p * @param children_p */ public UiReferencedFactoryComponentContainer(ContractElement[] contractElements_p) { super(null); _referencedFactoryComponentMap = new HashMap(0); // Loop over the list of contract elements to create UiReferencedFactoryComponents. for (ContractElement contractElement : contractElements_p) { // Get the factory component container of a contract element. FactoryComponent fc = ModelHelper.getFactoryComponentContainer(contractElement); // Get related UI referenced factory component. UiReferencedFactoryComponent uiReferencedFc = _referencedFactoryComponentMap.get(fc); // If not found, create it. if (null == uiReferencedFc) { uiReferencedFc = new UiReferencedFactoryComponent(this, fc); _referencedFactoryComponentMap.put(fc, uiReferencedFc); } // Add the contract element as a child of the UI referenced factory component. uiReferencedFc.addChild(contractElement); } } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#addChild(java.lang.Object) */ @Override public boolean addChild(Object child_p) { boolean result = false; // Precondition if (!(child_p instanceof UiReferencedFactoryComponent)) { StringBuilder loggerMessage = new StringBuilder("UiReferencedFactoryComponentContainer.addChild(..) _ "); //$NON-NLS-1$ loggerMessage.append("UiReferencedFactoryComponentContainer only accepts UiReferencedFactoryComponent as children"); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); return result; } UiReferencedFactoryComponent uiReferencedFc = (UiReferencedFactoryComponent) child_p; _referencedFactoryComponentMap.put(uiReferencedFc.getFactoryComponent(), uiReferencedFc); result = true; return result; } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#isEmpty() */ @Override public boolean isEmpty() { return _referencedFactoryComponentMap.isEmpty(); } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#removeChild(java.lang.Object) */ @Override public boolean removeChild(Object child_p) { boolean result = false; // Precondition if (!(child_p instanceof UiReferencedFactoryComponent)) { StringBuilder loggerMessage = new StringBuilder("UiReferencedFactoryComponentContainer.removeChild(..) _ "); //$NON-NLS-1$ loggerMessage.append("UiReferencedFactoryComponentContainer only accepts UiReferencedFactoryComponent as children"); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); return result; } UiReferencedFactoryComponent uiReferencedFc = (UiReferencedFactoryComponent) child_p; UiReferencedFactoryComponent removedElement = _referencedFactoryComponentMap.remove(uiReferencedFc.getFactoryComponent()); // Ensure remove element is the same reference than given one. result = (uiReferencedFc == removedElement) ? true : false; return result; } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#getChildren() */ @Override public Object[] getChildren() { return _referencedFactoryComponentMap.values().toArray(new UiReferencedFactoryComponent[_referencedFactoryComponentMap.size()]); } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#hasChildren() */ @Override public boolean hasChildren() { return !_referencedFactoryComponentMap.isEmpty(); } /** * Get the {@link UiReferencedFactoryComponent} for given factory component. * @param factoryComponent_p * @return */ public UiReferencedFactoryComponent getUiReferencedFactoryComponent(FactoryComponent factoryComponent_p) { return _referencedFactoryComponentMap.get(factoryComponent_p); } /** * @see org.eclipse.egf.core.ui.internal.data.AbstractUiContainer#getText() */ @Override public String getText() { return ICommonConstants.EMPTY_STRING; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/databinding Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/databinding/AbstractDataBindingType.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1313 Text-content-md5: 337471ebd92340972de9e370833b63fb Text-content-sha1: e1ed3b0f331a5aa2da882fe80ffc1df8bc879f4d Content-length: 1358 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.databinding; import java.beans.PropertyChangeListener; /** * Base type to implement Type involved in JFace data binding through BeansObservables.
* Provides 2 methods to prevent from errors raised by the data binding framework due to sub-classes are not real JavaBean Types. * @author Guillaume Brocard */ public abstract class AbstractDataBindingType { /** * Do nothing. */ public void addPropertyChangeListener(String propertyName_p, PropertyChangeListener listener_p) { // Do nothing. } /** * Do nothing. */ public void removePropertyChangeListener(String propertyName_p, PropertyChangeListener listener_p) { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/databinding/JavaTypeHolder.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1328 Text-content-md5: 438a9650d9ece838db1e20d5ecb72f16 Text-content-sha1: 39170a4b8f0b8f0c45f4b70f960444c21e399756 Content-length: 1373 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.databinding; /** * Lightweight structure to maintain a java type involved in data binding mechanism. * @author fournier */ public class JavaTypeHolder extends AbstractDataBindingType { /** * Fully qualified class name. */ private String _type; public static final String PROPERTY_TYPE = "type"; //$NON-NLS-1$ /** * Constructor. * @param type_p */ public JavaTypeHolder(String type_p) { _type = type_p; } /** * Get type. * @return the type */ public String getType() { return _type; } /** * Set given type. * @param type_p the type to set */ public void setType(String type_p) { _type = type_p; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/databinding/ReferencedFactoryComponent.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1576 Text-content-md5: 7ced86f6068ee85c7fefd20b349a1a80 Text-content-sha1: 8f79e00eaa986755c7ba1f2de9188c07fb143723 Content-length: 1621 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.databinding; import org.eclipse.egf.model.FactoryComponent; /** * Class to support a reference to an {@link FactoryComponent}. * @author fournier */ public class ReferencedFactoryComponent extends AbstractDataBindingType { /** * Property used to create data binding with this object. */ public static final String PROPERTY_NAME = "name"; //$NON-NLS-1$ /** * Store the name of the referenced factory component. */ private String _name; /** * Constructor. * @param name of the referenced factory component. */ public ReferencedFactoryComponent(String name_p) { _name = name_p; } /** * Return the name of the referenced factory component. * @return */ public String getName() { return _name; } /** * Set the name of the referenced factory component to given one. * @param name_p */ public void setName(String name_p) { _name = name_p; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/databinding/UpdateWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2116 Text-content-md5: b1d84284b13c2a16618d39de2a204737 Text-content-sha1: 41aab2757097922417506f1fbaa8e516f6d45176 Content-length: 2161 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.databinding; import org.eclipse.core.databinding.observable.list.IListChangeListener; import org.eclipse.core.databinding.observable.list.ListChangeEvent; import org.eclipse.core.databinding.observable.value.IValueChangeListener; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage; /** * Update the wizard page buttons when this listener is called. * @author fournier */ public class UpdateWizardPage implements IValueChangeListener, IListChangeListener { /** * Handled wizard page. */ private AbstractModelElementWizardPage _wizardPage; /** * Constructor. */ public UpdateWizardPage(AbstractModelElementWizardPage wizardPage_p) { _wizardPage = wizardPage_p; } /** * @see org.eclipse.core.databinding.observable.value.IValueChangeListener#handleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ public void handleValueChange(ValueChangeEvent event_p) { doUpdateWizardPage(); } /** * @see org.eclipse.core.databinding.observable.list.IListChangeListener#handleListChange(org.eclipse.core.databinding.observable.list.ListChangeEvent) */ public void handleListChange(ListChangeEvent event_p) { doUpdateWizardPage(); } /** * Update the wizard page set through the constructor. */ protected void doUpdateWizardPage() { _wizardPage.updateButtons(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/databinding/ValueChangeHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1688 Text-content-md5: 599d908164e9f44fbcb954f5cfa5912c Text-content-sha1: 29cf00039b3785cf7913fc5873e2bf153640f2a2 Content-length: 1733 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.databinding; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage; /** * Compute the referenced factory component id when the end-user has entered a referenced factory component name. * @author fournier */ public abstract class ValueChangeHandler extends UpdateWizardPage { /** * @param wizard_p */ public ValueChangeHandler(AbstractModelElementWizardPage wizardPage_p) { super(wizardPage_p); } /** * Process the value change event. * @param event_p */ protected abstract void doHandleValueChange(ValueChangeEvent event_p); /** * @see org.eclipse.core.databinding.observable.value.IValueChangeListener#handleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @Override public final void handleValueChange(ValueChangeEvent event_p) { doHandleValueChange(event_p); // Finally, call super method to update the wizard page. super.handleValueChange(event_p); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/dialogs Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/dialogs/FactoryComponentSelectionDialog.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2558 Text-content-md5: b2921d5e7392d26c72a1c2c83362bea7 Text-content-sha1: e70ab8551605fa763e1e62d55b23b9f00efd0023 Content-length: 2603 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.internal.dialogs; import java.util.List; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.swt.widgets.Shell; /** * A class to select factory components from either the eclipse platform or the current workspace. * @author Guillaume Brocard */ public class FactoryComponentSelectionDialog extends ModelElementSelectionDialog { /** * Reference to a filtered factory component. */ private List _filteredFactoryComponents; /** * Constructor. * @param parent_p */ public FactoryComponentSelectionDialog(Shell parent_p) { super(parent_p); setTitle(Messages.FactoryComponentSelectionDialog_Title); setMessage(Messages.FactoryComponentSelectionDialog_Message); setMultipleSelection(false); } /** * Set given factory component as filtered and non displayed in the dialog. * @param filteredFactoryComponents_p */ public void setFilteredFactoryComponents(List filteredFactoryComponents_p) { _filteredFactoryComponents = filteredFactoryComponents_p; } /** * @see org.eclipse.ui.dialogs.AbstractElementListSelectionDialog#setListElements(java.lang.Object[]) */ @Override protected void setListElements(Object[] elements_p) { List allFactoryComponents = getInitialInput(); // Remove filtered factory components. if (_filteredFactoryComponents != null) { allFactoryComponents.removeAll(_filteredFactoryComponents); } // Set the factory component array. super.setListElements(allFactoryComponents.toArray()); } /** * Return the initial factory components.
* Default implementation returns a list containing all factory components located in both workspace and target platform. * @return a not null list. */ protected List getInitialInput() { // Get factory components from both workspace and target platform. return EgfUiActivator.getDefault().getAllFactoryComponents(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/dialogs/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1029 Text-content-md5: 50bc363239feff0c109374d2d2a5cd2b Text-content-sha1: 7f6a0e00a981ebe392b7a50f75ea65b1946d790c Content-length: 1074 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.internal.dialogs; import org.eclipse.osgi.util.NLS; /** * I18n messages. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.internal.dialogs.messages"; //$NON-NLS-1$ public static String FactoryComponentSelectionDialog_Message; public static String FactoryComponentSelectionDialog_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/dialogs/ModelElementSelectionDialog.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1634 Text-content-md5: d67a3aad784a0634d5c75a3d40ff6940 Text-content-sha1: f838ce18c6739fc2259789c8a52034d4ed58c937 Content-length: 1679 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.internal.dialogs; import java.util.List; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.viewers.AdaptedModelElementLabelProvider; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.ElementListSelectionDialog; /** * A class to select model element objects in . * @author Guillaume Brocard */ public class ModelElementSelectionDialog extends ElementListSelectionDialog { /** * Constructor.
* Multiple selection is set to false. * @param parent_p */ public ModelElementSelectionDialog(Shell parent_p) { // This dialog do not modify data, let's use the right adapter factory accordingly. super(parent_p, new AdaptedModelElementLabelProvider(EgfUiActivator.getDefault().getEditingDomainInReadOnly().getAdapterFactory())); setMultipleSelection(false); } /** * Sets the elements of the list. * @param modelElements_p the elements of the list. */ public void setElements(List modelElements_p) { setElements(modelElements_p.toArray()); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/dialogs/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 553 Text-content-md5: 8b594214d40bdc37900b5d354605cd3f Text-content-sha1: 189d42dfc8634ecfaa69dd6f94d373b2f7bcd6d2 Content-length: 598 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## FactoryComponentSelectionDialog_Title=Factory Component Selection FactoryComponentSelectionDialog_Message=&Select a Factory Component (*, ?): Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/field Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/field/ModelElementButtonFieldEditor.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4101 Text-content-md5: 0af8249530204c17462c8e897c318472 Text-content-sha1: 0b078ae1a43edfe6dc9a9cc39a695650fc6c28db Content-length: 4146 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.internal.field; import org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.ElementListSelectionDialog; /** * Implement a string button field editor for {@link NamedModelElementWithId} objects.
* When the "Browse" button is pressed, the end-user can select a {@link NamedModelElementWithId} in the open dialog.
* The text field editor is displayed the result of {@link NamedModelElementWithId#getName()} method call. * @author Guillaume Brocard */ public class ModelElementButtonFieldEditor extends ValidatingStringButtonFieldEditor { /** * Constructor. * @param parent_p * @param label_p * @param dialogToOpen_p */ public ModelElementButtonFieldEditor( Composite parent_p, String label_p, ElementListSelectionDialog dialogToOpen_p ) { super(parent_p, label_p, dialogToOpen_p); // Register additional listeners. addListeners(); } /** * @see org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor#handleSelection(java.lang.Object) */ @Override protected String handleSelection(Object selectedObject_p) { NamedModelElementWithId modelElement = (NamedModelElementWithId) selectedObject_p; return modelElement.getName(); } /** * Create a string button field editor to select a {@link NamedModelElementWithId} object. * @param parent_p * @param page_p the page where the created field editor is displayed. * @param fieldEditorLabel_p * @param dialogToOpen_p dialog open when the button is pressed. * @param fieldEditorValidator_p * @return */ public static ModelElementButtonFieldEditor createModelElementButtonFieldEditor( Composite parent_p, DialogPage page_p, String fieldEditorLabel_p, String fieldEditorTooltip_p, ElementListSelectionDialog dialogToOpen_p, IValidator fieldEditorValidator_p, final boolean readOnly_p ) { ModelElementButtonFieldEditor fieldEditor = new ModelElementButtonFieldEditor( parent_p, fieldEditorLabel_p, dialogToOpen_p ) { @Override protected void doFillIntoGrid(Composite parent__p, int numColumns_p) { super.doFillIntoGrid(parent__p, numColumns_p); getChangeControl(parent__p).setEnabled(readOnly_p == false); } }; // Set the tooltip text. fieldEditor.getValueControl().setToolTipText(fieldEditorTooltip_p); // Set the owner page. fieldEditor.setPage(page_p); // Set the validator. fieldEditor.setValidator(fieldEditorValidator_p); // Set the text field as a non editable one. fieldEditor.getTextControl().setEditable(false); return fieldEditor; } /** * Add listeners on widgets contained by this field editor. */ protected void addListeners() { // Add a listener to be notified as soon as possible the text field (before the data bind is notified) value is modified. getTextControl().addModifyListener(new ModifyListener() { /** * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) */ @SuppressWarnings("synthetic-access") public void modifyText(ModifyEvent e_p) { refreshValidState(); } }); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/help Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/help/IHelpContextIds.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2973 Text-content-md5: ee9c263e56ec2c5ffb6140388d9562cd Text-content-sha1: 5da5292cbb13bc3d22501a2a768667158850121a Content-length: 3018 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.help; import org.eclipse.egf.core.ui.EgfUiActivator; /** * Help context ids for the SolFa UI. * @author Guillaume Brocard */ public interface IHelpContextIds { /** * Help context prefix. */ public static final String PREFIX = EgfUiActivator.getDefault().getPluginID() + '.'; // Help context ids for wizard pages public static final String NEW_DOMAIN_WIZARD_PAGE = PREFIX + "new_domain_wizard_page"; //$NON-NLS-1$ public static final String NEW_CONTRACT_ELEMENT_WIZARD_PAGE = PREFIX + "new_contract_element_wizard_page"; //$NON-NLS-1$ public static final String NEW_CONTRACT_ELEMENT_TYPE_WIZARD_PAGE = PREFIX + "new_contract_element_type_wizard_page"; //$NON-NLS-1$ public static final String NEW_CONTRACT_ELEMENT_REFERENCE_WIZARD_PAGE = PREFIX + "new_contract_element_reference_wizard_page"; //$NON-NLS-1$ public static final String NEW_PATTERN_LIBRARY_WIZARD_PAGE = PREFIX + "new_pattern_library_wizard_page"; //$NON-NLS-1$ public static final String NEW_PATTERN_LIBRARY_PRODUCTION_WIZARD_PAGE = PREFIX + "new_pattern_library_production_wizard_page"; //$NON-NLS-1$ public static final String NEW_PATTERN_LIBRARY_RUNTIME_WIZARD_PAGE = PREFIX + "new_pattern_library_runtime_wizard_page"; //$NON-NLS-1$ public static final String NEW_PATTERN_WIZARD_PAGE = PREFIX + "new_pattern_wizard_page"; //$NON-NLS-1$ public static final String NEW_MAPPING_WIZARD_PAGE = PREFIX + "new_mapping_wizard_page"; //$NON-NLS-1$ public static final String NEW_FC_CONFIGURATION_WIZARD_PAGE = PREFIX + "new_factory_component_invocation_wizard_page"; //$NON-NLS-1$ public static final String EDIT_FC_WIZARD_PAGE = PREFIX + "edit_factory_component_wizard_page"; //$NON-NLS-1$ public static final String NEW_TASK_FACTORY_PAGE = PREFIX + "new_task_factory_wizard_page"; //$NON-NLS-1$ public static final String NEW_CONTEXT_ELEMENT_WIZARD_PAGE = PREFIX + "new_context_element_wizard_page"; //$NON-NLS-1$ public static final String NEW_CONTEXT_ELEMENT_TYPE_WIZARD_PAGE = PREFIX + "new_context_element_type_wizard_page"; //$NON-NLS-1$ public static final String NEW_CONTEXT_ELEMENT_REFERENCE_WIZARD_PAGE = PREFIX + "new_context_element_reference_wizard_page"; //$NON-NLS-1$ public static final String NEW_CONTEXT_ELEMENT_VALUE_WIZARD_PAGE = PREFIX + "new_context_element_value_wizard_page"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/log4j Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/log4j/EclipseConsoleAppender.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2767 Text-content-md5: b06d86623fc18e138bb69d5bdd06c51c Text-content-sha1: 23820850fc04f40b4383cd149ae0bfbd8b8cb6e8 Content-length: 2812 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.log4j; import java.io.OutputStream; import java.io.Writer; import org.apache.log4j.Layout; import org.apache.log4j.Level; import org.apache.log4j.WriterAppender; import org.apache.log4j.spi.LoggingEvent; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.IOConsole; /** * Implement a Log4J appender that traces in an Eclipse console. * @author Guillaume Brocard */ public class EclipseConsoleAppender extends WriterAppender { /** * Constructor. * @param layout_p * @param os_p */ public EclipseConsoleAppender() { super(); } /** * Constructor. * @param layout_p * @param os_p */ public EclipseConsoleAppender(Layout layout_p, OutputStream os_p) { super(layout_p, os_p); } /** * Constructor. * @param layout_p * @param writer_p */ public EclipseConsoleAppender(Layout layout_p, Writer writer_p) { super(layout_p, writer_p); } /** * Prepares the appender for use. */ @Override public void activateOptions() { IOConsole solfaConsole = new IOConsole("SolFa Engine", null); //$NON-NLS-1$ getConsoleManager().addConsoles(new IConsole[] { solfaConsole }); setWriter(createWriter(solfaConsole.newOutputStream())); } /** * @see org.apache.log4j.WriterAppender#append(org.apache.log4j.spi.LoggingEvent) */ @Override public void append(final LoggingEvent event_p) { // Filtering debug events. if (!Level.DEBUG.equals(event_p.getLevel())) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { @SuppressWarnings("synthetic-access") public void run() { if (!checkEntryConditions()) { return; } subAppend(event_p); } }); } } /** * Returns the console manager. * @return the console manager */ private IConsoleManager getConsoleManager() { return ConsolePlugin.getDefault().getConsoleManager(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/log4j/Log4jConfigurer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2427 Text-content-md5: ca521ba3ff5d6d68664bd32c1004952f Text-content-sha1: a677478e4d1dbb73b477cdb8b48f867a046b13dc Content-length: 2472 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.log4j; import java.util.Properties; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.core.Log4JConfigurator; import org.eclipse.egf.core.log4j.ILog4jConfigurer; /** * Configure Log4J to trace in an Eclipse console. * @author Guillaume Brocard */ public class Log4jConfigurer implements ILog4jConfigurer { private static final String LOG4J_APPENDER_ECLIPSE_CONSOLE_APPEND = "log4j.appender.EclipseConsoleAppender"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_ECLIPSE_CONSOLE_LAYOUT = "log4j.appender.EclipseConsoleAppender.layout"; //$NON-NLS-1$ private static final String LOG4J_APPENDER_ECLIPSE_CONSOLE_LAYOUT_CONVERSION_PATTERN = "log4j.appender.EclipseConsoleAppender.layout.ConversionPattern"; //$NON-NLS-1$ /** * @see org.eclipse.egf.core.log4j.ILog4jConfigurer#handleConfiguration(java.util.Properties) */ public void handleConfiguration(Properties log4jConfiguration_p) { // Add a Eclipse console appender. log4jConfiguration_p.put(LOG4J_APPENDER_ECLIPSE_CONSOLE_APPEND, EclipseConsoleAppender.class.getName()); // Set the layout pattern. log4jConfiguration_p.put(LOG4J_APPENDER_ECLIPSE_CONSOLE_LAYOUT, "org.apache.log4j.PatternLayout"); //$NON-NLS-1$ log4jConfiguration_p.put(LOG4J_APPENDER_ECLIPSE_CONSOLE_LAYOUT_CONVERSION_PATTERN, "%d %5p [%t] - %m%n"); //$NON-NLS-1$ // Update the root logger declaration. StringBuilder rootLogger = new StringBuilder((String) log4jConfiguration_p.get(Log4JConfigurator.LOG4J_ROOT_LOGGER)); rootLogger.append(ICommonConstants.COMMA_CHARACTER).append(ICommonConstants.WHITE_SPACE_CHARACTER).append("EclipseConsoleAppender"); //$NON-NLS-1$ log4jConfiguration_p.put(Log4JConfigurator.LOG4J_ROOT_LOGGER, rootLogger.toString()); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/observable Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/observable/IListViewerObserver.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1486 Text-content-md5: 19e4adfd38524deab92197ad358922a4 Text-content-sha1: 987edf57b1d61d71b6af7e2826dfa42db28ecbf4 Content-length: 1531 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.observable; import java.util.List; import org.eclipse.jface.viewers.ListViewer; /** * Implementor will be notified when elements are added or removed from a {@link ListViewer}. * @author fournier */ public interface IListViewerObserver { /** * Called when elements are added in a {@link ListViewer}. * @param elements_p * the list of added elements. */ public void elementAdded(List elements_p); /** * Called when elements are removed from a {@link ListViewer}. * @param elements_p * the list of removed elements. */ public void elementRemoved(List elements_p); /** * Called when elements are updated from a {@link ListViewer}. * @param elements_p * the list of updated elements. */ public void elementUpdated(List elements_p); } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/validators Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/validators/PatternElementValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3802 Text-content-md5: 2816ac651899005b11f67c00fb0b11ec Text-content-sha1: f4e1df62d9ccb65b61c6b4ed4c4407ebb8f90edb Content-length: 3847 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.validators; import java.util.Iterator; import org.eclipse.egf.common.ui.helper.MessageFormatHelper; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternViewpoint; /** * Implements a validator that checks {@link AbstractPatternElement} valid state. * @author Guillaume Brocard */ public class PatternElementValidator extends NotEmptyStringValidator { /** * The parent. */ private NamedModelElementWithId _parent; /** * Pattern that the validation is performed against. */ private AbstractPatternElement _pattern; /** * Constructor. * @param patternElement_p * @param errorMessage_p */ public PatternElementValidator(NamedModelElementWithId parent_p, AbstractPatternElement pattern_p, String errorMessage_p) { super(errorMessage_p); _parent = parent_p; _pattern = pattern_p; } /** * @see org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator#isValid(java.lang.Object) */ @Override public String isValid(Object value_p) { String errorMessage = super.isValid(value_p); if (null != errorMessage) { return errorMessage; } // Check: the pattern element's parent does not have the same name. String name = (String) value_p; if (null != _parent) { // Check sibling elements: they do not have the same name. Iterator siblingElements = null; // Parent is either a ParentLibrary or the PatternViewpoint. if (_parent instanceof PatternLibrary) { siblingElements = ((PatternLibrary) _parent).getPatternElements().iterator(); } else if (_parent instanceof PatternViewpoint) { siblingElements = ((PatternViewpoint) _parent).getLibraries().iterator(); } if (null != siblingElements) { // check no sibling element of the same type do not have the same name. while (siblingElements.hasNext() && (null == errorMessage)) { AbstractPatternElement currentPattern = siblingElements.next(); if ((_pattern != currentPattern) && (_pattern.getClass() == currentPattern.getClass()) && (currentPattern.getName().equals(name))) { errorMessage = formatErrorMessage(name, Messages.PatternElementValidator_Sibling_EndMessage); } } } } return errorMessage; } /** * Format error message with given parameters. * @param alreadyUsedName_p the already used name value. * @param messageEndPart_p the message end part i.e who is already using the same name value. * @return */ private String formatErrorMessage(String alreadyUsedName_p, String messageEndPart_p) { String errorMessage = Messages.PatternElementValidator_Name_Already_Used_ErrorMessage; return MessageFormatHelper.formatMessage(errorMessage, new String[] { alreadyUsedName_p, messageEndPart_p }); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/validators/ReferencedFactoryComponentValidator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2302 Text-content-md5: 3f1470a5047a159b4430014644bb4cd8 Text-content-sha1: 21c96de0a9f4c684522151a6644bc6b12d1cc31a Content-length: 2347 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.validators; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.ui.internal.data.UIDataHelper; import org.eclipse.egf.core.ui.internal.databinding.ReferencedFactoryComponent; /** * Validator used to validate a {@link ReferencedFactoryComponent}. * @author Guillaume Brocard */ public abstract class ReferencedFactoryComponentValidator extends NotEmptyStringValidator { /** * Constructor. * @param errorMessage_p */ public ReferencedFactoryComponentValidator(String errorMessage_p) { super(errorMessage_p); } /** * Handle a referenced factory component change. * @param newReferencedFactoryComponentIdValue_p can be null if no id is retrieved. */ protected abstract void handleReferencedFactoryComponentChange(String newReferencedFactoryComponentIdValue_p); /** * @see com.thalesgroup.mde.common.ui.toolkit.validators.NotEmptyStringValidator#isValid(java.lang.Object) */ @Override public String isValid(Object value_p) { // Check given value is not empty first. String result = super.isValid(value_p); // If not empty, check it is a valid factory component id. if (null == result) { // Compute the new referenced factory component id. String referencedFactoryComponentId = UIDataHelper.getFactoryComponentIdFor((String) value_p); handleReferencedFactoryComponentChange(referencedFactoryComponentId); // If no referenced factory component id is found, set the error message. if (null == referencedFactoryComponentId) { result = getErrorMessage(); } } return result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/AbstractObservableContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3168 Text-content-md5: 87c221a54868c2e27ceb7e8727b17805 Text-content-sha1: 34a0b8caed91ab589d980aa79bcdda5cb0aff1e1 Content-length: 3213 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import java.util.ArrayList; import java.util.List; import org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider; import org.eclipse.egf.core.ui.internal.observable.IListViewerObserver; /** * Base class to implement an observable content provider.
* An observable content provider notifies {@link IListViewerObserver} when elements are added, removed or updated. * @author Guillaume Brocard */ public abstract class AbstractObservableContentProvider extends AbstractStructuredContentProvider { /** * List of observers. */ private List _listViewerObservers; protected AbstractObservableContentProvider() { _listViewerObservers = new ArrayList(0); } /** * Add given listener to the list of {@link IListViewerObserver} notified when viewer content changes. * @param listViewerObserver_p */ public void addListViewerObserver(IListViewerObserver listViewerObserver_p) { _listViewerObservers.add(listViewerObserver_p); } /** * Remove given listener from the list of {@link IListViewerObserver} notified when viewer content changes. * @param listViewerObserver_p */ public void removeListViewerObserver(IListViewerObserver listViewerObserver_p) { _listViewerObservers.remove(listViewerObserver_p); } /** * Notify list viewer observers that elements are added. * @param addedElements_p */ protected void notifyElementAdded(List addedElements_p) { // Notify observers. for (IListViewerObserver observer : _listViewerObservers) { observer.elementAdded(addedElements_p); } } /** * Notify list viewer observers that elements are removed. * @param removedElements_p */ protected void notifyElementRemoved(List removedElements_p) { // Notify observers. for (IListViewerObserver observer : _listViewerObservers) { observer.elementRemoved(removedElements_p); } } /** * Notify list viewer observers that elements are updated. * @param updatedElements_p */ protected void notifyElementUpdated(List updatedElements_p) { // Notify observers. for (IListViewerObserver observer : _listViewerObservers) { observer.elementUpdated(updatedElements_p); } } /** * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { // Cleaning the observers. _listViewerObservers.clear(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/BasicLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2547 Text-content-md5: 7eeeb3c1be3e0e7ea90215c33df40587 Text-content-sha1: 4da3bbbd7f220cabff57ceb5597155098fe26a6f Content-length: 2592 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.internal.data.AbstractUiContainer; import org.eclipse.egf.core.ui.viewers.AdaptedModelElementLabelProvider; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; /** * Basic label provider that handles {@link NamedModelElementWithId} and {@link AbstractUiContainer} objects. * @author fournier */ public class BasicLabelProvider extends LabelProvider { /** * Label provider to use when given element is an instance of {@link NamedModelElementWithId}. */ private ILabelProvider _adaptedLabelProvider; /** * Constructor. */ public BasicLabelProvider() { _adaptedLabelProvider = new AdaptedModelElementLabelProvider(EgfUiActivator.getDefault().getEditingDomainInReadOnly().getAdapterFactory()); } /** * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element_p) { String result = null; if (element_p instanceof NamedModelElementWithId) { result = _adaptedLabelProvider.getText(element_p); } else if (element_p instanceof AbstractUiContainer) { result = ((AbstractUiContainer) element_p).getText(); } return result; } /** * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object) */ @Override public Image getImage(Object element_p) { Image result = null; if (element_p instanceof NamedModelElementWithId) { result = _adaptedLabelProvider.getImage(element_p); } else if (element_p instanceof AbstractUiContainer) { result = ((AbstractUiContainer) element_p).getImage(); } else { result = super.getImage(element_p); } return result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/CustomTooltipLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1905 Text-content-md5: b3985868e8de8fe730cbae72b315b95a Text-content-sha1: bd45aa940dac5ed0565bb7e8f929324a995cfd6e Content-length: 1950 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import org.eclipse.egf.common.ui.viewers.AbstractTooltipLabelProvider; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ILabelProvider; /** * Provides a custom tool tip label provider to use in TreeViewer.
* It handles {@link NamedModelElementWithId} objects.
* The tool tip content is the description feature for given {@link NamedModelElementWithId#getDescription()}. * @author Guillaume Brocard */ public class CustomTooltipLabelProvider extends AbstractTooltipLabelProvider { /** * Constructor. * @param labelProvider_p label provider that provides the text and the image for given element. */ public CustomTooltipLabelProvider(ILabelProvider labelProvider_p) { super(labelProvider_p); } /** * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipText(java.lang.Object) */ @Override public String getToolTipText(Object element_p) { String result = null; if (element_p instanceof NamedModelElementWithId) { result = DataHelper.getDescription((NamedModelElementWithId) element_p); } return (null == result) ? Messages.CustomTooltipLabelProvider_No_Tooltip_Title : result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/DecoratedModelLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2907 Text-content-md5: 29b19c6f78cb4d6e8daec1d9b4e36f24 Text-content-sha1: a7e6c71813a2df5f8dbf10ee00dab018fe01d2fa Content-length: 2952 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import org.eclipse.egf.core.ui.internal.data.AbstractUiContainer; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.PlatformUI; /** * Decorated label provider that handles {@link NamedModelElementWithId} and {@link AbstractUiContainer} objects. * @author Guillaume Brocard */ public class DecoratedModelLabelProvider implements ILabelProvider { /** * Delegated label provider. */ private DecoratingLabelProvider _decoratingLabelProvider; /** * Constructor. */ public DecoratedModelLabelProvider() { _decoratingLabelProvider = new DecoratingLabelProvider(new BasicLabelProvider(), PlatformUI.getWorkbench().getDecoratorManager()); } /** * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object) */ public Image getImage(Object element_p) { return _decoratingLabelProvider.getImage(element_p); } /** * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) */ public String getText(Object element_p) { return _decoratingLabelProvider.getText(element_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void addListener(ILabelProviderListener listener_p) { _decoratingLabelProvider.addListener(listener_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ public void dispose() { _decoratingLabelProvider.dispose(); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String) */ public boolean isLabelProperty(Object element_p, String property_p) { return _decoratingLabelProvider.isLabelProperty(element_p, property_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void removeListener(ILabelProviderListener listener_p) { _decoratingLabelProvider.removeListener(listener_p); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1142 Text-content-md5: d01e704d5147bdfada21906770bb896a Text-content-sha1: 4cd46afdcc245a85aca13d2be8259d99527eed3d Content-length: 1187 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import org.eclipse.osgi.util.NLS; /** * I18n helper. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.internal.viewers.messages"; //$NON-NLS-1$ public static String CustomTooltipLabelProvider_No_Tooltip_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/ObservableArrayContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3825 Text-content-md5: 47fcfabc34dd639560b174ac1b981a46 Text-content-sha1: 5482d81d4df524d9e9778456e66bd79ce90013b6 Content-length: 3870 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import java.util.Arrays; import org.eclipse.egf.core.ui.internal.observable.IListViewerObserver; import org.eclipse.jface.viewers.AbstractListViewer; import org.eclipse.jface.viewers.Viewer; /** * This implementation of IStructuredContentProvider handles the case where the viewer input is a changing array of elements.
* This implementation is able to notify {@link IListViewerObserver} implementors that the viewer content has changed. * @author fournier */ public class ObservableArrayContentProvider extends AbstractObservableContentProvider { /** * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement_p) { Object[] result = null; if (inputElement_p instanceof Object[]) { result = (Object[]) inputElement_p; } return result; } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleElementUpdated(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ @Override protected void handleElementUpdated(Viewer viewer_p, Object oldInput_p, Object newInput_p) { // Update given elements in the viewer. if (newInput_p instanceof Object[]) { Object[] elements = (Object[]) newInput_p; for (Object element : elements) { ((AbstractListViewer) viewer_p).refresh(element); } // Notify observers. notifyElementUpdated(Arrays.asList(elements)); } } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleElementAdded(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @Override protected void handleElementAdded(Viewer viewer_p, Object addedElements_p) { // Add given elements to the viewer. if (addedElements_p instanceof Object[]) { Object[] elements = (Object[]) addedElements_p; for (Object element : elements) { ((AbstractListViewer) viewer_p).add(element); } // Notify observers. notifyElementAdded(Arrays.asList(elements)); } } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleElementRemoved(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @Override protected void handleElementRemoved(Viewer viewer_p, Object removeElements_p) { // Remove given elements from the viewer. if (removeElements_p instanceof Object[]) { Object[] elements = (Object[]) removeElements_p; for (Object element : elements) { ((AbstractListViewer) viewer_p).remove(element); } // Notify observers. notifyElementRemoved(Arrays.asList(elements)); } } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleViewer(org.eclipse.jface.viewers.Viewer) */ @Override protected void handleViewer(Viewer viewer_p) { if (!(viewer_p instanceof AbstractListViewer)) { throw new IllegalArgumentException("Viewer must be an instanceof AbstractListViewer"); //$NON-NLS-1$ } } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/ObservablePatternElementContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4910 Text-content-md5: a326d87b2e3a7f7bf4a1edb005973c96 Text-content-sha1: e0a164d590aced36b29b2524c6878a9d273596c7 Content-length: 4955 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.egf.common.ui.constant.IUiCommonConstants; import org.eclipse.egf.common.ui.viewers.IOrderedContentProvider; import org.eclipse.jface.viewers.AbstractTableViewer; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; /** * Implements the content provider for the pattern library production orchestration wizard page. * @author Guillaume Brocard */ public class ObservablePatternElementContentProvider extends AbstractObservableContentProvider implements IOrderedContentProvider { /** * List of elements used as initial input. */ private List _initialInput; /** * Reference to the viewer that uses this content provider. */ private Viewer _viewer; /** * @see org.eclipse.egf.common.ui.toolkit.viewers.DefaultListContentProvider#handleViewer(org.eclipse.jface.viewers.Viewer) */ @Override protected void handleViewer(Viewer viewer_p) { if (null == _viewer) { _viewer = viewer_p; } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementAdded(org.eclipse.jface.viewers.Viewer, java.lang.Object) */ @SuppressWarnings("unchecked") @Override protected void handleElementAdded(Viewer viewer_p, Object addedElements_p) { // Check if given added element is a List ie the initial input. if (addedElements_p instanceof List) { // Keep a reference on this given initial input. _initialInput = (List) addedElements_p; } else { // Add given added elements in the initial input. _initialInput.add(addedElements_p); // Add elements in the viewer. AbstractTableViewer abstractListViewer = ((AbstractTableViewer) viewer_p); abstractListViewer.add(addedElements_p); updateOrchestration(); } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementRemoved(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @Override protected void handleElementRemoved(Viewer viewer_p, Object removedElement_p) { // Precondition : removedElements must not be the initial input. // This case only happens when closing the dialog. if (_initialInput == removedElement_p) { return; } // Remove given removed elements from the initial input. _initialInput.remove(removedElement_p); // Remove elements from the viewer. AbstractTableViewer viewer = ((AbstractTableViewer) viewer_p); viewer.remove(removedElement_p); // Notify removed elements. updateOrchestration(); } /** * Update the orchestration according to initial input modifications. */ private void updateOrchestration() { notifyElementUpdated(new ArrayList(_initialInput)); } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementUpdated(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ @Override protected void handleElementUpdated(Viewer viewer_p, Object oldInput_p, Object newInput_p) { ((StructuredViewer) viewer_p).refresh(oldInput_p); // Notify updated elements. notifyElementUpdated(Collections.singletonList(oldInput_p)); } /** * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement_p) { Object[] result = null; if (null != _initialInput) { result = _initialInput.toArray(); } else { result = IUiCommonConstants.NO_ELEMENT; } return result; } /** * @see org.eclipse.egf.common.ui.viewers.IOrderedContentProvider#swap(int, int) */ public void swap(int elementPosition1_p, int elementPosition2_p) { Collections.swap(_initialInput, elementPosition1_p, elementPosition2_p); // Refresh the viewer. getViewer().refresh(); updateOrchestration(); } /** * Return the viewer that uses this content provider. * @return */ protected Viewer getViewer() { return _viewer; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/ObservableReferencedContractElementContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 8510 Text-content-md5: 934db4e912d26bfd10c96534573ce3c2 Text-content-sha1: 37bf21e84dac47bc656166a335b9d24592cf8374 Content-length: 8555 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import java.util.ArrayList; import java.util.List; import org.eclipse.egf.core.ui.internal.data.AbstractUiContainer; import org.eclipse.egf.core.ui.internal.data.UiReferencedFactoryComponent; import org.eclipse.egf.core.ui.internal.data.UiReferencedFactoryComponentContainer; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.jface.viewers.Viewer; /** * Implements the content provider for the right viewer of the ContractElementReferenceWizardPage.
* It handles a tree composed of factory components with contract elements as children. * @author fournier */ public class ObservableReferencedContractElementContentProvider extends AbstractObservableContentProvider implements ITreeContentProvider { /** * Initial input. */ private UiReferencedFactoryComponentContainer _initialInput; /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementAdded(org.eclipse.jface.viewers.Viewer, java.lang.Object) */ @Override protected void handleElementAdded(Viewer viewer_p, Object addedElements_p) { // Handling only the case of ContractElements. if (addedElements_p instanceof Object[]) { List addedContractElements = new ArrayList(0); // Get the tree viewer. AbstractTreeViewer abstractTreeViewer = ((AbstractTreeViewer) viewer_p); // Reveal ie added elements are to be made visible. List treePathElements = new ArrayList(1); for (Object element : (Object[]) addedElements_p) { // Check we got a contract element. if (element instanceof ContractElement) { ContractElement contractElement = (ContractElement) element; addedContractElements.add(contractElement); // Get the FactoryComponent container of the contract element. FactoryComponent fc = ModelHelper.getFactoryComponentContainer(contractElement); // Get the related UI referenced factory component. UiReferencedFactoryComponent uiReferencedFc = _initialInput.getUiReferencedFactoryComponent(fc); // If not found we should create a new child. if (null == uiReferencedFc) { // Create the child. uiReferencedFc = new UiReferencedFactoryComponent(_initialInput, fc); // Add it to the initial input _initialInput.addChild(uiReferencedFc); // Add it to the viewer. abstractTreeViewer.add(_initialInput, uiReferencedFc); } uiReferencedFc.addChild(element); // Add it to the viewer. abstractTreeViewer.add(uiReferencedFc, element); // Build tree path treePathElements.add(uiReferencedFc); treePathElements.add(element); } } // Notify observers. notifyElementAdded(addedContractElements); // Reveal ie added elements are to be made visible. abstractTreeViewer.setSelection(new TreeSelection(new TreePath(treePathElements.toArray())), true); } else if (addedElements_p instanceof UiReferencedFactoryComponentContainer) { // Case of the initial input. _initialInput = (UiReferencedFactoryComponentContainer) addedElements_p; } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementRemoved(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @Override protected void handleElementRemoved(Viewer viewer_p, Object removedElements_p) { // Handling only the case of ContractElements. if (removedElements_p instanceof Object[]) { List removedContractElements = new ArrayList(0); for (Object element : (Object[]) removedElements_p) { // Check we got a contract element. if (element instanceof ContractElement) { ContractElement contractElement = (ContractElement) element; removedContractElements.add(contractElement); // Get the FactoryComponent container of the contract element. FactoryComponent fc = ModelHelper.getFactoryComponentContainer(contractElement); // Get the related UI referenced factory component. UiReferencedFactoryComponent uiReferencedFc = _initialInput.getUiReferencedFactoryComponent(fc); // Get the tree viewer. AbstractTreeViewer abstractTreeViewer = ((AbstractTreeViewer) viewer_p); // Must be not null : we are removing an existing contract element from the viewer. Object treeModelElementToRemove = null; if (null != uiReferencedFc) { uiReferencedFc.removeChild(element); // Test if the UI referenced factory component is empty, remove it. if (uiReferencedFc.isEmpty()) { // Remove it from the initial input. _initialInput.removeChild(uiReferencedFc); // Set the UI element to remove : the UI referenced factory component because it has no longer children. treeModelElementToRemove = uiReferencedFc; } else { // Set the UI element to remove : the contract element. treeModelElementToRemove = element; } // Remove it from the viewer. abstractTreeViewer.remove(treeModelElementToRemove); } } } // Notify observers. notifyElementRemoved(removedContractElements); } } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleElementUpdated(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ @Override protected void handleElementUpdated(Viewer viewer_p, Object oldInput_p, Object newInput_p) { // Do nothing. } /** * @see org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider#handleViewer(org.eclipse.jface.viewers.Viewer) */ @Override protected void handleViewer(Viewer viewer_p) { if (!(viewer_p instanceof AbstractTreeViewer)) { throw new IllegalArgumentException("Viewer must be an instanceof AbstractTreeViewer"); //$NON-NLS-1$ } } /** * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement_p) { return getChildren(inputElement_p); } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ public Object[] getChildren(Object parentElement_p) { Object[] result = null; if (parentElement_p instanceof AbstractUiContainer) { result = ((AbstractUiContainer) parentElement_p).getChildren(); } return result; } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ public Object getParent(Object element_p) { Object result = null; if (element_p instanceof ContractElement) { result = ModelHelper.getFactoryComponentContainer((ContractElement) element_p); } else if (element_p instanceof FactoryComponent) { result = _initialInput; } return result; } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ public boolean hasChildren(Object element_p) { // Get children. Object[] children = getChildren(element_p); boolean result = (null != children) ? true : false; return result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/PossibleContractElementReferenceTreeContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 12717 Text-content-md5: 0a71fecc52514f20aaf87525b16b8322 Text-content-sha1: f2b843647db3a34a1db72b4de29bb57ee159ee4d Content-length: 12762 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.internal.viewers; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.eclipse.egf.common.ui.toolkit.viewers.AbstractStructuredContentProvider; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.model.AbstractFactoryComponentFactory; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; /** * Implements the content provider for the left viewer of the ContractElementReferenceWizardPage.
* It handles a tree composed of factory components with contract elements as children. * @author fournier */ public class PossibleContractElementReferenceTreeContentProvider extends AbstractStructuredContentProvider implements ITreeContentProvider { /** * Initial input. */ private Object _initialInput; private Set _removedContractElements; /** * Constructor. * @param removedContractElements_p initial set of contract elements to remove. */ public PossibleContractElementReferenceTreeContentProvider(Collection removedContractElements_p) { _removedContractElements = new HashSet(removedContractElements_p); } /** * Return a collection of possible contract elements for given factory component according to given filtered contract elements. * @param fc_p * @param filteredContractElements_p * @return */ private Collection getPossibleReferencedContractElements(FactoryComponent fc_p, Set filteredContractElements_p) { Collection possibleReferencedContractElements = DataHelper.getPossibleReferencedContractElement(fc_p); // Remove from the returned collection the internal up-to-date removed contract element set. possibleReferencedContractElements.removeAll(_removedContractElements); return possibleReferencedContractElements; } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ public Object[] getChildren(Object parentElement_p) { Object[] result = null; // Object can be an factory component as initial input. if (parentElement_p instanceof FactoryComponent) { Collection possibleReferencedContractElements = getPossibleReferencedContractElements((FactoryComponent) parentElement_p, _removedContractElements); result = possibleReferencedContractElements.toArray(new ContractElement[possibleReferencedContractElements.size()]); } else if (parentElement_p instanceof Contract) { // Object can be a contract as initial input. result = handleContractAsInitialInput((Contract) parentElement_p); } else if (parentElement_p instanceof Context) { // Object can be a context as initial input. result = handleContextAsInitialInput((Context) parentElement_p); } return result; } /** * Handle the case where a context is the initial input. * @param parentElement_p * @return can be null */ private Object[] handleContextAsInitialInput(Context context_p) { Object[] result = null; FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(context_p); // Get the parent (i.e its container) of the context. AbstractFactoryComponentFactory contextContainer = (AbstractFactoryComponentFactory) context_p.eContainer(); Collection referencedFcs = null; // Is this context container an FactoryComponentInvocation ? if (contextContainer instanceof FactoryComponentInvocation) { // Get all referenced factory components by the factory component that contains this contract. referencedFcs = DataHelper.getReferencedFactoryComponentsBy(fcContainer); // If the context is contained by a factory component invocation, // we only keep the referenced factory component for this context. FactoryComponentInvocation fcInvocation = (FactoryComponentInvocation) contextContainer; // Get the referenced factory component for this factory component invocation. FactoryComponent referencedFc = CoreActivator.getDefault().getFactoryComponent(fcInvocation.getFactoryComponentId()); // Retain only this factory component. referencedFcs.retainAll(Collections.singletonList(referencedFc)); } else if (contextContainer instanceof ProductionPlan) { // Is this context container a ProductionPlan ? // If the context is contained by a Production Plan, // we only reference the contract elements defined in the same factory component. referencedFcs = new ArrayList(0); referencedFcs.add(fcContainer); } // Filter referenced factory component with existing contract element references. filterReferencedFcs(referencedFcs); result = referencedFcs.toArray(new FactoryComponent[referencedFcs.size()]); return result; } /** * Handle the case where a contract is the initial input. * @param parentElement_p * @return can be null */ private Object[] handleContractAsInitialInput(Contract contract_p) { Object[] result; // Get all referenced factory component by the factory component that contains this contract. Collection referencedFcs = DataHelper.getReferencedFactoryComponentsBy(ModelHelper.getFactoryComponentContainer(contract_p)); // Filter referenced factory components with existing contract element references. filterReferencedFcs(referencedFcs); result = referencedFcs.toArray(new FactoryComponent[referencedFcs.size()]); return result; } /** * Filter given collection of FactoryComponent with existing contract element references. * @param referencedFcs_p */ private void filterReferencedFcs(Collection referencedFcs_p) { Iterator filteredFcs = referencedFcs_p.iterator(); while (filteredFcs.hasNext()) { FactoryComponent currentFc = filteredFcs.next(); // Filter factory components that only have removed contract elements. Collection possibleReferencedContractElements = getPossibleReferencedContractElements(currentFc, _removedContractElements); if (possibleReferencedContractElements.isEmpty()) { // Filter that current factory component. filteredFcs.remove(); } } } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ public Object getParent(Object element_p) { Object result = null; if (element_p instanceof ContractElement) { result = ModelHelper.getFactoryComponentContainer((ContractElement) element_p); } else if (element_p instanceof FactoryComponent) { result = _initialInput; } return result; } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ public boolean hasChildren(Object element_p) { // Get children. Object[] children = getChildren(element_p); boolean result = (null != children) ? true : false; return result; } /** * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement_p) { return getChildren(inputElement_p); } /** * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { // Do nothing. } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleElementUpdated(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ @Override protected void handleElementUpdated(Viewer viewer_p, Object oldInput_p, Object newInput_p) { // Do nothing. } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleElementAdded(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @Override protected void handleElementAdded(Viewer viewer_p, Object addedElements_p) { // Handling only the case of ContractElements. if (addedElements_p instanceof Object[]) { for (Object contractElement : (Object[]) addedElements_p) { // Check we got a contract element. if (contractElement instanceof ContractElement) { // Get the parent of the contract element : here in this tree: it is its factory component container. // Add it in the tree viewer. AbstractTreeViewer abstractTreeViewer = ((AbstractTreeViewer) viewer_p); Object fcParent = getParent(contractElement); // Add the contract element parent in case it does not exist yet (if already existing, it is handled by the tree viewer). abstractTreeViewer.add(_initialInput, fcParent); // Add the contract element itself. abstractTreeViewer.add(fcParent, contractElement); // Remove it from the internal removed contract element set. _removedContractElements.remove(contractElement); } } } else if ((addedElements_p instanceof Contract) || (addedElements_p instanceof Context)) { // Case of the initial input. _initialInput = addedElements_p; } } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleElementRemoved(org.eclipse.jface.viewers.Viewer, * java.lang.Object) */ @Override protected void handleElementRemoved(Viewer viewer_p, Object removedElements_p) { // Handling only the case of ContractElements. if (removedElements_p instanceof Object[]) { // Find the content type. Object[] removedElements = (Object[]) removedElements_p; // To successfully remove element in a tree viewer, removed elements must not be the selected ones. // Set a new empty selection. AbstractTreeViewer abstractTreeViewer = ((AbstractTreeViewer) viewer_p); for (Object removedElement : removedElements) { // Check we got a contract element. if (removedElement instanceof ContractElement) { ContractElement removedContractElement = (ContractElement) removedElement; // Remove elements. abstractTreeViewer.remove(removedElement); // Add it to the internal removed contract element set. _removedContractElements.add(removedContractElement); // Retrieve the parent element of that removed contract element ie an FactoryComponent. FactoryComponent fcParent = (FactoryComponent) getParent(removedContractElement); // Filter factory components that only have removed contract elements. Collection possibleReferencedContractElements = getPossibleReferencedContractElements(fcParent, _removedContractElements); if (possibleReferencedContractElements.isEmpty()) { // Filter that factory component because it does not have any children anymore. abstractTreeViewer.remove(fcParent); } } } } } /** * @see org.eclipse.egf.core.ui.internal.viewers.AbstractStructuredContentProvider#handleViewer(org.eclipse.jface.viewers.Viewer) */ @Override protected void handleViewer(Viewer viewer_p) { if (!(viewer_p instanceof AbstractTreeViewer)) { throw new IllegalArgumentException("Viewer must be an instanceof AbstractTreeViewer"); //$NON-NLS-1$ } } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/internal/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 629 Text-content-md5: 4038899a85197b8369d61f9f6ea5f8af Text-content-sha1: 09a673aa13efd6e595be1b8a50b316678e901733 Content-length: 674 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### CustomTooltipLabelProvider_No_Tooltip_Title=No tooltip available Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 766 Text-content-md5: 81c8083538704a5b02d31eef295ccf5a Text-content-sha1: 814d6be6a76707dc322a85e2e33c86e6f2e7744d Content-length: 811 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### PatternOverviewPage_PatternNameErrorMessage=Should only use the [a-zA-Z_0-9] set of characters and\n must start with a non-digit character. PatternOverviewPage_PatternNameRegularExpression=[a-zA-Z]+\\w* Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/AbstractPreferencePage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2345 Text-content-md5: c70f96d36a32488bc41a452211faa7cd Text-content-sha1: ee6a25a337106e01f2f193f1c0ada5aedc97732f Content-length: 2390 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2007, 2009 La Carotte Et Le Baton. * 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: * La Carotte Et Le Baton - initial API and implementation */ package org.eclipse.egf.core.ui.preferences; import java.io.IOException; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.IPersistentPreferenceStore; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; /** * Base class to implement preference pages. * @author Guillaume Brocard */ public abstract class AbstractPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { /** * Constructor. */ public AbstractPreferencePage() { super(GRID); IPreferenceStore preferenceStore = EgfUiActivator.getDefault().getPreferenceStore(); setPreferenceStore(preferenceStore); setTitle(getPageTitle()); setDescription(getPageDescription()); } /** * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) */ public void init(IWorkbench workbench_p) { // Nothing to do. } /** * Get the title of this preference page. * @return */ protected abstract String getPageTitle(); /** * Get the description of this preference page. * @return */ protected abstract String getPageDescription(); /** * @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk() */ @Override public boolean performOk() { boolean ok = super.performOk(); IPreferenceStore store = getPreferenceStore(); if (store instanceof IPersistentPreferenceStore) { try { ((IPersistentPreferenceStore) store).save(); } catch (IOException e) { MessageDialog.openError(getShell(), Messages.AbstractDefaultPreferencePage_SavingError, e.getMessage()); return false; } } return ok; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/EgfGeneralPreferencePage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1398 Text-content-md5: 242bfb811efb1e28e3cddfaa3402c1e0 Text-content-sha1: c9605d67c52f70908a4caa7ed36e45fc503e56b5 Content-length: 1443 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.preferences; /** * Implement the EGF general preference page. * @author Guillaume Brocard */ public class EgfGeneralPreferencePage extends AbstractPreferencePage { /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageDescription() */ @Override protected String getPageDescription() { return Messages.EgfGeneralPreferencePage_Description; } /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.EgfGeneralPreferencePage_Title; } /** * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors() */ @Override protected void createFieldEditors() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/IPreferenceConstants.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1968 Text-content-md5: 7ccdba392401113bd22b337b7d1196f7 Text-content-sha1: 9babb97efb36b6d00b62e1d7fd95819049c229ed Content-length: 2013 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.preferences; /** * Constants used in preferences pages. * @author Guillaume Brocard */ public interface IPreferenceConstants { /** * Preference constant that identifies the domain editor used to edit domain model. */ public static final String DOMAIN_EDITOR_ID = "Domain_Editor_Id"; //$NON-NLS-1$ /** * Id of the Standard Ecore editor. */ public static final String ECORE_EDITOR_ID = "org.eclipse.emf.ecore.presentation.EcoreEditorID"; //$NON-NLS-1$ /** * Id of the Graphical Ecore editor. */ public static final String GRAPHICAL_ECORE_EDITOR_ID = "org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorID"; //$NON-NLS-1$ /** * Preference constant that identifies Factory Component execution mode. */ public static final String FC_EXECUTION_MODE = "FactoryComponent_Execution_Mode"; //$NON-NLS-1$ /** * No validation is performed when a FC is executed. */ public static final String EXECUTION_WITHOUT_VALIDATION = Boolean.FALSE.toString(); /** * Validation is performed just before a FC execution. */ public static final String EXECUTION_WITH_PRE_VALIDATION = Boolean.TRUE.toString(); /** * Preference constant that identifies Pattern execution mode. */ public static final String PATTERN_EXECUTION_MODE = "Pattern_Execution_Mode"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2312 Text-content-md5: 8a08773e8eb0abd4a965237e380cb9d3 Text-content-sha1: cf831e0ecf1b0480c9647a85e764dc645d6fc521 Content-length: 2357 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.preferences; import org.eclipse.osgi.util.NLS; /** * I18n translation helper for preference pages. * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.preferences.messages"; //$NON-NLS-1$ // Common preference page. public static String AbstractDefaultPreferencePage_SavingError; // SolFa general preference page. public static String EgfGeneralPreferencePage_Title; public static String EgfGeneralPreferencePage_Description; // Domain general preference page. public static String DomainPreferencePage_Title; public static String DomainPreferencePage_Description; public static String DomainPreferencePage_EditorChoice_Title; public static String DomainPreferencePage_EcoreEditor_Title; public static String DomainPreferencePage_GraphicalEcoreEditor_Title; // Factory Component preference page. public static String FactoryComponentPreferencePage_Description; public static String FactoryComponentPreferencePage_Title; public static String FactoryComponentPreferencePage_ExecuteWithPreValidation_Title; public static String FactoryComponentPage_ExecuteWithoutValidation_Title; public static String FactoryComponentPage_FcExecution_Title; // Pattern preference page. public static String PatternPreferencePage_Description; public static String PatternPreferencePage_Title; public static String PatternPreferencePage_ExecuteWithPreValidation_Title; public static String PatternPage_ExecuteWithoutValidation_Title; public static String PatternPage_Execution_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/domain Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/domain/DomainPreferencePage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2504 Text-content-md5: 3202c4acfd9ec13933e7a48aee804d48 Text-content-sha1: d1f53a9529063be107b2098aa4d33e67ff345900 Content-length: 2549 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.preferences.domain; import org.eclipse.egf.core.ui.preferences.AbstractPreferencePage; import org.eclipse.egf.core.ui.preferences.IPreferenceConstants; import org.eclipse.egf.core.ui.preferences.Messages; import org.eclipse.jface.preference.RadioGroupFieldEditor; /** * Implements the preference page related to the 'Domain' concept. * @author Guillaume Brocard */ public class DomainPreferencePage extends AbstractPreferencePage { /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageDescription() */ @Override protected String getPageDescription() { return Messages.DomainPreferencePage_Description; } /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.DomainPreferencePage_Title; } /** * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors() */ @Override protected void createFieldEditors() { // Available Domain editors choice group. String[][] availableDomainEditors = new String[][] { { Messages.DomainPreferencePage_EcoreEditor_Title, IPreferenceConstants.ECORE_EDITOR_ID }, { Messages.DomainPreferencePage_GraphicalEcoreEditor_Title, IPreferenceConstants.GRAPHICAL_ECORE_EDITOR_ID } }; RadioGroupFieldEditor positionRadioGroup = new RadioGroupFieldEditor(IPreferenceConstants.DOMAIN_EDITOR_ID, Messages.DomainPreferencePage_EditorChoice_Title, 2, availableDomainEditors, getFieldEditorParent(), true); addField(positionRadioGroup); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/fc/FactoryComponentPreferencePage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2538 Text-content-md5: d910e26e17acd54cdb027c60a0f88594 Text-content-sha1: bdd2b8aba706d8abbbfdf16ade18513464a617a4 Content-length: 2583 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.preferences.fc; import org.eclipse.egf.core.ui.preferences.AbstractPreferencePage; import org.eclipse.egf.core.ui.preferences.IPreferenceConstants; import org.eclipse.egf.core.ui.preferences.Messages; import org.eclipse.jface.preference.RadioGroupFieldEditor; /** * Implements the preference page related to the 'Factory Component' concept. * @author Guillaume Brocard */ public class FactoryComponentPreferencePage extends AbstractPreferencePage { /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageDescription() */ @Override protected String getPageDescription() { return Messages.FactoryComponentPreferencePage_Description; } /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.FactoryComponentPreferencePage_Title; } /** * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors() */ @Override protected void createFieldEditors() { // Available choices. String[][] choices = new String[][] { { Messages.FactoryComponentPreferencePage_ExecuteWithPreValidation_Title, IPreferenceConstants.EXECUTION_WITH_PRE_VALIDATION}, { Messages.FactoryComponentPage_ExecuteWithoutValidation_Title, IPreferenceConstants.EXECUTION_WITHOUT_VALIDATION } }; RadioGroupFieldEditor positionRadioGroup = new RadioGroupFieldEditor(IPreferenceConstants.FC_EXECUTION_MODE, Messages.FactoryComponentPage_FcExecution_Title, 2, choices, getFieldEditorParent(), true); addField(positionRadioGroup); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1753 Text-content-md5: 4e113cc917b6bc55efac11bf1b05e718 Text-content-sha1: e0cb7ce720c1b7e66f68a8156a4f6b457bbfb9a2 Content-length: 1798 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## # Common preference page. AbstractDefaultPreferencePage_SavingError=Error when saving preferences on disk. # SolFa general preference page. EgfGeneralPreferencePage_Title=EGF EgfGeneralPreferencePage_Description=Preferences related to Eclipse Generation Factories concepts. DomainPreferencePage_Title=Domain DomainPreferencePage_Description=Preferences related to the Domain concept. DomainPreferencePage_EditorChoice_Title=Available Domain editors DomainPreferencePage_EcoreEditor_Title=Classic EMF editor DomainPreferencePage_GraphicalEcoreEditor_Title=Graphical Ecore editor (only available for domain located in workspace) FactoryComponentPreferencePage_Description=Preferences related to the Factory Component concept. FactoryComponentPreferencePage_Title=Factory Component FactoryComponentPreferencePage_ExecuteWithPreValidation_Title=Validated FC FactoryComponentPage_ExecuteWithoutValidation_Title=Unverified FC FactoryComponentPage_FcExecution_Title=Factory Component execution mode # Pattern preference page. PatternPreferencePage_Description=Preferences related to the Pattern concept. PatternPreferencePage_Title=Pattern PatternPreferencePage_ExecuteWithPreValidation_Title=Validated Pattern PatternPage_ExecuteWithoutValidation_Title=Unverified Pattern PatternPage_Execution_Title=Pattern execution mode Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/pattern Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/preferences/pattern/PatternPreferencePage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2429 Text-content-md5: f973e94a020e73be60fca075d5233dbe Text-content-sha1: e486d6bd9edbc832a2344d940d9eed46a383f38a Content-length: 2474 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.preferences.pattern; import org.eclipse.egf.core.ui.preferences.AbstractPreferencePage; import org.eclipse.egf.core.ui.preferences.IPreferenceConstants; import org.eclipse.egf.core.ui.preferences.Messages; import org.eclipse.jface.preference.RadioGroupFieldEditor; /** * Implements the preference page related to the 'Factory Component' concept. * @author Guillaume Brocard */ public class PatternPreferencePage extends AbstractPreferencePage { /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageDescription() */ @Override protected String getPageDescription() { return Messages.PatternPreferencePage_Description; } /** * @see org.eclipse.egf.core.ui.preferences.AbstractPreferencePage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.PatternPreferencePage_Title; } /** * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors() */ @Override protected void createFieldEditors() { // Available choices. String[][] choices = new String[][] { { Messages.PatternPreferencePage_ExecuteWithPreValidation_Title, IPreferenceConstants.EXECUTION_WITH_PRE_VALIDATION }, { Messages.PatternPage_ExecuteWithoutValidation_Title, IPreferenceConstants.EXECUTION_WITHOUT_VALIDATION } }; RadioGroupFieldEditor positionRadioGroup = new RadioGroupFieldEditor(IPreferenceConstants.PATTERN_EXECUTION_MODE, Messages.PatternPage_Execution_Title, 2, choices, getFieldEditorParent(), true); addField(positionRadioGroup); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/AbstractAdaptedModelElementContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6480 Text-content-md5: b49993cf2cbcc6eed91c15f5963d4a2c Text-content-sha1: 78a517f1a98e0b5247fd9afbc861aa80d329a6f4 Content-length: 6525 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers; import org.eclipse.egf.common.ui.constant.IUiCommonConstants; import org.eclipse.egf.core.ui.data.ElementAdapterFactory; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.ui.model.IWorkbenchAdapter; /** * Base class to implement EMF adapters-based content provider. * @author fournier */ public abstract class AbstractAdaptedModelElementContentProvider implements ITreeContentProvider { /** * EMF adapters-base content provider. */ private AdapterFactoryContentProvider _adapterFactoryContentProvider; /** * Reference to the viewer */ private AbstractTreeViewer _viewer; /** * Keep a reference to the initial input. */ private Object _initialInput; /** * Constructor. * @param adapterFactory_p the adapter factory used for providing views of the model. */ public AbstractAdaptedModelElementContentProvider() { super(); // Initialize EMF content provider. _adapterFactoryContentProvider = new AdapterFactoryContentProvider(getAdapterFactory()); } /** * Return the adapter factory for this content provider. * @return a null instance. */ protected abstract AdapterFactory getAdapterFactory(); /** * Return the adapter factory content provider. * @return the adapterFactoryContentProvider */ public AdapterFactoryContentProvider getAdapterFactoryContentProvider() { return _adapterFactoryContentProvider; } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ public Object[] getChildren(Object parentElement_p) { Object[] elements = IUiCommonConstants.NO_ELEMENT; // If given argument is a NamedModelElementWithId, let's use the EMF adapter accordingly. if (parentElement_p instanceof NamedModelElementWithId) { elements = _adapterFactoryContentProvider.getChildren(parentElement_p); } else { // Try to find an adapter from the platform adapters mechanism. IWorkbenchAdapter adapter = ElementAdapterFactory.getWorkbenchAdapter(parentElement_p); if (null != adapter) { elements = adapter.getChildren(parentElement_p); } } return elements; } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ public Object getParent(Object element_p) { Object parent = null; // If given argument is a NamedModelElementWithId, let's use the EMF adapter accordingly. if (element_p instanceof NamedModelElementWithId) { parent = _adapterFactoryContentProvider.getParent(element_p); } else { // Try to find an adapter from the platform adapters mechanism. IWorkbenchAdapter adapter = ElementAdapterFactory.getWorkbenchAdapter(element_p); if (null != adapter) { parent = adapter.getParent(element_p); } } return parent; } /** * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ public boolean hasChildren(Object element_p) { boolean hasChildren = false; // If given argument is a NamedModelElementWithId, let's use the EMF adapter accordingly. if (element_p instanceof NamedModelElementWithId) { hasChildren = _adapterFactoryContentProvider.hasChildren(element_p); } else { // Try to find an adapter from the platform adapters mechanism. IWorkbenchAdapter adapter = ElementAdapterFactory.getWorkbenchAdapter(element_p); if (null != adapter) { hasChildren = (adapter.getChildren(element_p).length > 0) ? true : false; } } return hasChildren; } /** * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement_p) { Object[] elements = IUiCommonConstants.NO_ELEMENT; // If given argument is a NamedModelElementWithId, let's use the EMF adapter accordingly. if (inputElement_p instanceof NamedModelElementWithId) { elements = _adapterFactoryContentProvider.getElements(inputElement_p); } else { // Try to find an adapter from the platform adapters mechanism. IWorkbenchAdapter adapter = ElementAdapterFactory.getWorkbenchAdapter(inputElement_p); if (null != adapter) { elements = adapter.getChildren(inputElement_p); } } return elements; } /** * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { _adapterFactoryContentProvider.dispose(); } /** * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ public void inputChanged(Viewer viewer_p, Object oldInput_p, Object newInput_p) { // At first call, keep some data for later use. if (null == _viewer) { _viewer = (AbstractTreeViewer) viewer_p; _initialInput = newInput_p; } else if ((oldInput_p == _initialInput) && (null != newInput_p)) { // initial input has changed. _initialInput = newInput_p; } _adapterFactoryContentProvider.inputChanged(viewer_p, oldInput_p, newInput_p); } /** * Return the viewer that this content provider is running for. * @return the viewer */ protected AbstractTreeViewer getViewer() { return _viewer; } /** * Return the initial input object. * @return the initialInput */ protected Object getInitialInput() { return _initialInput; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/AdaptedModelElementLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5578 Text-content-md5: b8eb1bbc5fc0a0184515037634f2cd9e Text-content-sha1: fb06b970cd592d9fbc6f566f275c27136f2d5dd3 Content-length: 5623 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.resource.BasicImageRegistry; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.ui.data.ElementAdapterFactory; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.IWorkbenchAdapter; import org.eclipse.ui.navigator.IDescriptionProvider; /** * Base class to implement EMF adapters-based label provider. * @author fournier */ public class AdaptedModelElementLabelProvider implements ILabelProvider, IDescriptionProvider { /** * EMF adapters-base label provider. */ private AdapterFactoryLabelProvider _adapterFactoryLabelProvider; /** * @param adapterFactoryLabelProvider_p */ public AdaptedModelElementLabelProvider(AdapterFactory adapterFactory_p) { // Initialize EMF label provider. _adapterFactoryLabelProvider = new AdapterFactoryLabelProvider(adapterFactory_p); } /** * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) */ public Image getImage(Object element_p) { Image result = null; // If given argument is a NamedModelElementWithId, let's use the EMF adapter accordingly. if (element_p instanceof NamedModelElementWithId) { result = _adapterFactoryLabelProvider.getImage(element_p); } else { // Try to find an adapter from the platform adapters mechanism. IWorkbenchAdapter adapter = ElementAdapterFactory.getWorkbenchAdapter(element_p); // If one exists, get the image from it. if (null != adapter) { // Get the image descriptor. ImageDescriptor descriptor = adapter.getImageDescriptor(element_p); // If existing, try to get an image from it. if (null != descriptor) { // Get the image from the registry to avoid multiple instances. result = BasicImageRegistry.getInstance().getImage(descriptor); } } } return result; } /** * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ public String getText(Object element_p) { // Returned text must be not null. String text = ICommonConstants.EMPTY_STRING; // If given argument is a NamedModelElementWithId, let's use the EMF adapter accordingly. if (element_p instanceof NamedModelElementWithId) { text = _adapterFactoryLabelProvider.getText(element_p); } else { // Try to find an adapter from the platform adapters mechanism. IWorkbenchAdapter adapter = ElementAdapterFactory.getWorkbenchAdapter(element_p); if (null != adapter) { text = adapter.getLabel(element_p); } } return text; } /** * @see org.eclipse.ui.navigator.IDescriptionProvider#getDescription(java.lang.Object) */ public String getDescription(Object element_p) { String description = null; if (element_p instanceof NamedModelElementWithId) { description = DataHelper.getDescription((NamedModelElementWithId) element_p); if (null != description) { // Replace line separator with white space character. The status line is not able to display multi-lines comment. description = description.replace(ICommonConstants.LINE_SEPARATOR, String.valueOf(ICommonConstants.WHITE_SPACE_CHARACTER)); // Replace EOL character with white space character. The status line is not able to display multi-lines comment. description = description.replace(ICommonConstants.EOL_CHARACTER, ICommonConstants.WHITE_SPACE_CHARACTER); } } return description; } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void addListener(ILabelProviderListener listener_p) { _adapterFactoryLabelProvider.addListener(listener_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ public void dispose() { _adapterFactoryLabelProvider.dispose(); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String) */ public boolean isLabelProperty(Object element_p, String property_p) { return _adapterFactoryLabelProvider.isLabelProperty(element_p, property_p); } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void removeListener(ILabelProviderListener listener_p) { _adapterFactoryLabelProvider.removeListener(listener_p); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/DefaultPatternStructureLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2909 Text-content-md5: fa8813ec003ad9a823cdb884aa503076 Text-content-sha1: 138498477707bbc68423bbfedd3c211f3ce570f9 Content-length: 2954 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers; import org.eclipse.egf.common.constant.IPatternConstants; import org.eclipse.egf.common.descriptor.IDescriptor; import org.eclipse.egf.common.helper.ExtensionPointHelper; import org.eclipse.egf.model.edit.IImageKeys; import org.eclipse.egf.model.provider.FactoryComponentEditPlugin; import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; /** * A label provider that provides with pattern or pattern library handling. * @author Guillaume Brocard */ public class DefaultPatternStructureLabelProvider extends LabelProvider { /** * Is given descriptor a pattern one ? * @param descriptor_p * @return */ protected boolean isPattern(IDescriptor descriptor_p) { Object type = descriptor_p.getValue(IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_TYPE); return IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_PATTERN.equals(type); } /** * Is given descriptor a library one ? * @param descriptor_p * @return */ protected boolean isLibrary(IDescriptor descriptor_p) { Object type = descriptor_p.getValue(IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_TYPE); return IPatternConstants.PATTERN_EXTENSION_POINT_CHILD_LIBRARY.equals(type); } /** * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element_p) { IDescriptor descriptor = (IDescriptor) element_p; StringBuilder result = new StringBuilder(); return result.append((String) descriptor.getValue(ExtensionPointHelper.ATT_NAME)).toString(); } /** * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object) */ @Override public Image getImage(Object element_p) { Image result = null; IDescriptor descriptor = (IDescriptor) element_p; if (isLibrary(descriptor)) { result = ExtendedImageRegistry.INSTANCE.getImage(FactoryComponentEditPlugin.INSTANCE.getImage(IImageKeys.IMG_PATTERN_LIBRARY_ID)); } else if (isPattern(descriptor)) { result = ExtendedImageRegistry.INSTANCE.getImage(FactoryComponentEditPlugin.INSTANCE.getImage(IImageKeys.IMG_PATTERN_MODEL_ID)); } return result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/GenModelViewerFilter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 996 Text-content-md5: 528e224e126b64b1831d8cc7a4642083 Text-content-sha1: 86e3017e7a96a9663da0ce48a673ad51f7030f52 Content-length: 1041 K 13 svn:mime-type V 10 text/plain PROPS-END /** * * * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation * * * */ package org.eclipse.egf.core.ui.viewers; import org.eclipse.core.resources.IFile; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; /** * @author Xavier Maysonnave */ public class GenModelViewerFilter extends ViewerFilter { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof IFile) { return "genmodel".equals(((IFile) element).getFileExtension()); //$NON-NLS-1$ } return true; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/LightweightLabelDecorator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3173 Text-content-md5: d1985fdddb6d32b6e451ce9fbbbab6ee Text-content-sha1: ecf0badac23920c5788794e9ca717e487a71a680 Content-length: 3218 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.IImageKeys; import org.eclipse.egf.model.ContractElement; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IDecoration; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ILightweightLabelDecorator; /** * Specific label provider that handle model element decoration. * @author Guillaume Brocard */ public class LightweightLabelDecorator implements ILightweightLabelDecorator { private ImageDescriptor _requiredImage; /** * @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object, org.eclipse.jface.viewers.IDecoration) */ public void decorate(Object element_p, IDecoration decoration_p) { // The plugin.xml (via decorator extension) define the enablement. // Only the ContractElement model element is decorated. // Ensure that in checking given object type. if (element_p instanceof ContractElement) { ContractElement contractElement = (ContractElement) element_p; // Add an overlay if the contract element is mandatory. if (contractElement.isMandatory()) { decoration_p.addOverlay(getRequiredDecorationImage()); } } } /** * Return the image for the decoration that should be used to cue the user that a field is required. * @return a not null image. */ private ImageDescriptor getRequiredDecorationImage() { // Lazy loading pattern. if (null == _requiredImage) { _requiredImage = EgfUiActivator.getDefault().getImageDescriptor(IImageKeys.IMG_REQUIRED_FIELD_CUE); } return _requiredImage; } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void addListener(ILabelProviderListener listener_p) { // Do nothing. } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ public void dispose() { // Do nothing. } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String) */ public boolean isLabelProperty(Object element_p, String property_p) { // Do nothing. return false; } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener) */ public void removeListener(ILabelProviderListener listener_p) { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1285 Text-content-md5: d3673f1fdd7f1fab35bfd93fdbc234de Text-content-sha1: 83681ae75ee2f03b745b1b811846cb8a20446452 Content-length: 1330 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers; import org.eclipse.osgi.util.NLS; /** * @author Guillaume Brocard */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.viewers.messages"; //$NON-NLS-1$ public static String PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Platform; public static String PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Workspace; public static String PatternStructureLabelProviderWithTooltip_Tooltip_Message; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { // static initialization. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/PatternStructureLabelProviderWithTooltip.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2163 Text-content-md5: ca7a12a538025aa72d16a119cfb9de03 Text-content-sha1: a44a1e7fc7cdaa798a6a0aba1e7ad3b4c97032ac Content-length: 2208 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers; import org.eclipse.egf.common.constant.IPatternConstants; import org.eclipse.egf.common.descriptor.IDescriptor; import org.eclipse.egf.common.helper.StringHelper; import org.eclipse.egf.common.ui.viewers.AbstractTooltipLabelProvider; /** * A label provider that provides with pattern or pattern library handling.
* Also supports tooltips that display containing FC name, and origin (workspace or platform). * @author Guillaume Brocard */ public class PatternStructureLabelProviderWithTooltip extends AbstractTooltipLabelProvider { /** * Constructor. * @param labelProvider_p */ public PatternStructureLabelProviderWithTooltip() { super(new DefaultPatternStructureLabelProvider()); } /** * @see org.eclipse.egf.common.ui.viewers.AbstractTooltipLabelProvider#getToolTipText(java.lang.Object) */ @Override public String getToolTipText(Object element_p) { IDescriptor descriptor = (IDescriptor) element_p; String containingFcName = (String) descriptor.getValue(IPatternConstants.PATTERN_EXTENSION_CONTAINING_FC_NAME); Boolean fromWorkspace = (Boolean) descriptor.getValue(IPatternConstants.PATTERN_EXTENSION_FROM_WORKSPACE); return StringHelper.formatMessage(Messages.PatternStructureLabelProviderWithTooltip_Tooltip_Message, new Object[] { containingFcName, fromWorkspace.booleanValue() ? Messages.PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Workspace : Messages.PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Platform}); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 10219 Text-content-md5: e5c1b6cc8e1433d09e7d845e7c93c8dc Text-content-sha1: 50ba0c29927ecb8c3a861adfe07fac9a827c0245 Content-length: 10264 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers.explorer; import java.util.Iterator; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.listener.AbstractProjectListener; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentInWorkspace; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSetManager; import org.eclipse.egf.core.ui.viewers.AbstractAdaptedModelElementContentProvider; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.pde.EgfPdeActivator; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.ui.progress.UIJob; /** * Content provider implementation used to display factory components in an "Factory Component Project Explorer" view for instance. * @author fournier */ public class FactoryComponentExplorerContentProvider extends AbstractAdaptedModelElementContentProvider { /** * Reference to a project listener. */ private AbstractProjectListener _projectListener; /** * Constructor. */ public FactoryComponentExplorerContentProvider() { super(); // Used to listen to factory component creation. _projectListener = new ProjectListener(); // Register this content provider as resource change listener on workspace to be notified when projects are added, removed, ... ResourcesPlugin.getWorkspace().addResourceChangeListener(_projectListener); } /** * @see org.eclipse.egf.core.ui.viewers.AbstractAdaptedModelElementContentProvider#getAdapterFactory() */ @Override protected AdapterFactory getAdapterFactory() { return EgfUiActivator.getDefault().getEditingDomain().getAdapterFactory(); } /** * @see org.eclipse.egf.core.ui.viewers.AbstractAdaptedModelElementContentProvider#dispose() */ @Override public void dispose() { super.dispose(); // Unregister this content provider as resource change listener on workspace. ResourcesPlugin.getWorkspace().removeResourceChangeListener(_projectListener); } /** * Return the factory component in workspace. * @return */ protected FactoryComponentInWorkspace getFactoryComponentInWorkspace() { return (FactoryComponentInWorkspace) EgfUiActivator.getDefault().getFactoryComponentInWorkspaceInput(); } /** * Add given project (if it contains a factory component) as a factory component. * @param addedProject_p */ protected void addProject(final IProject addedProject_p) { // Add given project through Job mechanism to ensure the workspace resource tree is not locked by another job. // Indeed, the EgfPdeActivator.getDefault().getFactoryComponent(addedProject_p) call reads data from IFile, and this one can be locked for modifications. // It was typically the case when converting an existing plug-in in a FC. // Ensure execution in the UI Thread. Job job = new UIJob(ICommonConstants.EMPTY_STRING) { /** * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor) */ @SuppressWarnings("synthetic-access") @Override public IStatus runInUIThread(IProgressMonitor monitor_p) { if (null != addedProject_p) { final FactoryComponent factoryComponent = EgfPdeActivator.getDefault().getFactoryComponent(addedProject_p); if (null != factoryComponent) { // Add the newly created factory component to the factory component container. final FactoryComponentInWorkspace factoryComponentInWorkspace = getFactoryComponentInWorkspace(); boolean fcIsAdded = factoryComponentInWorkspace.addFactoryComponent(factoryComponent); // If the factory component is newly added, add it to the viewer. if (fcIsAdded) { // Add it to the the viewer. final AbstractTreeViewer viewer = getViewer(); Object parent = null; Object input = getInitialInput(); if (input instanceof FactoryComponentInWorkspace) { // Project mode is selected. parent = input; } else { // Working set mode is selected, get the working set that hosts this project. parent = ((FactoryComponentWorkingSetManager) input).getParent(addedProject_p); } viewer.add(parent, factoryComponent); // Set the viewer selection on the newly created factory component. viewer.setSelection(new TreeSelection(new TreePath(new Object[] { parent, factoryComponent })), true); } } } return Status.OK_STATUS; } }; job.setPriority(Job.SHORT); job.setSystem(true); // The job won't be run while other threads hold a conflicting rule. job.setRule(addedProject_p); job.schedule(); } /** * Remove given project. * @param removeProject_p */ protected void removeProject(IProject removeProject_p) { if (null != removeProject_p) { FactoryComponentInWorkspace factoryComponentInWorkspace = getFactoryComponentInWorkspace(); Iterator fcs = factoryComponentInWorkspace.getFactoryComponents().iterator(); // Factory component to remove if any. FactoryComponent removedFactoryComponent = null; // Iterate over factory components contained in workspace. while (fcs.hasNext() && (null == removedFactoryComponent)) { FactoryComponent currentFactoryComponent = fcs.next(); IProject currentFactoryComponentProject = ModelHelper.getProject(currentFactoryComponent); // Compare the removed project with the one related to the current factory component. if (currentFactoryComponentProject == removeProject_p) { removedFactoryComponent = currentFactoryComponent; } } // If a factory component to remove is found. if (null != removedFactoryComponent) { // Remove it from the initial input. factoryComponentInWorkspace.removeFactoryComponent(removedFactoryComponent); final FactoryComponent uiFactoryComponentToRemove = removedFactoryComponent; // UI removal operation must be performed into the SWT thread. final AbstractTreeViewer viewer = getViewer(); // Ensure execution in the UI Thread. viewer.getControl().getDisplay().asyncExec(new Runnable() { public void run() { // Remove it from the viewer. viewer.remove(uiFactoryComponentToRemove); } }); } } } /** * Implement a listener to add or remove factory component when the end-user add or remove factory component project. * @author Guillaume Brocard */ class ProjectListener extends AbstractProjectListener { /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectAdded(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectAdded(IProject project_p, IResourceDelta resourceDelta_p) { // Same behavior as project changed. handleProjectChanged(project_p, resourceDelta_p); } /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectChanged(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectChanged(IProject project_p, IResourceDelta resourceDelta_p) { // Get the modified resources in the project. IResourceDelta[] projectFilesResourceDelta = resourceDelta_p.getAffectedChildren(); // Looking for the plug-in file. for (IResourceDelta projectFileResourceDelta : projectFilesResourceDelta) { IResource projectFile = projectFileResourceDelta.getResource(); // If plug-in file is detected, add the project. if (EgfPdeActivator.getDefault().isPluginFile(projectFile)) { addProject(project_p); break; } } } /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectRemoved(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectRemoved(IProject project_p, IResourceDelta resourceDelta_p) { // Remove it ie the related factory component. removeProject(project_p); } /** * @see org.eclipse.egf.common.listener.AbstractProjectListener#handleProjectClosed(org.eclipse.core.resources.IProject, * org.eclipse.core.resources.IResourceDelta) */ @Override protected void handleProjectClosed(IProject project_p, IResourceDelta resourceDelta_p) { // Same behavior as project removed. handleProjectRemoved(project_p, resourceDelta_p); } } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/explorer/FactoryComponentExplorerLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1120 Text-content-md5: 02694477a85af97d43be7ec13a98f895 Text-content-sha1: da83ad137c3c6e033e746436b0552ccb61ca4f78 Content-length: 1165 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers.explorer; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.viewers.AdaptedModelElementLabelProvider; /** * Label provider for the factory components explorer view. * @author Guillaume Brocard */ public class FactoryComponentExplorerLabelProvider extends AdaptedModelElementLabelProvider { /** * Constructor. */ public FactoryComponentExplorerLabelProvider() { super(EgfUiActivator.getDefault().getEditingDomain().getAdapterFactory()); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentContentProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1367 Text-content-md5: be7ba08f0c50b6aa8c60c5a055413ba2 Text-content-sha1: 69e5949ef1cb79df600b23994fb14214d0b6b82d Content-length: 1412 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers.fc; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.viewers.AbstractAdaptedModelElementContentProvider; import org.eclipse.emf.common.notify.AdapterFactory; /** * Content provider implementation used to display factory components in an "Installed Factory Components" view for instance. * @author Guillaume Brocard */ public class InstalledFactoryComponentContentProvider extends AbstractAdaptedModelElementContentProvider { /** * @see org.eclipse.egf.core.ui.viewers.AbstractAdaptedModelElementContentProvider#getAdapterFactory() */ @Override protected AdapterFactory getAdapterFactory() { return EgfUiActivator.getDefault().getEditingDomainInReadOnly().getAdapterFactory(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/fc/InstalledFactoryComponentLabelProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1124 Text-content-md5: a2886d7e1e3442a8b5ba0e919e164fe2 Text-content-sha1: dd66cc15d439857be6f13379a920be73117013a6 Content-length: 1169 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.viewers.fc; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.viewers.AdaptedModelElementLabelProvider; /** * Label provider for the installed factory component view. * @author Guillaume Brocard */ public class InstalledFactoryComponentLabelProvider extends AdaptedModelElementLabelProvider { /** * Constructor. */ public InstalledFactoryComponentLabelProvider() { super(EgfUiActivator.getDefault().getEditingDomainInReadOnly().getAdapterFactory()); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/viewers/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 819 Text-content-md5: c4f71bd0da64d6d4e57b771360611068 Text-content-sha1: c2cd92c87a464033d7cffc10d1013c79fd99d8f9 Content-length: 864 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Platform=platform PatternStructureLabelProviderWithTooltip_Tooltip_LocationName_Workspace=workspace PatternStructureLabelProviderWithTooltip_Tooltip_Message=Contained by FC {0} from the {1}. Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/AbstractModelElementWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 14764 Text-content-md5: 0dbfc98d878fee9690b7bcaf049dea2f Text-content-sha1: 5f6ebe862080d569df5729e72a1c1eb6cd69607b Content-length: 14809 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.common.misc.Couple; import org.eclipse.egf.common.ui.helper.MessageFormatHelper; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.command.ChangeRecorderWrapperCommand; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.EMap; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.change.ChangeDescription; import org.eclipse.emf.ecore.change.FeatureChange; import org.eclipse.emf.ecore.change.util.ChangeRecorder; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.Wizard; /** * Base class to implement wizards to create or edit EGF model element objects. * @author fournier */ public abstract class AbstractModelElementWizard extends Wizard { /** * Change recorder used to listen to model element changes. */ private ChangeRecorder _changeRecorder; /** * Parent of edited or created model element object. */ private EObject _parent; /** * Model element object displayed in this page. */ private NamedModelElementWithId _modelElement; /** * Is the displayed object created when finishing ? */ private boolean _isInCreationMode; /** * Is the wizard in read only mode : true means data can not be changed. */ private boolean _isInReadOnly; /** * Wizard description. */ private String _description; /** * ChangeDescription resulting from listening changes on the object handled by the wizard. */ private ChangeDescription _changeDescription; /** * Constructor.
* Both parameters can not be null at the same time. * @param parent_p model element used as parent of given model element can NOT be null. * @param modelElement_p the model element to display, can not be null if readOnly is set to true * @param readOnlyMode_p Whether or not the wizard is in read only mode : data can not be changed. */ protected AbstractModelElementWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { _isInReadOnly = readOnlyMode_p; initialize(parent_p, modelElement_p); } /** * Initialization of the wizard. * @param parent_p * @param modelElement_p */ private void initialize(EObject parent_p, NamedModelElementWithId modelElement_p) { // Precondition if (null == parent_p) { throw new IllegalArgumentException("Argument parent_p can not be null"); //$NON-NLS-1$ } // Set Parent object. _parent = parent_p; // Set model element that this wizard is open for. _modelElement = modelElement_p; // If the wizard is NOT in read only, handle creation or edit mode. if (!_isInReadOnly) { // If given model element is null, this wizard is in creation mode. if (null == _modelElement) { // Create an empty model element for this wizard. _modelElement = doCreateModelElement(); // Set the creation mode. _isInCreationMode = true; } else { // This wizard is in edit mode. // Listening changes on model element when editing model element. startChangesRecording(_modelElement); } } // Handle description. handleWizardDescription(); // Get the image descriptor if provided. ImageDescriptor wizardDefaultPageImage = getWizardDefaultPageImageDescriptor(); // Set it if provided. if (null != wizardDefaultPageImage) { setDefaultPageImageDescriptor(wizardDefaultPageImage); } } /** * Create concrete model element. * @return a not null {@link NamedModelElementWithId} object. */ protected abstract NamedModelElementWithId doCreateModelElement(); /** * Returns the description when this wizard creates the displayed object. * @return a not null {@link String} instance. */ protected abstract String getCreationDescription(); /** * Returns the description when this wizard modifies the displayed object. * @return a not null {@link String} instance. */ protected abstract String getEditDescription(); /** * Returns the title message of this wizard. * @return */ protected abstract String getTitle(); /** * Handle wizard description between the creation and edit modes. */ private void handleWizardDescription() { if (_isInCreationMode) { _description = getCreationDescription(); } else { _description = getEditDescription(); } } /** * Start model element changes recording. * @param modelElement_p */ protected void startChangesRecording(EObject modelElement_p) { _changeRecorder = new ChangeRecorder(modelElement_p) { /** * @see org.eclipse.emf.ecore.change.util.BasicChangeRecorder#eliminateEmptyChanges() */ @Override protected void eliminateEmptyChanges() { // Due to the way data are lazy loaded, the super method can eliminate right changes. // For instance : a contract element with contract element references not loaded (EReference is null). // When the page is created contract element references are loaded (EReference is not null and contains data), the change recorder detects that. // Now let's imagine the end-user changed its mind: he changes the contract element nature to a self-describing contract element. // The related contract element references are cleared, the change recorder detects that. // The state of this reference is the same as the one at display time. // Then the ChangeRecorder thinks its an unnecessary change when it computes the change description. // Do nothing prevents from this behavior. } }; } /** * End model element changes recording. * @return */ protected ChangeDescription endChangesRecording() { ChangeDescription changeDescription = _changeRecorder.endRecording(); // Clean stuff. _changeRecorder.dispose(); return changeDescription; } /** * @see org.eclipse.jface.wizard.Wizard#performCancel() */ @Override public boolean performCancel() { // If the wizard is NOT in read only, handle creation or edit mode. if (!_isInReadOnly) { // Handle cancellation in creation or edit mode. if (_isInCreationMode) { _modelElement = null; _parent = null; } else { // Change recorder is only used in modification mode. ChangeDescription changes = endChangesRecording(); // null if there is nothing being recorded. if (null != changes) { // Revert the potential changes made. changes.applyAndReverse(); } } } return super.performCancel(); } /** * @see org.eclipse.jface.wizard.Wizard#performFinish() */ @Override public boolean performFinish() { boolean result = true; // This method can only be called when the wizard is not in read only mode. // If the wizard is in creation mode, add the created factory component invocation to its parent. if (_isInCreationMode) { Command command = getAddCommandForCreatedElement(getEditingDomain(), _parent, _modelElement); executeCommand(command); } else { // Modification mode : end recording. _changeDescription = endChangesRecording(); result = handleChangeDescription(); } return result; } /** * @see org.eclipse.jface.wizard.Wizard#canFinish() */ @Override public final boolean canFinish() { // In read only mode, we can not finish a wizard. boolean canFisnish = !_isInReadOnly; if (canFisnish) { canFisnish = handleCanFinish(); } return canFisnish; } /** * Handle the canFinish condition in wizard mode (Read only or not) context. * @return true means ({@link #performFinish()} method can be called); false otherwise. */ protected boolean handleCanFinish() { // Default behavior is the one from the method Wizard.canFinish. return super.canFinish(); } /** * Get the command responsible of adding the created element to given parent when performing finish. * @param parent_p */ protected abstract Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p); /** * Handle change description. */ protected boolean handleChangeDescription() { // Get the change description. ChangeDescription changes = getChangeDescription(); // Check if changes were performed ? if (containsChanges(changes)) { // Modified object. EObject modifiedObject = getModelElement(); Couple modifiedFeature = getModifiedFeature(changes, modifiedObject); EStructuralFeature feature = modifiedFeature.getKey(); Object value = modifiedFeature.getValue(); // Get the editing domain. AdapterFactoryEditingDomain editingDomain = getEditingDomain(); // Create the command to forward changes. ChangeRecorderWrapperCommand command = new ChangeRecorderWrapperCommand(changes, editingDomain, modifiedObject, feature, value); // Set the plug-in change command. command.setPluginChangeCommand(getPluginChangeCommand(editingDomain, modifiedObject, feature, value)); // Run a command to forward changes on plug-in file. executeCommand(command); } return true; } /** * Return whether or not specified change description contains changes. * @param changes_p * @return */ protected boolean containsChanges(ChangeDescription changes_p) { boolean result = false; // Precondition. if (null != changes_p) { // Get all changes on the model element object. EMap> objectChanges = changes_p.getObjectChanges(); result = !objectChanges.isEmpty(); } return result; } /** * Get the modified feature with its new value from specified change description and given object. * @param changes_p * @param modifiedObject_p * @return a not null object, key is the modified feature and the value is the new feature value. */ protected Couple getModifiedFeature(ChangeDescription changes_p, EObject modifiedObject_p) { // Get all changes on the model element object. EMap> objectChanges = changes_p.getObjectChanges(); // Get changes made on the parent. EList objectChangeList = objectChanges.get(modifiedObject_p); // First feature change. FeatureChange featureChange = objectChangeList.get(0); // Feature EStructuralFeature feature = featureChange.getFeature(); // New value Object value = featureChange.getValue(); return new Couple(feature, value); } /** * Execute given command. * @param command_p */ private void executeCommand(Command command_p) { getEditingDomain().getCommandStack().execute(command_p); } /** * Get the editing domain. * @return */ private AdapterFactoryEditingDomain getEditingDomain() { AdapterFactoryEditingDomain result = isInReadOnlyMode() ? EgfUiActivator.getDefault().getEditingDomainInReadOnly() : EgfUiActivator.getDefault().getEditingDomain(); return result; } /** * Get the plugin change command. * @param editingDomain_p * @param modelElement_p * @param feature_p * @param value_p * @return */ protected abstract PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p); /** * @see org.eclipse.jface.wizard.Wizard#addPages() */ @Override public void addPages() { String[] arguments = new String[2]; if (_isInCreationMode) { arguments[0] = Messages.CreationWizard_Prefix; } else { arguments[0] = Messages.EditWizard_Prefix; } // set the wizard title arguments[1] = getTitle(); // Create the composed title. String titleMessage = MessageFormatHelper.formatMessage(Messages.Wizard_Title, arguments); // Set the wizard title. setWindowTitle(titleMessage); } /** * Get the change recorder that listens to model element changes. * @return the changeRecorder */ protected ChangeRecorder getChangeRecorder() { return _changeRecorder; } /** * Get the model element object handled by this wizard. * @return a not null model element. */ public NamedModelElementWithId getModelElement() { return _modelElement; } /** * Get the wizard description. * @return the description */ public String getDescription() { return _description; } /** * Return the change description when perform finish is called. * @return the changeDescription */ protected ChangeDescription getChangeDescription() { return _changeDescription; } /** * Get the parent object of the handled model element. * @return the parent */ public EObject getParent() { return _parent; } /** * Whether or not this wizard is in read only. * @return true means data can not be changed. */ public boolean isInReadOnlyMode() { return _isInReadOnly; } /** * Get the wizard default image.
* Recommended image size is 75x66. * @return null means no image set on the wizard. */ protected ImageDescriptor getWizardDefaultPageImageDescriptor() { // Do nothing. return null; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/AbstractPatternLibraryWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5917 Text-content-md5: a56a81ba22215ccc4fb31e1bf37bca28 Text-content-sha1: 700f842765c3ffaec0c0404ad6cf2677792e1b57 Content-length: 5962 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.IImageKeys; import org.eclipse.egf.core.ui.wizard.page.PatternLibraryProductionSequenceWizardPage; import org.eclipse.egf.core.ui.wizard.page.PatternLibraryRuntimeSequenceWizardPage; import org.eclipse.egf.core.ui.wizard.page.PatternLibraryWizardPage; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.library.SetPatternLibraryWrapperCommand; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizardPage; /** * Base class to implement a wizard to create a pattern library. * @author Guillaume Brocard */ public abstract class AbstractPatternLibraryWizard extends AbstractModelElementWizard { /** * Constant used to identify the production orchestration wizard page. */ public static final String PATTERN_LIBRARY_PRODUCTION_SEQUENCE_PAGE = "patternLibraryProductionSequenceWizardPage"; //$NON-NLS-1$ /** * Constant used to identify the runtime orchestration wizard page. */ public static final String PATTERN_LIBRARY_RUNTIME_SEQUENCE_PAGE = "patternLibraryRuntimeSequenceWizardPage"; //$NON-NLS-1$ /** * Is this wizard open to create a new pattern library or edit an existing one ? */ private boolean _creationMode; /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p * @param creationMode_p true means this wizard is used to create a new pattern library. */ public AbstractPatternLibraryWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p, boolean creationMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); _creationMode = creationMode_p; // Force to have the next and previous button setForcePreviousAndNextButtons(true); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); // Add the pattern library page. addPage(new PatternLibraryWizardPage("patternLibraryWizardPage"));//$NON-NLS-1$ // Other pages are lazy loaded because there are optional. } /** * @see org.eclipse.jface.wizard.Wizard#getPage(java.lang.String) */ @Override public IWizardPage getPage(String name) { IWizardPage page = super.getPage(name); // Precondition : it is useless to go further, the requested page is found. if (null != page) { return page; } // The page is not created, let's do it. if (PATTERN_LIBRARY_PRODUCTION_SEQUENCE_PAGE.equals(name)) { // Create the page. page = new PatternLibraryProductionSequenceWizardPage(PATTERN_LIBRARY_PRODUCTION_SEQUENCE_PAGE); } else if (PATTERN_LIBRARY_RUNTIME_SEQUENCE_PAGE.equals(name)) { // Create the page. page = new PatternLibraryRuntimeSequenceWizardPage(PATTERN_LIBRARY_RUNTIME_SEQUENCE_PAGE); } // Finally, add the page. addPage(page); return page; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { return ModelFactory.eINSTANCE.createPatternLibrary(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { return new SetPatternLibraryWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.PatternLibraryWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.PatternLibraryWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.PatternLibraryWizard_Title; } /** * Is this wizard open to create a new pattern library or edit an existing one ? * @return */ public boolean isInCreationMode() { return _creationMode; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getWizardDefaultPageImageDescriptor() */ @Override protected ImageDescriptor getWizardDefaultPageImageDescriptor() { return EgfUiActivator.getDefault().getImageDescriptor(IImageKeys.IMG_WIZARD_PATTERN_LIBARY); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/ContextElementWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6477 Text-content-md5: ee59ec5230d8eb0840f83c505e3ada00 Text-content-sha1: 38b9d0ebc008b3d2cd93fb83f67af75331a66651 Content-length: 6522 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.core.ui.wizard.page.ContextElementKeyWizardPage; import org.eclipse.egf.core.ui.wizard.page.ContextElementReferenceWizardPage; import org.eclipse.egf.core.ui.wizard.page.ContextElementValueWizardPage; import org.eclipse.egf.core.ui.wizard.page.ContextElementWizardPage; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.context.SetContextElementWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.wizard.IWizardPage; /** * This wizard allows the end-user to edit a context element. * @author fournier */ public class ContextElementWizard extends AbstractModelElementWizard { /** * Constant used to identify the context element key wizard page. */ public static final String CONTEXT_ELEMENT_KEY_PAGE = "contextElementKeyPage"; //$NON-NLS-1$ /** * Constant used to identify the context element reference wizard page. */ public static final String CONTEXT_ELEMENT_REFERENCE_PAGE = "contextElementReferencePage"; //$NON-NLS-1$ /** * Constant used to identify the context element value wizard page. */ public static final String CONTEXT_ELEMENT_VALUE_PAGE = "contextElementValuePage"; //$NON-NLS-1$ /** * Constant used to identify the context element wizard page. */ protected static final String CONTEXT_ELEMENT_FIRST_PAGE = "contextElementPage"; //$NON-NLS-1$ /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public ContextElementWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); // Force to have the next and previous button setForcePreviousAndNextButtons(true); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); // Add the first page. Next pages are lazy created. addPage(new ContextElementWizardPage(CONTEXT_ELEMENT_FIRST_PAGE)); } /** * @see org.eclipse.jface.wizard.Wizard#getPage(java.lang.String) */ @Override public IWizardPage getPage(String name_p) { IWizardPage page = super.getPage(name_p); // Precondition : it is useless to go further, the requested page is found. if (null != page) { return page; } // The page is not created, let's do it. if (CONTEXT_ELEMENT_KEY_PAGE.equals(name_p)) { // Create the page. page = new ContextElementKeyWizardPage(CONTEXT_ELEMENT_KEY_PAGE); } else if (CONTEXT_ELEMENT_REFERENCE_PAGE.equals(name_p)) { // Create the page. page = new ContextElementReferenceWizardPage(CONTEXT_ELEMENT_REFERENCE_PAGE); } else if (CONTEXT_ELEMENT_VALUE_PAGE.equals(name_p)) { // Create the page. page = new ContextElementValueWizardPage(CONTEXT_ELEMENT_VALUE_PAGE); } // Finally, add the page. addPage(page); return page; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#handleCanFinish() */ @Override protected boolean handleCanFinish() { // Can only finish if the active page is complete. return getContainer().getCurrentPage().isPageComplete(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { return ModelFactory.eINSTANCE.createContextElement(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the context element to its parent : ie a context. return AddCommand.create(editingDomain_p, parent_p, ModelPackage.Literals.CONTEXT__CONTEXT_ELEMENTS, createdElement_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.ContextElementWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.ContextElementWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { return new SetContextElementWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.ContextElementWizard_Title; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/ContractElementWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 7367 Text-content-md5: 83aa486ea8c4a3f19c91897bc8342c17 Text-content-sha1: 48849d238ce1335c4cfeea228f16d76c634795da Content-length: 7412 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.core.ui.wizard.page.ContractElementReferenceWizardPage; import org.eclipse.egf.core.ui.wizard.page.ContractElementTypeWizardPage; import org.eclipse.egf.core.ui.wizard.page.ContractElementWizardPage; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.contract.SetContractElementWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.wizard.IWizardPage; /** * This wizard allows the end-user to create or edit a contract element. * @author fournier */ public class ContractElementWizard extends AbstractModelElementWizard { /** * Constant used to identify the contract element type wizard page. */ public static final String CONTRACT_ELEMENT_TYPE_PAGE = "contractElementTypePage"; //$NON-NLS-1$ /** * Constant used to identify the contract element reference wizard page. */ public static final String CONTRACT_ELEMENT_REFERENCE_PAGE = "contractElementReferencePage"; //$NON-NLS-1$ /** * Constant used to identify the contract element wizard page. */ protected static final String CONTRACT_ELEMENT_FIRST_PAGE = "contractElementPage"; //$NON-NLS-1$ /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public ContractElementWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); // Force to have the next and previous button setForcePreviousAndNextButtons(true); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); // Add the first page. addPage(new ContractElementWizardPage(CONTRACT_ELEMENT_FIRST_PAGE)); } /** * @see org.eclipse.jface.wizard.Wizard#getPage(java.lang.String) */ @Override public IWizardPage getPage(String name_p) { IWizardPage page = super.getPage(name_p); // Precondition : it is useless to go far away, the requested page is found. if (null != page) { return page; } // The page is not created, let's do it. if (CONTRACT_ELEMENT_TYPE_PAGE.equals(name_p)) { // Create the page. page = new ContractElementTypeWizardPage(CONTRACT_ELEMENT_TYPE_PAGE); } else if (CONTRACT_ELEMENT_REFERENCE_PAGE.equals(name_p)) { // Create the page. page = new ContractElementReferenceWizardPage(CONTRACT_ELEMENT_REFERENCE_PAGE); } // Finally, add the page. addPage(page); return page; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#handleCanFinish() */ @Override protected boolean handleCanFinish() { // Can only finish if the active second page is complete. return getContainer().getCurrentPage().isPageComplete(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#performFinish() */ @Override public boolean performFinish() { ContractElement contractElement = (ContractElement) getModelElement(); // Check which page was used to complete the wizard. IWizardPage completingPage = getContainer().getCurrentPage(); if (completingPage == getPage(CONTRACT_ELEMENT_TYPE_PAGE)) { // Remove all potential contract element references. // Do not remove contract element reference ids, because we have to destroy previously persisted ones. // This attribute will be reset later (cf AbstractContractWrapperCommand#handleContractElementReferences(..)). contractElement.getContractElementReferences().clear(); } return super.performFinish(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { ContractElement createdContractElement = ModelFactory.eINSTANCE.createContractElement(); // Set contract element factory component id to its parent id. // No field editor can set the factory component id value. FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer((NamedModelElementWithId) getParent()); createdContractElement.setFactoryComponentId(fcContainer.getId()); return createdContractElement; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the contract element to its parent : ie a contract. return AddCommand.create( editingDomain_p, parent_p, ModelPackage. Literals.CONTRACT__CONTRACT_ELEMENTS, createdElement_p ); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.ContractElementWizard_Title; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.ContractElementWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.ContractElementWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand( EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p ) { return new SetContractElementWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/EditDomainWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4605 Text-content-md5: aa7051aa91852a4fecad4204434b7a80 Text-content-sha1: 7846c8f53e3e1c0446691f43b6541facc9387ba3 Content-length: 4650 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.IImageKeys; import org.eclipse.egf.core.ui.wizard.page.EditDomainWizardPage; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.fc.SetFactoryComponentWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.resource.ImageDescriptor; /** * This wizard allows the end-user to edit a domain. * @author fournier */ public class EditDomainWizard extends AbstractModelElementWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public EditDomainWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); addPage(new EditDomainWizardPage("editDomainWizardPage")); //$NON-NLS-1$ } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { // Do nothing because a domain is always created but its path can be null if not defined. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Do nothing. Domain is is always created. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { // Do nothing. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.DomainWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { // Set a command to modify plug-in xml : the domain path is contained by the factoryComponent extension. // Let's modify it. FactoryComponent fcContainer = (FactoryComponent) getParent(); return new SetFactoryComponentWrapperCommand(editingDomain_p, fcContainer, ModelPackage.Literals.FACTORY_COMPONENT__DOMAIN, getModelElement()); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.DomainWizard_Title; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getWizardDefaultPageImageDescriptor() */ @Override protected ImageDescriptor getWizardDefaultPageImageDescriptor() { return EgfUiActivator.getDefault().getImageDescriptor(IImageKeys.IMG_WIZARD_DOMAIN); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/EditFactoryComponentWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3947 Text-content-md5: 72bb768a5290922e4ce3795828d54d18 Text-content-sha1: b03e1c1568e04b16b12e6091efaada6f5b6b27ff Content-length: 3992 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.core.ui.wizard.page.EditFactoryComponentWizardPage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.fc.SetFactoryComponentWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; /** * This wizard allows the end-user to edit a factory component. * @author fournier */ public class EditFactoryComponentWizard extends AbstractModelElementWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public EditFactoryComponentWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); addPage(new EditFactoryComponentWizardPage("factoryComponentWizardPage")); //$NON-NLS-1$ } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { // Do nothing because a factory component is never created from this wizard. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Do nothing. FactoryComponent is not created here. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { // Do nothing because an is never created from this wizard. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.EditFactoryComponentWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { return new SetFactoryComponentWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.EditFactoryComponentWizard_Title; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/FactoryComponentInvocationWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5849 Text-content-md5: 3b7b12e0a44d40b959346bed797bab8c Text-content-sha1: c12e70d4451b438a049e4c55ad8c6b9508f937bc Content-length: 5894 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.common.misc.Couple; import org.eclipse.egf.core.ui.wizard.page.FactoryComponentInvocationWizardPage; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.fci.SetFactoryComponentInvocationWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.change.ChangeDescription; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.dialogs.MessageDialog; /** * This wizard allows the end-user to create or edit a factory component invocation. * @author fournier */ public class FactoryComponentInvocationWizard extends AbstractModelElementWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public FactoryComponentInvocationWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); addPage(new FactoryComponentInvocationWizardPage("factoryComponentInvocationWizardPage")); //$NON-NLS-1$ } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { return ModelFactory.eINSTANCE.createFactoryComponentInvocation(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.FactoryComponentInvocationWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.FactoryComponentInvocationWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.ecore.EObject, * org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the factory component invocation to its parent : a production plan. return AddCommand.create(editingDomain_p, parent_p, ModelPackage.Literals.PRODUCTION_PLAN__FACTORY_COMPONENT_INVOCATIONS, createdElement_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { return new SetFactoryComponentInvocationWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.FactoryComponentInvocationWizard_Title; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#handleChangeDescription() */ @Override protected boolean handleChangeDescription() { boolean cr = super.handleChangeDescription(); ChangeDescription changeDescription = getChangeDescription(); if (containsChanges(changeDescription)) { // If the referenced FC was changed with existing context elements, let's warn the end-user that existing context elements are not valid. // Get current factory component invocation. FactoryComponentInvocation fcInvocation = (FactoryComponentInvocation) getModelElement(); // Get current factory component invocation context. Context context = fcInvocation.getContext(); if (null != context) { // Context is declared, check if context elements exist ? if (!context.getContextElements().isEmpty()) { Couple modifiedFeature = getModifiedFeature(changeDescription, fcInvocation); if (ModelPackage.Literals.FACTORY_COMPONENT_INVOCATION__FACTORY_COMPONENT_ID.equals(modifiedFeature.getKey())) { MessageDialog.openWarning(getShell(), Messages.FactoryComponentInvocationWizard_WarnDialog_Title, Messages.FactoryComponentInvocationWizard_WarnDialog_Message); } } } } return cr; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/MappingWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4516 Text-content-md5: b104e0dba802d73481756e7f22511e82 Text-content-sha1: 5f629d96e3786ccc08a3b04da03a63f8902c04cb Content-length: 4561 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.IImageKeys; import org.eclipse.egf.core.ui.wizard.page.MappingWizardPage; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.mapping.SetMappingWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.resource.ImageDescriptor; /** * This wizard allows the end-user to create a mapping. * @author Guillaume Brocard */ public class MappingWizard extends AbstractModelElementWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public MappingWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); // Add the mapping page. addPage(new MappingWizardPage("mappingWizardPage"));//$NON-NLS-1$ } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { return ModelFactory.eINSTANCE.createMappingModel(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the mapping model to its parent : ie a mapping viewpoint. return AddCommand.create(editingDomain_p, parent_p, ModelPackage.Literals.MAPPING_VIEWPOINT__MAPPINGS, createdElement_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.MappingWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.MappingWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { return new SetMappingWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.MappingWizard_Title; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getWizardDefaultPageImageDescriptor() */ @Override protected ImageDescriptor getWizardDefaultPageImageDescriptor() { return EgfUiActivator.getDefault().getImageDescriptor(IImageKeys.IMG_WIZARD_MAPPING); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 8869 Text-content-md5: a1cda4d037386466718ec790ac87864e Text-content-sha1: da23706cfc28dda2f6e050f7ee123cc98de9bc72 Content-length: 8914 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.osgi.util.NLS; /** * I18n translation helper for wizards. * @author fournier */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.wizard.messages"; //$NON-NLS-1$ public static String CreationWizard_Prefix; public static String EditWizard_Prefix; public static String Wizard_Title; public static String WizardPage_Description_Title; public static String WizardPage_Description_Tooltip; // Edit FactoryComponent wizard messages. public static String EditFactoryComponentWizard_EditDescription_Message; public static String EditFactoryComponentWizard_Title; public static String EditFactoryComponentWizardPage_Title; public static String EditFactoryComponentWizardPage_Name_Title; public static String EditFactoryComponentWizardPage_Name_Tooltip; public static String EditFactoryComponentWizardPage_Name_ErrorMessage; // FactoryComponent configuration wizard messages. public static String FactoryComponentInvocationWizard_CreateDescription_Message; public static String FactoryComponentInvocationWizard_EditDescription_Message; public static String FactoryComponentInvocationWizard_Title; public static String FactoryComponentInvocationWizardPage_Title; public static String FactoryComponentInvocationWizardPage_Name_Title; public static String FactoryComponentInvocationWizardPage_Name_Tooltip; public static String FactoryComponentInvocationWizardPage_Name_ErrorMessage; public static String FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Title; public static String FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Tooltip; public static String FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_ErrorMessage; public static String FactoryComponentInvocationWizard_WarnDialog_Title; public static String FactoryComponentInvocationWizard_WarnDialog_Message; // Task factory holder messages. public static String TaskFactoryHolderWizard_CreateDescription_Message; public static String TaskFactoryHolderWizard_EditDescription_Message; public static String TaskFactoryHolderWizard_Title; public static String TaskFactoryHolderWizardPage_Title; public static String TaskFactoryHolderWizardPage_Class_Title; public static String TaskFactoryHolderWizardPage_OpenTypeDialog_Title; // Contract element messages. public static String ContractElementWizard_CreateDescription_Message; public static String ContractElementWizard_EditDescription_Message; public static String ContractElementWizard_Title; public static String ContractElementWizardPage_Title; public static String ContractElementWizardPage_Key_Title; public static String ContractElementWizardPage_Key_Tooltip; public static String ContractElementWizardPage_Key_ErrorMessage; public static String ContractElementWizardPage_TypeGroup_Title; public static String ContractElementWizardPage_TypeGroup_Type; public static String ContractElementWizardPage_TypeGroup_Reference; public static String ContractElementWizardPage_OptionsGroup_Title; public static String ContractElementWizardPage_OptionsGroup_Mandatory_Title; public static String ContractElementWizardPage_OptionsGroup_Mandatory_Tooltip; public static String ContractElementTypeWizardPage_Class_Title; public static String ContractElementTypeWizardPage_ErrorMessage_1; public static String ContractElementTypeWizardPage_ErrorMessage_2; public static String ContractElementTypeWizardPage_OpenTypeDialog_Title; // Domain element messages. public static String DomainWizard_CreateDescription_Message; public static String DomainWizard_EditDescription_Message; public static String DomainWizard_Title; public static String DomainWizardPage_Title; public static String NewDomainWizardPage_Package_Title; public static String NewDomainWizardPage_Package_Tooltip; public static String NewDomainWizardPage_Package_ErrorMessage; public static String NewDomainWizardPage_Domain_Title; public static String NewDomainWizardPage_Domain_Tooltip; public static String NewDomainWizardPage_Domain_ErrorMessage; public static String NewDomainWizardPage_CreateDomain_Title; public static String NewDomainWizardPage_CreateDomain_Tooltip; public static String EditDomainWizardPage_OpenResourceDialog_Title; // Context Element messages. public static String ContextElementWizard_CreateDescription_Message; public static String ContextElementWizard_EditDescription_Message; public static String ContextElementWizard_Title; public static String ContextElementWizardPage_Title; public static String ContextElementWizardPage_Group_Key; public static String ContextElementWizardPage_Group_Reference; public static String ContextElementWizardPage_Key_Title; public static String ContextElementWizardPage_Key_Tooltip; public static String ContextElementWizardPage_Key_ErrorMessage; public static String ContextElementKeyWizardPage_Type_Title; public static String ContextElementKeyWizardPage_OpenTypeDialog_Title; public static String ContextElementValueWizardPage_Type_Title; public static String ContextElementValueWizardPage_Type_Tooltip; public static String ContextElementValueWizardPage_Value_Title; public static String ContextElementValueWizardPage_OpenValueTypeDialog_Title; public static String ContextElementValueWizardPage_ErrorMessage_EmtpyValue; public static String ContextElementValueWizardPage_ErrorMessage_NotValidValue; public static String ContextElementValueWizardPage_ErrorMessage_NotValidJavaValue; // Pattern library messages. public static String PatternLibraryWizard_Title; public static String PatternLibraryWizard_CreateDescription_Message; public static String PatternLibraryWizard_EditDescription_Message; public static String PatternLibraryWizardPage_Title; public static String PatternLibraryWizardPage_Name_Title; public static String PatternLibraryWizardPage_Name_Tooltip; public static String PatternLibraryWizardPage_Name_ErrorMessage; public static String PatternLibraryProductionSequenceWizardPage_Title; public static String PatternLibraryRuntimeSequenceWizardPage_Title; public static String AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Title; public static String AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Message; // Pattern messages. public static String PatternWizard_Title; public static String PatternWizard_CreateDescription_Message; public static String PatternWizard_EditDescription_Message; public static String PatternWizardPage_Title; public static String PatternWizardPage_Name_Title; public static String PatternWizardPage_Name_Tooltip; public static String PatternWizardPage_Name_ErrorMessage; public static String PatternElementValidator_Name_Already_Used_ErrorMessage; public static String PatternElementValidator_Sibling_EndMessage; // Mapping messages. public static String MappingWizard_Title; public static String MappingWizard_CreateDescription_Message; public static String MappingWizard_EditDescription_Message; public static String MappingWizardPage_Title; public static String MappingWizardPage_Id_Title; public static String MappingWizardPage_Id_Tooltip; public static String MappingWizardPage_Id_ErrorMessage; public static String MappingWizardPage_Name_Title; public static String MappingWizardPage_Name_Tooltip; public static String MappingWizardPage_Name_ErrorMessage; public static String MappingWizardPage_FcAsSource_Title; public static String MappingWizardPage_FcAsSource_Tooltip; public static String MappingWizardPage_FcAsSource_ErrorMessage; public static String MappingWizardPage_FcAsTarget_Title; public static String MappingWizardPage_FcAsTarget_Tooltip; public static String MappingWizardPage_FcAsTarget_ErrorMessage; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/NewDomainWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5010 Text-content-md5: 9486e3f3b66986795479f090f6efcedf Text-content-sha1: 6a87e5f7383bb8ba96832e39b81b2ed0700a1ebf Content-length: 5055 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.common.ui.helper.MessageFormatHelper; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.IImageKeys; import org.eclipse.egf.core.ui.wizard.page.NewDomainWizardPage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.domain.SetDomainWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.resource.ImageDescriptor; /** * This wizard allows the end-user to edit a domain. * @author fournier */ public class NewDomainWizard extends AbstractModelElementWizard { /** * Page that allows the end-user to enter data needed to create the domain. */ private NewDomainWizardPage _newDomainWizardPage; /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public NewDomainWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { // Override behavior from the super class. // Domain creation is slightly different from other model elements. // Create the composed title. String titleMessage = MessageFormatHelper.formatMessage(Messages.Wizard_Title, new String[] { Messages.CreationWizard_Prefix, getTitle() }); // Set the wizard title. setWindowTitle(titleMessage); // Add pages. _newDomainWizardPage = new NewDomainWizardPage("newDomainWizardPage"); //$NON-NLS-1$ addPage(_newDomainWizardPage); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { // Do nothing. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Do nothing. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.DomainWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.DomainWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { SetDomainWrapperCommand command = null; String rootPackage = _newDomainWizardPage.getRootPackage(); command = new SetDomainWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); // Set the root package name. command.setRootPackageForDomain(rootPackage); return command; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.DomainWizard_Title; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getWizardDefaultPageImageDescriptor() */ @Override protected ImageDescriptor getWizardDefaultPageImageDescriptor() { return EgfUiActivator.getDefault().getImageDescriptor(IImageKeys.IMG_WIZARD_DOMAIN); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/PatternLibraryWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2130 Text-content-md5: 69a02fb3b1f56417828db88835316b0d Text-content-sha1: c0f1c4880a8a7f5dad68e26849fd4bd8c7e24b9a Content-length: 2175 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; /** * This wizard allows the end-user to create or edit a pattern library as a child of another one. * @author Guillaume Brocard */ public class PatternLibraryWizard extends AbstractPatternLibraryWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p * @param creationMode_p */ public PatternLibraryWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p, boolean creationMode_p) { super(parent_p, modelElement_p, readOnlyMode_p, creationMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the pattern library to its parent : ie a pattern library. return AddCommand.create(editingDomain_p, parent_p, ModelPackage.Literals.PATTERN_LIBRARY__PATTERN_ELEMENTS, createdElement_p); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/PatternWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4684 Text-content-md5: ea0e3ef1d1f1d08d66f1b7af92dd84b8 Text-content-sha1: 3e87dae57149ca8adac60f3994d0387d1e73aad1 Content-length: 4729 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.common.helper.PatternHelper; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.IImageKeys; import org.eclipse.egf.core.ui.wizard.page.PatternWizardPage; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.resource.ImageDescriptor; /** * This wizard allows the end-user to create a pattern. * @author Guillaume Brocard */ public class PatternWizard extends AbstractModelElementWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public PatternWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); // Add the pattern page. addPage(new PatternWizardPage("patternWizardPage"));//$NON-NLS-1$ } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { PatternModel createdPattern = ModelFactory.eINSTANCE.createPatternModel(); // Set a newly generated full id based on the the id of the parent library. createdPattern.setId( PatternHelper.getFullId( ((NamedModelElementWithId) getParent()).getId(), PatternHelper.generatePatternUID() ) ); return createdPattern; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the pattern to its parent : ie a pattern library. return AddCommand.create( editingDomain_p, parent_p, ModelPackage.Literals.PATTERN_LIBRARY__PATTERN_ELEMENTS, createdElement_p ); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.PatternWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.PatternWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { // Pattern can not be edited. return null; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.PatternWizard_Title; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getWizardDefaultPageImageDescriptor() */ @Override protected ImageDescriptor getWizardDefaultPageImageDescriptor() { return EgfUiActivator.getDefault().getImageDescriptor(IImageKeys.IMG_WIZARD_PATTERN_MODEL); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/RootPatternLibraryWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2203 Text-content-md5: e8c8d07f54187c3cbd18b508467ae416 Text-content-sha1: ed9a00ed4157dfb0566de02b7dd8e61819a63255 Content-length: 2248 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; /** * This wizard allows the end-user to create or edit a 'root' pattern library.
* A 'root' pattern library is a library which has a pattern viewpoint as parent. * @author Guillaume Brocard */ public class RootPatternLibraryWizard extends AbstractPatternLibraryWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p * @param creationMode_p */ public RootPatternLibraryWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p, boolean creationMode_p) { super(parent_p, modelElement_p, readOnlyMode_p, creationMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the pattern library to its parent : ie a pattern viewpoint. return AddCommand.create(editingDomain_p, parent_p, ModelPackage.Literals.PATTERN_VIEWPOINT__LIBRARIES, createdElement_p); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/TaskFactoryHolderWizard.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4185 Text-content-md5: 11819782eda413680506073a7284c8f2 Text-content-sha1: 34b2bacfb0cba77493b676a20ee20648e2d6c4c5 Content-length: 4230 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard; import org.eclipse.egf.core.ui.wizard.page.TaskFactoryHolderWizardPage; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.edit.command.plugin.PluginChangeWrapperCommand; import org.eclipse.egf.model.edit.command.plugin.taskfactory.SetTaskFactoryHolderWrapperCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; /** * This wizard allows the end-user to create or edit an task factory holder. * @author fournier */ public class TaskFactoryHolderWizard extends AbstractModelElementWizard { /** * Constructor. * @param parent_p * @param modelElement_p * @param readOnlyMode_p */ public TaskFactoryHolderWizard(EObject parent_p, NamedModelElementWithId modelElement_p, boolean readOnlyMode_p) { super(parent_p, modelElement_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#addPages() */ @Override public void addPages() { super.addPages(); addPage(new TaskFactoryHolderWizardPage("taskFactoryHolderWizardPage")); //$NON-NLS-1$ } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#doCreateModelElement() */ @Override protected NamedModelElementWithId doCreateModelElement() { return ModelFactory.eINSTANCE.createTaskFactoryHolder(); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getCreationDescription() */ @Override protected String getCreationDescription() { return Messages.TaskFactoryHolderWizard_CreateDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getEditDescription() */ @Override protected String getEditDescription() { return Messages.TaskFactoryHolderWizard_EditDescription_Message; } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getAddCommandForCreatedElement(org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Command getAddCommandForCreatedElement(AdapterFactoryEditingDomain editingDomain_p, EObject parent_p, NamedModelElementWithId createdElement_p) { // Add the task factory to its parent : a factory component invocation. return AddCommand.create(editingDomain_p, parent_p, ModelPackage.Literals.FACTORY_COMPONENT_INVOCATION__TASK_FACTORY, createdElement_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getPluginChangeCommand(org.eclipse.emf.edit.domain.EditingDomain, * org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) */ @Override protected PluginChangeWrapperCommand getPluginChangeCommand(EditingDomain editingDomain_p, EObject modelElement_p, EStructuralFeature feature_p, Object value_p) { return new SetTaskFactoryHolderWrapperCommand(editingDomain_p, modelElement_p, feature_p, value_p); } /** * @see org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard#getTitle() */ @Override protected String getTitle() { return Messages.TaskFactoryHolderWizard_Title; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 8827 Text-content-md5: 97e5e30dd4a5dea906ce088e0860bc11 Text-content-sha1: d3fd64993d03face8be8ca50d455a203a2c7f55f Content-length: 8872 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### # Common message CreationWizard_Prefix=New EditWizard_Prefix=Edit Wizard_Title={0} {1} WizardPage_Description_Title=Description: WizardPage_Description_Tooltip=Describe the {0}. # FactoryComponent wizard messages. EditFactoryComponentWizard_EditDescription_Message=Modify the selected factory component. EditFactoryComponentWizard_Title=Factory Component EditFactoryComponentWizardPage_Title=Factory Component content EditFactoryComponentWizardPage_Name_Title=Name: EditFactoryComponentWizardPage_Name_Tooltip=Readable name of the factory component. EditFactoryComponentWizardPage_Name_ErrorMessage=Factory component name must be filled in. # FactoryComponentInvocation wizard messages. FactoryComponentInvocationWizard_CreateDescription_Message=Create a new factory component invocation. FactoryComponentInvocationWizard_EditDescription_Message=Modify the selected factory component invocation. FactoryComponentInvocationWizard_Title=Factory Component Invocation FactoryComponentInvocationWizardPage_Title=Factory Component Invocation content FactoryComponentInvocationWizardPage_Name_Title=Name: FactoryComponentInvocationWizardPage_Name_Tooltip=Readable name of the factory component invocation. FactoryComponentInvocationWizardPage_Name_ErrorMessage=Factory component invocation name must be filled in. FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Title=Referenced Factory Component: FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Tooltip=Referenced factory component. FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_ErrorMessage=Unknown referenced factory component. FactoryComponentInvocationWizard_WarnDialog_Title=Factory Component Invocation Modification FactoryComponentInvocationWizard_WarnDialog_Message=Referenced Factory Component was changed, existing context elements may be invalid! TaskFactoryHolderWizard_CreateDescription_Message=Create a new task factory. TaskFactoryHolderWizard_EditDescription_Message= Modify the selected task factory. TaskFactoryHolderWizard_Title=Task Factory Reference TaskFactoryHolderWizardPage_Title=Task Factory Reference content TaskFactoryHolderWizardPage_Class_Title=Class name: TaskFactoryHolderWizardPage_OpenTypeDialog_Title=Select an ITaskFactory Java class # ContractElement wizard messages. ContractElementWizard_CreateDescription_Message=Create a new contract element. ContractElementWizard_EditDescription_Message=Modify the selected contract element. ContractElementWizard_Title=Contract Element ContractElementWizardPage_Title=Contract Element content ContractElementWizardPage_Key_Title=Key: ContractElementWizardPage_Key_Tooltip=Define the key of the contract element. ContractElementWizardPage_Key_ErrorMessage=Key must be filled in. ContractElementWizardPage_TypeGroup_Title=Type selection ContractElementWizardPage_TypeGroup_Type=Type ContractElementWizardPage_TypeGroup_Reference=Reference ContractElementTypeWizardPage_Class_Title=Class name: ContractElementTypeWizardPage_OpenTypeDialog_Title=Select an ITypeHolder Java class ContractElementTypeWizardPage_ErrorMessage_1=At least, one contract element reference must be referenced ! ContractElementTypeWizardPage_ErrorMessage_2=All referenced contract element must have the same type. ContractElementWizardPage_OptionsGroup_Title=Options ContractElementWizardPage_OptionsGroup_Mandatory_Title=Mandatory ContractElementWizardPage_OptionsGroup_Mandatory_Tooltip=Whether or not this contract element is mandatory # Domain wizard messages. DomainWizard_CreateDescription_Message=Create a new domain. DomainWizard_EditDescription_Message=Modify the selected domain. DomainWizard_Title=Domain DomainWizardPage_Title=Domain content NewDomainWizardPage_Package_Title=Package name: NewDomainWizardPage_Package_Tooltip=Name of the root package for the created package. NewDomainWizardPage_Package_ErrorMessage=Root package name must be not empty and match the regular expression [a-z]*[A-Z]* NewDomainWizardPage_Domain_Title=Domain file path: NewDomainWizardPage_Domain_Tooltip=Name of the ecore file that contains the domain metamodel. NewDomainWizardPage_Domain_ErrorMessage=Selected domain file does not exist. NewDomainWizardPage_CreateDomain_Title=Create Domain NewDomainWizardPage_CreateDomain_Tooltip=To select an existing domain, uncheck the Create Domain checkbox. EditDomainWizardPage_OpenResourceDialog_Title=Select a domain # ContextElement wizard messages. ContextElementWizard_CreateDescription_Message=Create a new context element. ContextElementWizard_EditDescription_Message=Modify the selected context element. ContextElementWizard_Title=Context Element ContextElementWizardPage_Title=Context Element content ContextElementWizardPage_Group_Key=Key ContextElementWizardPage_Group_Reference=Reference to a contract element ContextElementWizardPage_Key_Title=Key: ContextElementWizardPage_Key_Tooltip=Define the key of the context element. ContextElementWizardPage_Key_ErrorMessage=Key must be filled in. ContextElementKeyWizardPage_Type_Title=Class name: ContextElementKeyWizardPage_OpenTypeDialog_Title=Select an ITypeHolder Java class ContextElementValueWizardPage_Type_Title=Type: ContextElementValueWizardPage_Type_Tooltip=Type of the context element. ContextElementValueWizardPage_Value_Title=Value: ContextElementValueWizardPage_OpenValueTypeDialog_Title=Select a ''{0}'' Java class ContextElementValueWizardPage_ErrorMessage_EmtpyValue=A Context element value must be filled in. ContextElementValueWizardPage_ErrorMessage_NotValidValue=Entered value is not a valid one for context element type. ContextElementValueWizardPage_ErrorMessage_NotValidJavaValue=Entered java class name is either not valid or unloadable. # Pattern library wizard messages. PatternLibraryWizard_Title=Pattern Library PatternLibraryWizard_CreateDescription_Message=Create a new pattern library. PatternLibraryWizard_EditDescription_Message=Modify the selected pattern library. PatternLibraryWizardPage_Title=Pattern Library content PatternLibraryWizardPage_Name_Title=Name: PatternLibraryWizardPage_Name_Tooltip=Name of the pattern library. PatternLibraryWizardPage_Name_ErrorMessage=Pattern library name must be filled in. PatternWizard_Title=Pattern PatternWizard_CreateDescription_Message=Create a new pattern. PatternWizard_EditDescription_Message=Modify the selected pattern. PatternWizardPage_Title=Pattern content PatternWizardPage_Name_Title=Name: PatternWizardPage_Name_Tooltip=Name of the pattern. PatternWizardPage_Name_ErrorMessage=Pattern name must be filled in. PatternLibraryProductionSequenceWizardPage_Title=Pattern Library production orchestration PatternLibraryRuntimeSequenceWizardPage_Title=Pattern Library runtime orchestration AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Title=Pattern Element Selection AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Message=Select a Pattern Element (*, ?): PatternElementValidator_Name_Already_Used_ErrorMessage=Name {0} is already used by {1}. PatternElementValidator_Sibling_EndMessage=a sibling element # Mapping wizard messages. MappingWizard_Title=Mapping MappingWizard_CreateDescription_Message=Create a new mapping. MappingWizard_EditDescription_Message=Modify the selected mapping. MappingWizardPage_Title=Mapping content MappingWizardPage_Id_Title=Id: MappingWizardPage_Id_Tooltip=Identifier of the mapping. MappingWizardPage_Id_ErrorMessage=Mapping ID must be filled in. MappingWizardPage_Name_Title=Name: MappingWizardPage_Name_Tooltip=Name of the mapping. MappingWizardPage_Name_ErrorMessage=Mapping name must be filled in. MappingWizardPage_FcAsSource_Title=Source (domain provided by): MappingWizardPage_FcAsSource_Tooltip=Factory component that provides the domain used as source for the mapping. MappingWizardPage_FcAsSource_ErrorMessage=Unknown referenced factory component as source. MappingWizardPage_FcAsTarget_Title=Target (domain provided by): MappingWizardPage_FcAsTarget_Tooltip=Factory component that provides the domain used as target for the mapping. MappingWizardPage_FcAsTarget_ErrorMessage=Unknown referenced factory component as target. Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/AbstractDomainWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5506 Text-content-md5: f1570684e413056b713681cb7ae979b8 Text-content-sha1: 02d708a00276b1a742134be23c1e17b21bbfd0e7 Content-length: 5551 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.egf.common.helper.FileHelper; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ModelPackage; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Base class to implement Domain wizard pages. * @author fournier */ public abstract class AbstractDomainWizardPage extends AbstractModelElementWizardPage { /** * Domain file extension. */ private static final String DOMAIN_FILE_EXTENSION = "*.ecore"; //$NON-NLS-1$ /** * Relative file path for the domain ecore file. */ protected static final String DEFAULT_DOMAIN_FILE_NAME = "domain/domain.ecore"; //$NON-NLS-1$ /** * Relative domain folder path where domain files are located. */ protected static final String DOMAIN_RELATIVE_FOLDER_PATH = "model"; //$NON-NLS-1$ /** * Field editor that contains the path. */ private IFieldEditor _domainFileNameFieldEditor; /** * Constructor. * @param pageName_p */ public AbstractDomainWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public AbstractDomainWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * Return the default domain file path.
* The default domain file is located within the hosting project under model/domain/domain.ecore. * @return */ protected String getDefaultDomainFilePath() { // Get the folder where domain files are located. IFolder domainFolder = getDomainFolder(); IFile domainFile = domainFolder.getFile(DEFAULT_DOMAIN_FILE_NAME); // Removing the project folder to keep a coherence with what it is expected in plug-in file. IPath relativeDomainFilePath = domainFile.getFullPath().removeFirstSegments(1); return relativeDomainFilePath.toString(); } /** * Create the field editor to enter the domain file name. * @param parent_p */ protected void createDomainFileFieldEditor(Composite parent_p) { IFolder domainFolder = getDomainFolder(); // Set initial Pattern String pattern = getDomainFileExtension(); _domainFileNameFieldEditor = FieldEditorHelper.createDomainFieldEditor( parent_p, Messages.NewDomainWizardPage_Domain_Title, Messages.EditDomainWizardPage_OpenResourceDialog_Title, domainFolder, pattern, isReadOnly() ); // Domain path text Text domainPath = (Text) _domainFileNameFieldEditor.getValueControl(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute(domainPath, ModelPackage.Literals.DOMAIN__PATH, getModelElement(), null); } /** * Return whether or not the selected Domain file exists. * @return */ protected boolean isDomainSelectedExist() { boolean result = false; // The page is complete when file path entered exists. String relativeDomainPath = ((Text) getDomainFileNameFieldEditor().getValueControl()).getText(); IJavaProject hostingProject = getHostingProject(); if (null != hostingProject) { IProject containerProject = hostingProject.getProject(); IFile domainFile = containerProject.getFile(relativeDomainPath); result = domainFile.exists(); } return result; } /** * Return the folder where domain files are located. * @return */ private IFolder getDomainFolder() { IFolder result = null; // Get hosting project. IJavaProject hostingProject = getHostingProject(); if (null != hostingProject) { IProject project = hostingProject.getProject(); result = project.getFolder(DOMAIN_RELATIVE_FOLDER_PATH); FileHelper.ensurePathAvailability(result.toString()); } return result; } /** * Return the file extension of domain files. * @return */ private String getDomainFileExtension() { return DOMAIN_FILE_EXTENSION; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_DOMAIN_WIZARD_PAGE; } /** * Return the domain field editor. * @return the domainFileNameFieldEditor */ protected IFieldEditor getDomainFileNameFieldEditor() { return _domainFileNameFieldEditor; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/AbstractModelElementWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 10044 Text-content-md5: dccc0d55cb4d77e8649ee03a0c65b639 Text-content-sha1: 17bca755959cd44a8e3547b9dd2951bc3b39d732 Content-length: 10089 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.apache.log4j.Logger; import org.osgi.framework.Bundle; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.core.resources.IProject; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.widgets.Text; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.egf.common.helper.ProjectHelper; import org.eclipse.egf.common.misc.PlatformLocationType; import org.eclipse.egf.common.ui.helper.DataBindingHelper; import org.eclipse.egf.common.ui.toolkit.fields.CStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.internal.databinding.UpdateWizardPage; import org.eclipse.egf.core.ui.wizard.AbstractModelElementWizard; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.edit.helper.FactoryComponentHelper; /** * Base class to implement wizard pages for EGF model element objects. * @author fournier */ public abstract class AbstractModelElementWizardPage extends AbstractWizardPage { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(AbstractModelElementWizardPage.class.getPackage().getName()); /** * Class loader of the project where displayed data are stored. */ private ClassLoader _hostingProjectClassLoader; /** * Bundle where displayed data are stored. */ private Bundle _hostingBundle; /** * Constructor. * @param pageName_p * @param modelElement_p */ public AbstractModelElementWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p * @param modelElement_p */ public AbstractModelElementWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * Get the model element object displayed in this page. * @return the modelElement */ protected NamedModelElementWithId getModelElement() { return getModelElementWizard().getModelElement(); } /** * Get the parent object of the handled model element. * @return */ protected NamedModelElementWithId getParent() { return (NamedModelElementWithId) getModelElementWizard().getParent(); } /** * Return the wizard that contains this page as an {@link AbstractModelElementWizard} instance. * @return */ protected AbstractModelElementWizard getModelElementWizard() { return (AbstractModelElementWizard) getWizard(); } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#isReadOnly() */ @Override protected boolean isReadOnly() { return getModelElementWizard().isInReadOnlyMode(); } /** * Validate given field editors * @param fieldEditors_p * @return true means all field editors are valid; false otherwise. */ protected boolean handleFieldEditorValidation(IFieldEditor[] fieldEditors_p) { // Overall validation state boolean isValid = true; // Precondition: read only means the page is not editable hence it is useless to valid contained field editors. if (getModelElementWizard().isInReadOnlyMode()) { // Clear the potential error message if any. setErrorMessage(null); // Return the page is valid. return isValid; } // Error message is one of given field editors is not valid. String errorMessage = null; // Loop over given field editors. for (int i = 0; i < fieldEditors_p.length && isValid; i++) { IFieldEditor fieldEditor = fieldEditors_p[i]; isValid = fieldEditor.isValid(); // If not valid, get the error message if (!isValid) { errorMessage = fieldEditor.getErrorMessage(); } } // Set the wizard page error message, if one field is not validated. if (null != errorMessage) { setErrorMessage(errorMessage); } return isValid; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getPageDescription() */ @Override protected String getPageDescription() { return ((AbstractModelElementWizard) getWizard()).getDescription(); } /** * Set and show an error for given {@link CStringFieldEditor} instance. * @param fieldEditor_p * @param errorMessage_p */ protected void showErrorMessage(CStringFieldEditor fieldEditor_p, String errorMessage_p) { fieldEditor_p.setErrorMessage(errorMessage_p); fieldEditor_p.showErrorMessage(); } /** * Create a data binding between given Text control and a given attribute for given model element. * @param text_p the control. * @param event_p event type to register for change events. * @param feature_p the observed feature. * @param modelElement_p the object. * @param featureValueChangeListener_p if provided, it is registered to the created {@link IObservableValue} object based on feature_p. */ protected void bindTextToAttribute(Text text_p, EAttribute feature_p, NamedModelElementWithId modelElement_p, UpdateWizardPage featureValueChangeListener_p) { bindTextToAttribute(text_p, feature_p.getName(), modelElement_p, featureValueChangeListener_p); } /** * Create a data binding between given Text control and a given property name for given model element. * @param text_p the control. * @param event_p event type to register for change events * @param propertyName_p the observed property name. * @param modelObject_p the object. * @param featureValueChangeListener_p if provided, it is registered to the created {@link IObservableValue} object based on feature_p. */ protected void bindTextToAttribute(Text text_p, String propertyName_p, Object modelElement_p, UpdateWizardPage featureValueChangeListener_p) { UpdateWizardPage featureValueChangeListener = (null != featureValueChangeListener_p) ? featureValueChangeListener_p : new UpdateWizardPage(this); DataBindingHelper.bindTextToProperty(text_p, propertyName_p, modelElement_p, featureValueChangeListener); } /** * Return the project that hosts model element parent object. * @return null if the project is not found (the model element is located in an installed plug-in). */ protected IJavaProject getHostingProject() { IJavaProject javaProject = null; // Get the project that hosts the retrieved factory component. IProject project = ModelHelper.getProject(getParent()); if (project != null) { // Get the java project for the retrieved factory component project. javaProject = ProjectHelper.getJavaProject(project.getName()); } return javaProject; } /** * Return the id of the plug-in that hosts model element parent object. * @return null if not found. */ protected String getHostingPluginId() { // Get the factory component that hosts current model element. FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(getParent()); // Get the plug-in id that hosts the retrieved factory component. String hostingPluginId = FactoryComponentHelper.getPluginId(fcContainer.getId(), PlatformLocationType.WORKSPACE_ONLY); return hostingPluginId; } /** * Return the class loader of the hosting project {@link #getHostingProject()}. * @return a class loader or null if an error occurs. */ protected ClassLoader getHostingProjectClassLoader() { // Lazy creation pattern. if (_hostingProjectClassLoader == null) { // Get the java project for the hosting project. IJavaProject javaProject = getHostingProject(); // Precondition. if (javaProject == null) { return _hostingProjectClassLoader; } try { // Get the class loader of the retrieved java project. _hostingProjectClassLoader = ProjectHelper.getClassLoaderFor(javaProject, getClass().getClassLoader()); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("AbstractNamedElementWizardPage.getHostingProjectClassLoader(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } return _hostingProjectClassLoader; } /** * Return the bundle of the hosting project {@link #getBundle()}. * @return a bundle or null. */ protected Bundle getHostingBundle() { if (_hostingBundle == null) { _hostingBundle = CoreActivator.getDefault().getBundleForFactoryComponent(getParent()); } return _hostingBundle; } /** * Return the adapter factory to use in EMF-based label and content provider. * @return a not null {@link AdapterFactory} instance. */ protected AdapterFactory getAdapterFactory() { AdapterFactory result = getModelElementWizard().isInReadOnlyMode() ? EgfUiActivator.getDefault().getEditingDomainInReadOnly().getAdapterFactory() : EgfUiActivator.getDefault().getEditingDomain().getAdapterFactory(); return result; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/AbstractPatternLibrarySequenceWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 10306 Text-content-md5: 070c8884028aea9d6c01903cb8773514 Text-content-sha1: 7fd55fb3f9c0ee734388769a72e4622b8d638b24 Content-length: 10351 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard.page; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.egf.common.ui.viewers.IContentHandler; import org.eclipse.egf.common.ui.viewers.OrderedListViewer; import org.eclipse.egf.common.ui.viewers.OrderedListViewerWithAddAndRemove; import org.eclipse.egf.core.ui.internal.dialogs.ModelElementSelectionDialog; import org.eclipse.egf.core.ui.internal.observable.IListViewerObserver; import org.eclipse.egf.core.ui.internal.viewers.ObservablePatternElementContentProvider; import org.eclipse.egf.core.ui.viewers.AdaptedModelElementLabelProvider; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; /** * Base class to implement the pattern library wizard page that allows the end-user to select production orchestration
* and the runtime orchestration. * @author Guillaume Brocard */ public abstract class AbstractPatternLibrarySequenceWizardPage extends AbstractModelElementWizardPage implements IListViewerObserver { /** * Defines the viewer height in chars. */ private static final int VIEWER_HEIGHT_IN_CHARS = 10; /** * Defines the viewer width in chars. */ private static final int VIEWER_WIDTH_IN_CHARS = 60; /** * List viewer used to display the contained pattern elements. */ private OrderedListViewer _orderedViewer; /** * Content handler */ private IContentHandler _runtimeSequenceContentHandler; /** * Constructor. * @param pageName_p */ protected AbstractPatternLibrarySequenceWizardPage(String pageName_p) { super(pageName_p); initializeContentHandler(); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public AbstractPatternLibrarySequenceWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); initializeContentHandler(); } /** * Initialize content handler used to drive the pattern element selection dialog. */ private void initializeContentHandler() { _runtimeSequenceContentHandler = new IContentHandler() { /** * @see org.eclipse.egf.common.ui.viewers.IContentHandler#createNewElement() */ public Object createNewElement() { Object pattern = null; // Create a dialog to select a pattern element to add. ModelElementSelectionDialog selectionDialog = new ModelElementSelectionDialog(getShell()); // Set title. selectionDialog.setTitle(Messages.AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Title); // Set message. selectionDialog.setMessage(Messages.AbstractPatternLibrarySequenceWizardPage_PatternElementSelectionDialog_Message); // Set single selection mode. selectionDialog.setMultipleSelection(false); // Set the elements displayed in the dialog. selectionDialog.setElements(getDisplayedPatternElements()); // Open it. if (IDialogConstants.OK_ID == selectionDialog.open()) { // Get selected object. Object[] selection = selectionDialog.getResult(); if (null != selection && selection.length > 0) { // We are not in multi selection context. pattern = selection[0]; } } return pattern; } /** * Return the displayed pattern elements. Return the element * @return a not null list. */ private List getDisplayedPatternElements() { // Get the pattern element contained elements. // Clone the list because, some elements can be filtered in the UI. List containedElements = new ArrayList(getPatternLibrary().getPatternElements()); // Remove filtered elements. containedElements.removeAll(getFilteredPatternElements()); return containedElements; } /** * @see org.eclipse.egf.common.ui.viewers.IContentHandler#removeElement(java.lang.Object) */ public void removeElement(Object element_p) { // Do nothing. } }; } /** * Return the filtered pattern elements when adding a new one from the 'add' button.
* Default implementation returns an empty list. * @return a not null {@link List}. */ protected List getFilteredPatternElements() { // Do nothing. return Collections.emptyList(); } /** * Create the ordered viewer. * @param parent_p * @return a not null {@link OrderedListViewer} instance. */ protected OrderedListViewer createOrderedViewer(Composite parent_p) { return new OrderedListViewerWithAddAndRemove(parent_p) { /** * @see org.eclipse.egf.common.ui.viewers.OrderedListViewerWithAddAndRemove#getContentHandler() */ @SuppressWarnings("synthetic-access") @Override protected IContentHandler getContentHandler() { return _runtimeSequenceContentHandler; } /** * @see org.eclipse.egf.common.ui.viewers.OrderedListViewerWithAddAndRemove#createRemoveButtonHandler() */ @Override protected SelectionChangedHandler createRemoveButtonHandler() { return new SelectionChangedHandler() { /** * @see org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler#doHandleSelection(org.eclipse.jface.viewers.ISelection) */ @Override protected boolean doHandleSelection(ISelection selection_p) { return !selection_p.isEmpty(); } }; } }; } protected void initializeOrderedViewer(StructuredViewer decoratedViewer) { // Tweak the UI to get something nice when a library has a lot of patterns. GridData data = (GridData) decoratedViewer.getControl().getLayoutData(); data.widthHint = convertWidthInCharsToPixels(VIEWER_WIDTH_IN_CHARS); data.heightHint = convertHeightInCharsToPixels(VIEWER_HEIGHT_IN_CHARS); // Set it a label provider. decoratedViewer.setLabelProvider(new AdaptedModelElementLabelProvider(getAdapterFactory())); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create the ordered viewer. _orderedViewer = createOrderedViewer(parent_p); // Get the decorated viewer and initialize it. StructuredViewer decoratedViewer = _orderedViewer.getDecoratedViewer(); initializeOrderedViewer(decoratedViewer); // Set it a content provider. ObservablePatternElementContentProvider observablePatternElementContentProvider = new ObservablePatternElementContentProvider(); observablePatternElementContentProvider.addListViewerObserver(this); decoratedViewer.setContentProvider(observablePatternElementContentProvider); // Set the initial input. List patternElementsOrder = getPatternElementsOrder(); decoratedViewer.setInput(patternElementsOrder); } /** * Return the list of {@link AbstractPatternElement} ordered as defined by the end-user. * @return */ protected List getPatternElementsOrder() { List result = new ArrayList(0); // Get the production orchestration. String orchestration = getOrchestrationValue(); // If defined, use it to create the list of pattern elements displayed in the viewer. if (null != orchestration && orchestration.length() > 0) { result = getPatternElements(orchestration); } return result; } /** * Return the orchestration value. * @return */ protected abstract String getOrchestrationValue(); /** * Return the list of pattern element for given orchestration value. * @param orchestrationValue_p a not null string. * @return a not null list. */ protected abstract List getPatternElements(String orchestrationValue_p); /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementAdded(java.util.List) */ public void elementAdded(List elements_p) { // Do nothing. } /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementRemoved(java.util.List) */ public void elementRemoved(List elements_p) { // Do nothing. } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { return true; } /** * Get pattern elements for handled pattern library. * @return */ protected List getPatternElements() { return getPatternLibrary().getPatternElements(); } /** * Get the handled pattern library. * @return */ protected PatternLibrary getPatternLibrary() { return (PatternLibrary) getModelElement(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/ContextElementKeyWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 8670 Text-content-md5: 0094d4f01532a3ab5aec2c79d93bcc2a Text-content-sha1: dff79084fd3ecae0cf346ca693061b974d8ff4fc Content-length: 8715 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.field.JavaClassFieldEditor; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.ui.internal.databinding.JavaTypeHolder; import org.eclipse.egf.core.ui.internal.databinding.UpdateWizardPage; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.ContextElementWizard; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.Type; import org.eclipse.egf.model.contract.type.ITypeHolder; import org.eclipse.egf.model.data.helper.ModelHelper; /** * Implements the context element key wizard page. * @author fournier */ public class ContextElementKeyWizardPage extends AbstractModelElementWizardPage { /** * Java class field editor. */ private JavaClassFieldEditor _contextElementKeyTypeFieldEditor; /** * Field editor used to enter the context element key. */ private ValidatingStringFieldEditor _contextElementKeyFieldEditor; /** * Constructor. * @param pageName_p */ public ContextElementKeyWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public ContextElementKeyWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create a field editor to enter the key name. createKeyFieldEditor(parent_p); // Create a field editor to select the key type. createKeyTypeFieldEditor(parent_p); // Finally, layout the page. handlePageLayout(parent_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#handlePageLayout(org.eclipse.swt.widgets.Composite) */ @Override protected void handlePageLayout(Composite parent_p) { FieldEditorHelper.layoutFieldEditor(parent_p, _contextElementKeyFieldEditor, 3); } /** * Create the key type field editor. * @param parent_p */ private void createKeyTypeFieldEditor(Composite parent_p) { // Create a field editor to select the key type. _contextElementKeyTypeFieldEditor = FieldEditorHelper.createJavaClassFieldEditor( parent_p, this, Messages.ContextElementKeyWizardPage_Type_Title, Messages.ContextElementKeyWizardPage_OpenTypeDialog_Title, getHostingProjectClassLoader(), getHostingBundle(), ITypeHolder.class, isReadOnly() ); // ITypeHolder class name text. Text className = _contextElementKeyTypeFieldEditor.getTextControl(parent_p); // Get handled model element. ContextElement contextElement = (ContextElement) getModelElement(); // Get its type Type contextType = contextElement.getContextType(); String typeHolderClassName = (null != contextType) ? contextType.getTypeHolderClassName() : ICommonConstants.EMPTY_STRING; // Create the data binding between the text field and the related model element attribute. bindTextToAttribute(className, JavaTypeHolder.PROPERTY_TYPE, new JavaTypeHolder(typeHolderClassName), new JavaTypeHolderChangeListener(this)); // Update valid state. _contextElementKeyTypeFieldEditor.isValid(true); } /** * Create the key field editor. * @param parent_p */ private void createKeyFieldEditor(Composite parent_p) { // Create a field editor to enter the key name. _contextElementKeyFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.ContextElementWizardPage_Key_Title, Messages.ContextElementWizardPage_Key_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(Messages.ContextElementWizardPage_Key_ErrorMessage), isReadOnly() ); // Contract element key text. Text key = _contextElementKeyFieldEditor.getTextControl(); // Set default focus on this widget. key.setFocus(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute(key, ModelPackage.Literals.CONTEXT_ELEMENT__KEY, getModelElement(), null); // update valid state. _contextElementKeyFieldEditor.isValid(true); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // We can't finish in this page. return false; } /** * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage() */ @Override public boolean canFlipToNextPage() { // Field editors to validate. IFieldEditor[] fieldEditors = { _contextElementKeyFieldEditor, _contextElementKeyTypeFieldEditor }; // Compute validation state. boolean canFlipToNextPage = handleFieldEditorValidation(fieldEditors); // If we can flip to the next page, it means this page is complete and valid. if (canFlipToNextPage) { // Reset to null the contract element reference, because we are based on a local type. getContextElement().setContractElementReference(null); } return canFlipToNextPage; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.ContextElementWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_CONTEXT_ELEMENT_TYPE_WIZARD_PAGE; } /** * Return the handled context element. * @return */ protected ContextElement getContextElement() { return (ContextElement) getModelElement(); } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { IWizard wizard = getWizard(); ContextElementValueWizardPage nextPage = (ContextElementValueWizardPage) wizard.getPage(ContextElementWizard.CONTEXT_ELEMENT_VALUE_PAGE); nextPage.updateContextElementType(_contextElementKeyTypeFieldEditor.getStringValue()); return nextPage; } /** * Handle changes performed on Java type holder. * @author fournier */ class JavaTypeHolderChangeListener extends UpdateWizardPage { /** * Constructor. * @param wizardPage_p */ public JavaTypeHolderChangeListener(AbstractModelElementWizardPage wizardPage_p) { super(wizardPage_p); } /** * @see org.eclipse.egf.core.ui.internal.databinding.UpdateWizardPage#handleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @Override public void handleValueChange(ValueChangeEvent event_p) { // Get entered value. String typeClassName = (String) event_p.getObservableValue().getValue(); // Get the context element. ContextElement contextElement = getContextElement(); // Set entered type name. ModelHelper.setContextType(contextElement, typeClassName); // Finally, call super method to update the wizard page. super.handleValueChange(event_p); } } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/ContextElementReferenceWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 18617 Text-content-md5: fc90f0d7b2ae0e8826e8fb0fcc7aa9ab Text-content-sha1: 6fe3f18c12d90d3d5baa4430968644bd04034d58 Content-length: 18662 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard.page; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.apache.log4j.Logger; import org.eclipse.egf.common.ui.toolkit.viewers.AbstractTransferViewer; import org.eclipse.egf.common.ui.toolkit.viewers.TransferTreeViewer; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.ui.internal.data.UiReferencedFactoryComponentContainer; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.internal.observable.IListViewerObserver; import org.eclipse.egf.core.ui.internal.viewers.CustomTooltipLabelProvider; import org.eclipse.egf.core.ui.internal.viewers.DecoratedModelLabelProvider; import org.eclipse.egf.core.ui.internal.viewers.ObservableReferencedContractElementContentProvider; import org.eclipse.egf.core.ui.internal.viewers.PossibleContractElementReferenceTreeContentProvider; import org.eclipse.egf.core.ui.wizard.ContextElementWizard; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; /** * Implements the context element reference wizard page. * @author fournier */ public class ContextElementReferenceWizardPage extends AbstractModelElementWizardPage { /** * TreeViewer style bits constant. */ private final static int TREE_VIEWER_STYLE = SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER; /** * Log4j reference logger. */ protected static final Logger __logger = Logger.getLogger(ContextElementReferenceWizardPage.class.getPackage().getName()); /** * Remove the 'addAll'& 'removeAll' buttons. */ private final int TRANSFER_BUTTONS = AbstractTransferViewer.ALL_BUTTONS & ~AbstractTransferViewer.ADD_ALL_BUTTON & ~AbstractTransferViewer.REMOVE_ALL_BUTTON; /** * Transfer tree style. */ private final int TRANSFER_TREE_STYLE = AbstractTransferViewer.SINGLE_SELECTION_VIEWER | TRANSFER_BUTTONS; /** * TransferViewer used to select referenced contract elements. */ protected AbstractTransferViewer _treeTransferViewer; /** * Label provider used in the transfer viewer. */ private ILabelProvider _decoratedLabelProvider; /** * Constructor. * @param pageName_p */ public ContextElementReferenceWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public ContextElementReferenceWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { _decoratedLabelProvider = new CustomTooltipLabelProvider(new DecoratedModelLabelProvider()); // Create the transfer viewer. createTransferViewer(parent_p); } /** * Create the transfer viewer. * @param parent_p */ private void createTransferViewer(Composite parent_p) { _treeTransferViewer = new TransferTreeViewer(parent_p, TRANSFER_TREE_STYLE, TREE_VIEWER_STYLE, TREE_VIEWER_STYLE); // Initialization of selection changed handler. initializeHandlers(_treeTransferViewer); // Set specific property on the right viewer of the treeTransferViewer AbstractTreeViewer rightViewer = (AbstractTreeViewer) _treeTransferViewer.getRightViewer(); ViewerSorter defaultViewerSorter = new ViewerSorter(); rightViewer.setSorter(defaultViewerSorter); // Set specific property on the left viewer of the treeTransferViewer _treeTransferViewer.getLeftViewer().setSorter(defaultViewerSorter); // Set a property for always expand all nodes. rightViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); // Handle right viewer initialization ContractElement referencedContractElement = handleRightViewerInitialization(); // Filter its own contract element reference. Set referencedContractElements = new HashSet(0); if (null != referencedContractElement) { referencedContractElements.add(referencedContractElement); } // Filter the other referenced contract elements from the contract of parent factory component. handleSiblingContract(referencedContractElements); // Filter the other referenced contract elements from sibling context elements. handleSiblingContextElements(referencedContractElements); // Handle left viewer initialization handleLeftViewerInitialization(referencedContractElements); // Update transfer viewer layout to get something nice in asynch way to be sure data are loaded before layout the UI. parent_p.getDisplay().asyncExec(new Runnable() { /** * @see java.lang.Runnable#run() */ public void run() { Composite control = (Composite) _treeTransferViewer.getControl(); control.layout(); } }); } /** * Handle the referenced contract elements from contract elements contained in the contract of current factory component (the one that hosts this context element). * @param referencedContractElements_p */ private void handleSiblingContract(Collection referencedContractElements_p) { // Get the factory component that hosts the context which contains this context element. FactoryComponent fc = ModelHelper.getFactoryComponentContainer(getParent()); // Get the contract of the retrieved factory component. Contract contract = ModelHelper.getContract(fc); // Retrieve the referenced contract elements from the retrieved contract. referencedContractElements_p.addAll(DataHelper.getReferencedContractElementsFor(contract)); } /** * Handle sibling context elements to filter their contract element reference. * @param referencedContractElements_p */ private void handleSiblingContextElements(Collection referencedContractElements_p) { Context context = (Context) getParent(); referencedContractElements_p.addAll(DataHelper.getReferencedContractElementsFor(context)); } /** * Initialize handlers on given * @param treeTransferViewer_p */ protected void initializeHandlers(AbstractTransferViewer transferViewer_p) { // Set a selection changes handler to enable buttons only when ContractElement objects are selected. SelectionChangedHandler handler = new TypedSelectionChangedHandler() { /** * @see org.eclipse.egf.core.ui.wizard.page.ContextElementReferenceWizardPage.TypedSelectionChangedHandler#handleInitialCondition() */ @Override protected boolean handleInitialCondition() { // The contract element reference must be null to enable the 'add Selected Object' button. return (null == getContextElement().getContractElementReference()); } }; // Set this handler on the 'add selected object'... transferViewer_p.setSelectionChangedHandler(handler, AbstractTransferViewer.ADD_SELECTED_BUTTON); // // handler = new TypedSelectionChangedHandler() { /** * @see org.eclipse.egf.core.ui.wizard.page.ContextElementReferenceWizardPage.TypedSelectionChangedHandler#handleInitialCondition() */ @Override protected boolean handleInitialCondition() { // The contract element reference must be not null to enable the 'remove Selected Object' button. return (null != getContextElement().getContractElementReference()); } }; // Set this handler on the 'remove selected object'... transferViewer_p.setSelectionChangedHandler(handler, AbstractTransferViewer.REMOVE_SELECTED_BUTTON); } /** * Handle the left viewer initialization. * @return */ protected IContentProvider handleLeftViewerInitialization(Collection referencedContractElementList_p) { _treeTransferViewer.setLeftLabelProvider(_decoratedLabelProvider); ColumnViewerToolTipSupport.enableFor((TreeViewer) _treeTransferViewer.getLeftViewer()); // Set a content provider that handles a context with children as factory components with children as contract elements PossibleContractElementReferenceTreeContentProvider possibleContractElementReferenceTreeContentProvider = new PossibleContractElementReferenceTreeContentProvider( referencedContractElementList_p); _treeTransferViewer.setLeftContentProvider(possibleContractElementReferenceTreeContentProvider); _treeTransferViewer.setLeftInput(getParent()); // parent is a Contract. return possibleContractElementReferenceTreeContentProvider; } /** * Handle the right viewer initialization. */ protected ContractElement handleRightViewerInitialization() { // Set content and label providers for the right viewer. // Set the label provider. _treeTransferViewer.setRightLabelProvider(_decoratedLabelProvider); ColumnViewerToolTipSupport.enableFor((TreeViewer) _treeTransferViewer.getRightViewer()); // Create a content provider that is able to notify UI changes. ObservableReferencedContractElementContentProvider observableContentProvider = new ObservableReferencedContractElementContentProvider(); // Set the content provider. _treeTransferViewer.setRightContentProvider(observableContentProvider); // Create the initial input for the right viewer. ContractElement referencedContractElement = DataHelper.getReferencedContractElementFor(getContextElement()); ContractElement[] referencedContractElementArray = null; if (null != referencedContractElement) { referencedContractElementArray = new ContractElement[1]; referencedContractElementArray[0] = referencedContractElement; } else { referencedContractElementArray = new ContractElement[0]; } UiReferencedFactoryComponentContainer initialInput = new UiReferencedFactoryComponentContainer(referencedContractElementArray); _treeTransferViewer.setRightInput(initialInput); ContractElementListObserver contractElementListObserver = new ContractElementListObserver(); // Add an observer on our content provider. observableContentProvider.addListViewerObserver(contractElementListObserver); // Returned the already used contract element references. return referencedContractElement; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // We can't finish in this page. return false; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.ContextElementWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_CONTEXT_ELEMENT_REFERENCE_WIZARD_PAGE; } /** * Return the handled context element. * @return */ protected ContextElement getContextElement() { return (ContextElement) getModelElement(); } /** * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage() */ @Override public boolean canFlipToNextPage() { ContextElement contextElement = getContextElement(); ContractElement referencedContractElement = DataHelper.getReferencedContractElementFor(contextElement); // If the referenced contract element is set, we can flip to next page. boolean canFlipToNextPage = (null != referencedContractElement); // If we can flip to the next page, it means this page is complete and valid. if (canFlipToNextPage) { // Reset to null the type, because we are based on a contract element reference. contextElement.setContextType(null); // Reset to null the key, because we are based on a contract element reference. contextElement.setKey(null); } return canFlipToNextPage; } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { IWizard wizard = getWizard(); ContextElementValueWizardPage nextPage = (ContextElementValueWizardPage) wizard.getPage(ContextElementWizard.CONTEXT_ELEMENT_VALUE_PAGE); // Update the context element type ContractElement referencedContractElement = DataHelper.getReferencedContractElementFor(getContextElement()); nextPage.updateContextElementType(referencedContractElement.getContractType().getTypeHolderClassName()); return nextPage; } /** * Implement a list observer for contract element reference. * @author fournier */ class ContractElementListObserver implements IListViewerObserver { /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementAdded(java.util.List) */ public void elementAdded(List elements_p) { // Get the first referenced contract element of given list. ContractElement referencedContractElement = (ContractElement) elements_p.get(0); // Create a contract element reference for referenced contract element. ContractElementReference contractElementReference = ModelHelper.createContractElementReferenceBasedOn(referencedContractElement); // Set it as the reference object. getContextElement().setContractElementReference(contractElementReference); // Update the wizard page. updateButtons(); } /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementRemoved(java.util.List) */ public void elementRemoved(List elements_p) { // Get the first referenced contract element of given list. ContextElement contextElement = getContextElement(); ContractElement referencedContractElementToRemove = (ContractElement) elements_p.get(0); // Get the registered contract reference element. ContractElement referencedContractElement = DataHelper.getReferencedContractElementFor(contextElement); if (referencedContractElementToRemove == referencedContractElement) { // Reset to null the object reference. contextElement.setContractElementReference(null); // Reset to null the object reference id, because the instance is lazy loaded from this id (if the instance is null). contextElement.setContractReferenceId(null); } else { StringBuilder loggerMessage = new StringBuilder("ContractElementListObserver.elementRemoved(..) _ "); //$NON-NLS-1$ loggerMessage.append("Failed to remove the ContractElementReference for context element:"); //$NON-NLS-1$ loggerMessage.append(contextElement.getId()); __logger.warn(loggerMessage.toString()); } // Update the wizard page. updateButtons(); } /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementUpdated(java.util.List) */ public void elementUpdated(List elements_p) { // Update the wizard page. updateButtons(); } } /** * Base class to implement selection changed handler for the context element reference wizard page. * @author Guillaume Brocard */ abstract class TypedSelectionChangedHandler extends SelectionChangedHandler { /** * @see org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler#doHandleSelection(org.eclipse.jface.viewers.ISelection) */ @Override protected boolean doHandleSelection(ISelection selection_p) { // Handle initial condition. boolean result = handleInitialCondition(); // Selection must be a structured selection. if (selection_p instanceof StructuredSelection) { StructuredSelection selection = (StructuredSelection) selection_p; Iterator selectedObjects = selection.iterator(); // Iterate over the selected objects to check that every object is a kind of ContractElement. while (selectedObjects.hasNext() && result) { Object selectedObject = selectedObjects.next(); result = (selectedObject instanceof ContractElement); } } return result; } /** * Handle initial condition. * @return */ protected abstract boolean handleInitialCondition(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/ContextElementValueWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 16935 Text-content-md5: 70c9417eeaeda87f64f780ab3bb2a351 Text-content-sha1: f7d1c07ecc6d5a38cec910c97183eb192544c1fc Content-length: 16980 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import java.lang.reflect.Constructor; import org.apache.log4j.Logger; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.SelectionDialog; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.helper.ClassLoadingHelper; import org.eclipse.egf.common.misc.ISelectionHandler; import org.eclipse.egf.common.ui.field.ContextElementFieldEditor; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.AbstractValidator; import org.eclipse.egf.common.ui.toolkit.validators.IValidator; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.ui.internal.databinding.JavaTypeHolder; import org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.Type; import org.eclipse.egf.model.contract.type.ClassTypeHolder; import org.eclipse.egf.model.contract.type.ITypeHolder; /** * Implements the context element value wizard page. * @author fournier */ public class ContextElementValueWizardPage extends AbstractModelElementWizardPage { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(ContextElementValueWizardPage.class.getPackage().getName()); /** * ContextElement Type remainder. */ private ValidatingStringFieldEditor _contextElementTypeFieldEditor; /** * ContextValue field editor. */ protected ContextElementFieldEditor _contextElementValueFieldEditor; /** * Reference to the object bound to the context element type. */ protected JavaTypeHolder _contextElementType; /** * Type holder that the context element value must be conformed to. */ protected ITypeHolder _typeHolder; private SelectionDialog _providedSelectionDialog; /** * Constructor. * @param pageName_p */ public ContextElementValueWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public ContextElementValueWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create a field editor to display the type (remainder to the end-user). String typeHolderClassName = createTypeFieldEditor(parent_p); // Create a field editor to enter the context element value. createValueTypeFieldEditor(parent_p, typeHolderClassName); // Finally, layout the page. handlePageLayout(parent_p); } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { // No next page. return null; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#handlePageLayout(org.eclipse.swt.widgets.Composite) */ @Override protected void handlePageLayout(Composite parent_p) { FieldEditorHelper.layoutFieldEditor(parent_p, _contextElementTypeFieldEditor, 3); } /** * Create the type field editor. * @param parent_p * @return fully qualified type class name. */ private String createTypeFieldEditor(Composite parent_p) { _contextElementTypeFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.ContextElementValueWizardPage_Type_Title, Messages.ContextElementValueWizardPage_Type_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(null), isReadOnly() ); // no message needed, a context has always a type holder. // Type text. Text type = _contextElementTypeFieldEditor.getTextControl(); // Set context element type widget as a non editable widget. type.setEditable(false); // Get handled model element. ContextElement contextElement = (ContextElement) getModelElement(); String typeHolderClassName = DataHelper.getContextType(contextElement); Type contextType = contextElement.getContextType(); if (null == contextType) { // Get the type from its contract element reference. ContractElement referencedContractElement = contextElement.getContractElementReference().getReferencedContractElement(); contextType = referencedContractElement.getContractType(); } // Create a an object in order to bind it with the type widget. _contextElementType = new JavaTypeHolder(typeHolderClassName); bindTextToAttribute(type, JavaTypeHolder.PROPERTY_TYPE, _contextElementType, null); return typeHolderClassName; } /** * Create the value field editor. * @param parent_p * @param typeHolderClassName_p */ private void createValueTypeFieldEditor(Composite parent_p, String typeHolderClassName_p) { Class classTypeFilter = _typeHolder != null ? getClassTypeFilter(_typeHolder) : null; _contextElementValueFieldEditor = FieldEditorHelper.createContextElementFieldEditor( parent_p, this, Messages.ContextElementValueWizardPage_Value_Title, Messages.ContextElementValueWizardPage_OpenValueTypeDialog_Title, getHostingProjectClassLoader(), getHostingBundle(), classTypeFilter, isReadOnly() ); // Create a validator based on type holder validation. IValidator valueValidator = new AbstractValidator(Messages.ContextElementValueWizardPage_ErrorMessage_NotValidValue) { public String isValid(Object value_p) { String errorMessage = null; // If the type holder is not null, ask it to validate the entered value. if (_typeHolder != null) { // Set the plug-in to be able to instantiate string representation value. if (_typeHolder.isJava()) { ((ClassTypeHolder) _typeHolder).setClassLoader(getHostingProjectClassLoader()); // Set an accurate error message for Java type holder. setErrorMessage(Messages.ContextElementValueWizardPage_ErrorMessage_NotValidJavaValue); } else { // Set an accurate error message for NON Java type holder. setErrorMessage(Messages.ContextElementValueWizardPage_ErrorMessage_EmtpyValue); } boolean result = _typeHolder.isValid(_contextElementValueFieldEditor.getStringValue()); if (result == false) { errorMessage = getErrorMessage(); } } else { // Set an accurate error message when type holder is null. errorMessage = Messages.ContextElementValueWizardPage_ErrorMessage_EmtpyValue; } return errorMessage; } }; // Override the java class validator. _contextElementValueFieldEditor.setValidator(valueValidator); // Get the text field to bind it with its data. Text contextElementValue = _contextElementValueFieldEditor.getTextControl(parent_p); // Create the data binding between the text field and the related model element attribute. ValueChangeHandler handler = createValueChangeHandler(); bindTextToAttribute(contextElementValue, ModelPackage.Literals.CONTEXT_ELEMENT__READABLE_VALUE, getModelElement(), handler); // Update context element type. updateContextElementType(typeHolderClassName_p); // Update valid state. _contextElementValueFieldEditor.isValid(true); } /** * Create a value change handler. * @return */ private ValueChangeHandler createValueChangeHandler() { ValueChangeHandler handler = new ValueChangeHandler(this) { /** * Use to update the initial selection of provided selection dialog. * @see org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler#doHandleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @SuppressWarnings("synthetic-access") @Override protected void doHandleValueChange(ValueChangeEvent event_p) { String fullId = (String) event_p.diff.getNewValue(); setInitialSelectionForProvidedSelectionDialog(fullId); } }; return handler; } /** * Get a potential provided selection dialog. * @param parentShell_p * @return null if not found. */ private SelectionDialog getProvidedSelectionDialog(Shell parentShell_p) { SelectionDialog result = null; // Precondition. if (_typeHolder == null) { return result; } // Get the provided selection dialog class name (if any). String selectionDialogClassName = _typeHolder.getSelectionDialog(); if (selectionDialogClassName != null) { // A selection dialog is provided, instantiate it. Class selectionDialogClass = ClassLoadingHelper.loadClass(selectionDialogClassName, getHostingProjectClassLoader()); try { // Get the constructor for the provided custom field editor. Constructor constructor = selectionDialogClass.getConstructor(Shell.class); // Instantiate it. result = (SelectionDialog) constructor.newInstance(parentShell_p); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("ContextElementValueWizardPage.getProvidedSelectionDialog(..) _ "); //$NON-NLS-1$ __logger.error(loggerMessage.toString(), exception_p); } } return result; } /** * Get a potential selection handler. * @return null if not found. */ private ISelectionHandler getSelectionHandler() { ISelectionHandler result = null; // Precondition. if (null == _typeHolder) { return result; } result = _typeHolder.getSelectionHandler(); return result; } /** * Return the handled context element. * @return */ protected ContextElement getContextElement() { return (ContextElement) getModelElement(); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _contextElementValueFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.ContextElementWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_CONTEXT_ELEMENT_VALUE_WIZARD_PAGE; } /** * Update the type holder class name. * @param typeHolderClassName_p */ public void updateContextElementType(String typeHolderClassName_p) { if (_contextElementType != null) { // Whether or not the type holder has changed between given value and the current one. boolean typeHolderHasChanged = false; // Force to update through the widget because data binding only works when the modification comes from the widget. if ( _contextElementTypeFieldEditor != null) { Text textControl = _contextElementTypeFieldEditor.getTextControl(); String currentValue = textControl.getText(); // Avoid to set the same value. if (currentValue.equals(typeHolderClassName_p) == false) { textControl.setText(typeHolderClassName_p); typeHolderHasChanged = true; } } else { // Set the new type on bound type to forward modification on related widget. _contextElementType.setType(typeHolderClassName_p); typeHolderHasChanged = true; } if (typeHolderHasChanged || _typeHolder == null) { // Load the type class. Object typeInstance = ClassLoadingHelper.instantiate(typeHolderClassName_p, getHostingProjectClassLoader()); // If successfully instantiated, update the value field editor. if (typeInstance != null) { _typeHolder = (ITypeHolder) typeInstance; _providedSelectionDialog = getProvidedSelectionDialog(getShell()); boolean selectionDialogProvided = _providedSelectionDialog != null; // If the type holder is not a Java type ie (a StringTypeHolder for instance), disable the button and enable text field. boolean textIsEditable = false; if (_typeHolder.isJava() == false) { // Only primitive type holders without selection dialog are editable. textIsEditable = selectionDialogProvided == false; } else { // If it is a complex type, update the class type filter. _contextElementValueFieldEditor.setClassTypeFilter(getClassTypeFilter(_typeHolder)); } // Enable or disable the open type button. _contextElementValueFieldEditor.getHelperControl().setEnabled(selectionDialogProvided || _typeHolder.isJava()); _contextElementValueFieldEditor.setDialogToOpen(_providedSelectionDialog); // Set the initial selection for provided selection dialog. if (selectionDialogProvided) { // Each provided selection dialog has to be able to deal with the a string representation of the initial selected object. setInitialSelectionForProvidedSelectionDialog(getContextElement().getReadableValue()); } // Update the selection handler. ISelectionHandler selectionHandler = getSelectionHandler(); _contextElementValueFieldEditor.setSelectionHandler(selectionHandler); // Set whether the value text field is editable or not. Text textValueWidget = (Text) _contextElementValueFieldEditor.getValueControl(); textValueWidget.setEditable(textIsEditable); // Set focus on the right widget depending on whether or not the text is editable if(textIsEditable) { textValueWidget.setFocus(); } else { // Set the focus on Browse button. _contextElementValueFieldEditor.getHelperControl().forceFocus(); } // Reset the value to empty value only (not at initialization time) when type holder has changed. if (typeHolderHasChanged) { textValueWidget.setText(ICommonConstants.EMPTY_STRING); } } } } } /** * Get the expected type for java type holder. * @param typeHolder_p * @return */ private Class getClassTypeFilter(ITypeHolder typeHolder_p) { Class result = null; // Get the expected type for given type holder (only for those that do not host primitive java types). if (typeHolder_p.isJava()) { ClassTypeHolder classTypeHolder = (ClassTypeHolder) typeHolder_p; result = classTypeHolder.getExpectedType(); } return result; } /** * Set the initial selection of the provided selection dialog(if any). * @param fullId_p */ private void setInitialSelectionForProvidedSelectionDialog(String fullId_p) { // Preconditions. if ((null == _providedSelectionDialog) || (null == fullId_p)) { return; } Object[] initialSelection = { fullId_p }; _providedSelectionDialog.setInitialSelections(initialSelection); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/ContextElementWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6200 Text-content-md5: df55b003241f3077843f3d622d547740 Text-content-sha1: 6851cd792f2ad8751693f29963f19affb994d0b0 Content-length: 6245 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.CRadioGroupFieldEditor; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.ContextElementWizard; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.widgets.Composite; /** * Implements the context element first page. * @author fournier */ public class ContextElementWizardPage extends AbstractModelElementWizardPage { /** * Constant used when this context element defines a simple key. */ private static final String CONTEXT_ELEMENT_KEY = String.valueOf(0); /** * Constant used when this context element reference another contract element. */ private static final String CONTEXT_ELEMENT_REFERENCE = String.valueOf(1); /** * Field editor used to select a simple type or to reference another contract element. */ private CRadioGroupFieldEditor _typeGroup; /** * Constructor. * @param pageName_p */ public ContextElementWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public ContextElementWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create the contract element type group. createTypeGroup(parent_p); // Finally, layout the page. handlePageLayout(parent_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#handlePageLayout(org.eclipse.swt.widgets.Composite) */ @Override protected void handlePageLayout(Composite parent_p) { FieldEditorHelper.layoutFieldEditor(parent_p, _typeGroup, 1); } /** * Create the contract element type group : Simple type or a reference to another contract element. * @param parent_p */ private void createTypeGroup(Composite parent_p) { // Get the context element. ContextElement contextElement = (ContextElement) getModelElement(); // Create a radio group field editor to allow the end-user to select between defining a key or references another contract element. String[][] labelAndValues = { { Messages.ContextElementWizardPage_Group_Key, CONTEXT_ELEMENT_KEY }, { Messages.ContextElementWizardPage_Group_Reference, CONTEXT_ELEMENT_REFERENCE } }; _typeGroup = FieldEditorHelper.createRadioGroupFieldEditor( parent_p, Messages.ContractElementWizardPage_TypeGroup_Title, 1, labelAndValues, isReadOnly() ); // Check if context element has referenced a contract element ? ContractElementReference contractElementReference = contextElement.getContractElementReference(); boolean hasReferencedContractElement = (null != contractElementReference); Object typeGroupSelection = null; if (hasReferencedContractElement) { typeGroupSelection = CONTEXT_ELEMENT_REFERENCE; } else { // If no key is defined, set as default the context element reference. typeGroupSelection = (null == contextElement.getKey()) ? CONTEXT_ELEMENT_REFERENCE : CONTEXT_ELEMENT_KEY; } _typeGroup.selectRadioButtonFor(typeGroupSelection); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // We can't finish in this page. return false; } /** * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage() */ @Override public boolean canFlipToNextPage() { // This first page is only used to select the right second one. return true; } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { IWizardPage result = null; // Get the checked radio button to open the right second page. Object radioButtonValue = _typeGroup.getSelectedRadioButton(); IWizard wizard = getWizard(); if (CONTEXT_ELEMENT_KEY.equals(radioButtonValue)) { result = wizard.getPage(ContextElementWizard.CONTEXT_ELEMENT_KEY_PAGE); } else if (CONTEXT_ELEMENT_REFERENCE.equals(radioButtonValue)) { result = wizard.getPage(ContextElementWizard.CONTEXT_ELEMENT_REFERENCE_PAGE); } return result; } /** * Is the current context element referencing a contract element ? * @return true means the context element matches a contract element. */ public boolean isReferencingContractElement() { Object radioButtonValue = _typeGroup.getSelectedRadioButton(); return CONTEXT_ELEMENT_REFERENCE.equals(radioButtonValue); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.ContextElementWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_CONTEXT_ELEMENT_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/ContractElementReferenceWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 17869 Text-content-md5: 18f591371e6053e14670817836481bba Text-content-sha1: a36bc6253cdc30137d050ddf2c63033400f49c70 Content-length: 17914 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard.page; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.eclipse.egf.common.ui.toolkit.viewers.AbstractTransferViewer; import org.eclipse.egf.common.ui.toolkit.viewers.TransferTreeViewer; import org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.ui.internal.data.UiReferencedFactoryComponentContainer; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.internal.observable.IListViewerObserver; import org.eclipse.egf.core.ui.internal.viewers.CustomTooltipLabelProvider; import org.eclipse.egf.core.ui.internal.viewers.DecoratedModelLabelProvider; import org.eclipse.egf.core.ui.internal.viewers.ObservableReferencedContractElementContentProvider; import org.eclipse.egf.core.ui.internal.viewers.PossibleContractElementReferenceTreeContentProvider; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.emf.common.util.EList; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.widgets.Composite; /** * Implements the contract element reference page, where the end-user can select the contract element dependencies to other contract elements. * @author fournier */ public class ContractElementReferenceWizardPage extends AbstractModelElementWizardPage { /** * Remove the 'addAll'& 'removeAll' buttons. */ private final int TRANSFER_BUTTONS = AbstractTransferViewer.ALL_BUTTONS & ~AbstractTransferViewer.ADD_ALL_BUTTON & ~AbstractTransferViewer.REMOVE_ALL_BUTTON; /** * Transfer tree style. */ private final int TRANSFER_TREE_STYLE = AbstractTransferViewer.SINGLE_SELECTION_VIEWER | TRANSFER_BUTTONS; /** * TransferViewer used to select referenced contract elements. */ protected AbstractTransferViewer _treeTransferViewer; /** * Label provider used in the transfer viewer. */ private ILabelProvider _decoratedLabelProvider; /** * Constructor. * @param pageName_p */ public ContractElementReferenceWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public ContractElementReferenceWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.ContractElementWizardPage_Title; } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { // No next page. return null; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { _decoratedLabelProvider = new CustomTooltipLabelProvider(new DecoratedModelLabelProvider()); // Create the transfer viewer. createTransferViewer(parent_p); } /** * Create the transfer viewer. * @param parent_p */ private void createTransferViewer(Composite parent_p) { _treeTransferViewer = new TransferTreeViewer(parent_p, TRANSFER_TREE_STYLE); // Set a selection changed handler to enable buttons only when ContractElement objects are selected. SelectionChangedHandler handler = new SelectionChangedHandler() { /** * @see org.eclipse.egf.common.ui.toolkit.widgets.handler.SelectionChangedHandler#doHandleSelection(org.eclipse.jface.viewers.ISelection) */ @Override protected boolean doHandleSelection(ISelection selection_p) { boolean result = true; // Selection must be a structured selection. if (selection_p instanceof StructuredSelection) { StructuredSelection selection = (StructuredSelection) selection_p; Iterator selectedObjects = selection.iterator(); // Iterate over the selected objects to check that every object is a kind of ContractElement. while (selectedObjects.hasNext() && result) { Object selectedObject = selectedObjects.next(); if (!(selectedObject instanceof ContractElement)) { result = false; } } } else { result = false; } return result; } }; _treeTransferViewer.setSelectionChangedHandler(handler, TRANSFER_BUTTONS); // Set specific property on the right viewer of the treeTransferViewer final AbstractTreeViewer rightViewer = (AbstractTreeViewer) _treeTransferViewer.getRightViewer(); // Set a property for always expand all nodes. rightViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); ViewerSorter defaultViewerSorter = new ViewerSorter(); rightViewer.setSorter(defaultViewerSorter); // Set specific property on the left viewer of the treeTransferViewer _treeTransferViewer.getLeftViewer().setSorter(defaultViewerSorter); // Handle right viewer initialization Collection referencedContractElements = handleRightViewerInitialization(); // Filter the other referenced contract elements from sibling contract elements. handleSiblingContractElements(referencedContractElements); // Filter the referenced contract element from context elements defined in the same factory component. handleSiblingContext(referencedContractElements); // Handle left viewer initialization handleLeftViewerInitialization(referencedContractElements); // Update transfer viewer layout to get something nice in asynch way to be sure data are loaded before layout the UI. parent_p.getDisplay().asyncExec(new Runnable() { /** * @see java.lang.Runnable#run() */ public void run() { Composite control = (Composite) _treeTransferViewer.getControl(); control.layout(); } }); } /** * Handle the referenced contract elements from the context contained in the production plan and its factory component invocations of current factory component (the one that hosts * this contract element). * @param referencedContractElements_p */ private void handleSiblingContext(Collection referencedContractElements_p) { // Get the factory component that hosts the contract which contains this contract element. FactoryComponent fc = ModelHelper.getFactoryComponentContainer(getParent()); // Get the production plan of the retrieved factory component. ProductionPlan productionPlan = ModelHelper.getProductionPlan(fc); // Get the production plan context. Context context = productionPlan.getContext(); // Get the referenced contract elements for the production plan context. referencedContractElements_p.addAll(DataHelper.getReferencedContractElementsFor(context)); List fcInvocations = productionPlan.getFactoryComponentInvocations(); // Loop over its factory component invocation context. for (FactoryComponentInvocation fcInvocation : fcInvocations) { context = fcInvocation.getContext(); // Get the referenced contract elements for the current factory component invocation context. referencedContractElements_p.addAll(DataHelper.getReferencedContractElementsFor(context)); } } /** * Handle sibling contract elements to filter their contract element references. * @param referencedContractElements_p */ private void handleSiblingContractElements(Collection referencedContractElements_p) { Contract contract = (Contract) getParent(); referencedContractElements_p.addAll(DataHelper.getReferencedContractElementsFor(contract)); } /** * Handle the left viewer initialization. * @return */ protected IContentProvider handleLeftViewerInitialization(Collection referencedContractElementList_p) { // Set content and label providers for the left viewer. _treeTransferViewer.setLeftLabelProvider(_decoratedLabelProvider); ColumnViewerToolTipSupport.enableFor((TreeViewer) _treeTransferViewer.getLeftViewer()); // Set a content provider that handles a contract with children as factory components with children as contract elements PossibleContractElementReferenceTreeContentProvider possibleContractElementReferenceTreeContentProvider = new PossibleContractElementReferenceTreeContentProvider( referencedContractElementList_p); _treeTransferViewer.setLeftContentProvider(possibleContractElementReferenceTreeContentProvider); _treeTransferViewer.setLeftInput(getParent()); // parent is a Contract. return possibleContractElementReferenceTreeContentProvider; } /** * Handle the right viewer initialization. */ protected Collection handleRightViewerInitialization() { _treeTransferViewer.setRightLabelProvider(_decoratedLabelProvider); ColumnViewerToolTipSupport.enableFor((TreeViewer) _treeTransferViewer.getRightViewer()); // Create a content provider that is able to notify UI changes. ObservableReferencedContractElementContentProvider observableContentProvider = new ObservableReferencedContractElementContentProvider(); // Set the content provider. _treeTransferViewer.setRightContentProvider(observableContentProvider); // Create the initial input for the right viewer. Collection referencedContractElements = DataHelper.getReferencedContractElementsFor(getContractElement()); UiReferencedFactoryComponentContainer initialInput = new UiReferencedFactoryComponentContainer(referencedContractElements.toArray(new ContractElement[referencedContractElements .size()])); _treeTransferViewer.setRightInput(initialInput); ContractElementListObserver contractElementListObserver = new ContractElementListObserver(); // Add an observer on our content provider. observableContentProvider.addListViewerObserver(contractElementListObserver); // Returned the already used contract element references. return referencedContractElements; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { String errorMessage = null; // First rule : check there is at least one contract element reference. boolean result = hasAtLeastOneContractReference(); if (!result) { errorMessage = Messages.ContractElementTypeWizardPage_ErrorMessage_1; } else { // Second rule : Every referenced contract element has the same type? result = checkEveryReferencedContractElementHasSameType(); if (!result) { errorMessage = Messages.ContractElementTypeWizardPage_ErrorMessage_2; } } // Set the wizard page error message, if one field is not validated. setErrorMessage(errorMessage); return result; } /** * Check if every referenced contract element has the same type. * @return */ private boolean checkEveryReferencedContractElementHasSameType() { boolean result = true; String typeHolderName = null; ContractElement contractElement = getContractElement(); Iterator iterator = contractElement.getContractElementReferences().iterator(); while (iterator.hasNext() && result) { ContractElementReference contractElementReference = iterator.next(); // Get the type holder class name. String currentTypeHolderClassName = contractElementReference.getReferencedContractElement().getContractType().getTypeHolderClassName(); if (null == typeHolderName) { typeHolderName = currentTypeHolderClassName; } else { // Compare current type holder class name with previous contract element reference one. result = typeHolderName.equals(currentTypeHolderClassName); } } // Set the type on current contract element. if (result) { ModelHelper.setContractType(contractElement, typeHolderName); } return result; } /** * Check if the contract element has at least one reference. * @return */ private boolean hasAtLeastOneContractReference() { return !getContractElement().getContractElementReferences().isEmpty(); } /** * Implement a list observer for contract element reference. * @author fournier */ class ContractElementListObserver implements IListViewerObserver { /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementAdded(java.util.List) */ public void elementAdded(List elements_p) { // List of contract element references. EList contractElementReferences = getContractElement().getContractElementReferences(); // Loop over element to add them in lists. for (Object element : elements_p) { // Get the referenced contract element. ContractElement referencedContractElement = (ContractElement) element; // Create a contract element reference for referenced contract element. ContractElementReference contractElementReference = ModelHelper.createContractElementReferenceBasedOn(referencedContractElement); // Add it to the reference objects. contractElementReferences.add(contractElementReference); } // Update the wizard page. updateButtons(); } /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementRemoved(java.util.List) */ public void elementRemoved(List elements_p) { // List of contract element references. EList contractElementReferences = getContractElement().getContractElementReferences(); // Loop over element to remove them from lists. for (Object element : elements_p) { // Get the referenced contract element. ContractElement referencedContractElement = (ContractElement) element; // Removing a contract element reference that refers this referenced contract element. Iterator iterator = contractElementReferences.iterator(); while (iterator.hasNext()) { ContractElementReference contractElementReference = iterator.next(); // Resolve it in case of. DataHelper.resolveContractElement(contractElementReference); if (referencedContractElement == contractElementReference.getReferencedContractElement()) { // Contract element reference to remove is retrieved. // Remove it from contract element reference list. iterator.remove(); } } } // Update the wizard page. updateButtons(); } /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementUpdated(java.util.List) */ public void elementUpdated(List elements_p) { // Update the wizard page. updateButtons(); } } /** * Return the handled contract element. * @return */ protected ContractElement getContractElement() { return (ContractElement) getModelElement(); } /** * @see org.eclipse.jface.dialogs.DialogPage#dispose() */ @Override public void dispose() { super.dispose(); _treeTransferViewer.dispose(); } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_CONTRACT_ELEMENT_REFERENCE_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/ContractElementTypeWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5773 Text-content-md5: 76693c4de4ec21fcf539ad617e7f7005 Text-content-sha1: e4507625d96a865503210b8e57cb148463ae5816 Content-length: 5818 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.core.ui.internal.databinding.JavaTypeHolder; import org.eclipse.egf.core.ui.internal.databinding.UpdateWizardPage; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.Type; import org.eclipse.egf.model.contract.type.ITypeHolder; import org.eclipse.egf.model.data.helper.ModelHelper; /** * Implements the contract element type page. * @author fournier */ public class ContractElementTypeWizardPage extends AbstractModelElementWizardPage { /** * Java class field editor. */ private ValidatingStringButtonFieldEditor _classFieldEditor; /** * Constructor. * @param pageName_p */ public ContractElementTypeWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public ContractElementTypeWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { // No next page. return null; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { createClassFieldEditor(parent_p); } /** * Create the field editor to select a class. * @param parent_p */ private void createClassFieldEditor(Composite parent_p) { _classFieldEditor = FieldEditorHelper.createJavaClassFieldEditor( parent_p, this, Messages.ContractElementTypeWizardPage_Class_Title, Messages.ContractElementTypeWizardPage_OpenTypeDialog_Title, getHostingProjectClassLoader(), getHostingBundle(), ITypeHolder.class, isReadOnly() ); // Get the text widget for the class name. Text className = (Text) _classFieldEditor.getValueControl(); // Get handled model element. ContractElement contractElement = getContractElement(); // Get its type Type contractType = contractElement.getContractType(); String typeHolderClassName = contractType != null ? contractType.getTypeHolderClassName() : ICommonConstants.EMPTY_STRING; // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( className, JavaTypeHolder.PROPERTY_TYPE, new JavaTypeHolder(typeHolderClassName), new JavaTypeHolderChangeListener(this) ); _classFieldEditor.isValid(true); } /** * @return */ protected ContractElement getContractElement() { return (ContractElement) getModelElement(); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _classFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.ContractElementWizardPage_Title; } /** * Handle changes performed on Java type holder. * @author fournier */ class JavaTypeHolderChangeListener extends UpdateWizardPage { /** * Constructor. * @param wizardPage_p */ public JavaTypeHolderChangeListener(AbstractModelElementWizardPage wizardPage_p) { super(wizardPage_p); } /** * @see org.eclipse.egf.core.ui.internal.databinding.UpdateWizardPage#handleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @Override public void handleValueChange(ValueChangeEvent event_p) { // Get entered value. String typeClassName = (String) event_p.getObservableValue().getValue(); // Get the contract element. ContractElement contractElement = getContractElement(); // Set entered type name. ModelHelper.setContractType(contractElement, typeClassName); // Finally, call super method to update the wizard page. super.handleValueChange(event_p); } } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_CONTRACT_ELEMENT_TYPE_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/ContractElementWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 11708 Text-content-md5: 85784c8187a6fdb88610e4078fdd08dd Text-content-sha1: 2ec5588ba98198764eaa86333ce4839951eb32a4 Content-length: 11753 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.egf.common.ui.field.SpacerFieldEditor; import org.eclipse.egf.common.ui.helper.DataBindingHelper; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.helper.MessageFormatHelper; import org.eclipse.egf.common.ui.toolkit.adapters.BooleanFieldEditorAdapter; import org.eclipse.egf.common.ui.toolkit.fields.CRadioGroupFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.ContractElementWizard; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.ContractElementReference; import org.eclipse.egf.model.ModelPackage; import org.eclipse.emf.common.util.EList; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentListener; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implements the contract element first page. * @author fournier */ public class ContractElementWizardPage extends AbstractModelElementWizardPage { /** * Constant used when this contract element defines a type. */ private static final String CONTRACT_ELEMENT_TYPE = String.valueOf(0); /** * Constant used when this contract element references other contract elements. */ private static final String CONTRACT_ELEMENT_REFERENCE = String.valueOf(1); /** * Constant used to properly layout the wizard page. */ private static final int GROUP_NUM_COLUMNS = 2; /** * Field editor used to enter the contract element key. */ private ValidatingStringFieldEditor _contractElementKeyFieldEditor; /** * Field editor used to select a simple type or to reference another contract element. */ private CRadioGroupFieldEditor _typeGroup; /** * Field editor used to define if the contract element is mandatory or not. */ private BooleanFieldEditorAdapter _checkBoxFieldEditor; /** * Constructor. * @param pageName_p * @param wizardContainer_p the wizard that contains this page. */ public ContractElementWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public ContractElementWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { Composite definitionGroup = FieldEditorHelper.createGroup( parent_p, null, SWT.NONE, GROUP_NUM_COLUMNS ); // Create the contract element key widget. createKeyFieldEditor(definitionGroup); // Create the contract element description widget. createDescriptionFieldEditor(definitionGroup); // Create a space field editor. new SpacerFieldEditor(parent_p); // Create the contract element type group. createTypeGroup(parent_p); // Create the contract element mandatory check box. createMandatoryCheckBox(parent_p); // Finally, layout the page. handlePageLayout(parent_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#handlePageLayout(org.eclipse.swt.widgets.Composite) */ @Override protected void handlePageLayout(Composite parent_p) { // Force to layout the text field editor on the right size. FieldEditorHelper.layoutFieldEditor( _contractElementKeyFieldEditor.getValueControl().getParent(), _contractElementKeyFieldEditor, GROUP_NUM_COLUMNS ); // Force to layout the text field editor on the right size. FieldEditorHelper.layoutFieldEditor( _checkBoxFieldEditor.getValueControl().getParent(), _checkBoxFieldEditor, GROUP_NUM_COLUMNS ); // Force to layout the text field editor on the right size. FieldEditorHelper.layoutFieldEditor( parent_p, _typeGroup, GROUP_NUM_COLUMNS ); } /** * Create the contract element mandatory chack box. * @param parent_p */ private void createMandatoryCheckBox(Composite parent_p) { // Get the contract element. ContractElement contractElement = (ContractElement) getModelElement(); Composite options = FieldEditorHelper.createGroup( parent_p, Messages.ContractElementWizardPage_OptionsGroup_Title, SWT.NONE, GROUP_NUM_COLUMNS ); _checkBoxFieldEditor = FieldEditorHelper.createCheckBoxFieldEditor( options, this, Messages.ContractElementWizardPage_OptionsGroup_Mandatory_Title, Messages.ContractElementWizardPage_OptionsGroup_Mandatory_Tooltip, contractElement.isMandatory(), 5, 5, isReadOnly() ); DataBindingHelper.bindControlSelectionToProperty( _checkBoxFieldEditor.getValueControl(), ModelPackage.Literals.CONTRACT_ELEMENT__MANDATORY.getName(), contractElement, null ); } /** * Create the contract element type group : Simple type or a reference to another contract element. * @param parent_p */ private void createTypeGroup(Composite parent_p) { // Get the contract element. ContractElement contractElement = (ContractElement) getModelElement(); // Create a radio group field editor to allow the end-user to select between defining a type or references other contract elements. String[][] labelAndValues = { { Messages.ContractElementWizardPage_TypeGroup_Type, CONTRACT_ELEMENT_TYPE }, { Messages.ContractElementWizardPage_TypeGroup_Reference, CONTRACT_ELEMENT_REFERENCE } }; _typeGroup = FieldEditorHelper.createRadioGroupFieldEditor( parent_p, Messages.ContractElementWizardPage_TypeGroup_Title, GROUP_NUM_COLUMNS, labelAndValues, isReadOnly() ); // Check if contract element has referenced contract elements ? EList contractElementReferences = contractElement.getContractElementReferences(); boolean hasReferencedContractElements = ((null != contractElementReferences) && !contractElementReferences.isEmpty()); Object typeGroupSelection = hasReferencedContractElements ? CONTRACT_ELEMENT_REFERENCE : CONTRACT_ELEMENT_TYPE; _typeGroup.selectRadioButtonFor(typeGroupSelection); } /** * Create the field editor where the end-user enter the contract element key name. * @param parent_p */ private void createKeyFieldEditor(Composite parent_p) { // Create a field editor to enter the contract element key. _contractElementKeyFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.ContractElementWizardPage_Key_Title, Messages.ContractElementWizardPage_Key_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(Messages.ContractElementWizardPage_Key_ErrorMessage), isReadOnly() ); // Contract element key text. Text key = _contractElementKeyFieldEditor.getTextControl(); // Set default focus on this widget. key.setFocus(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( key, ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__NAME, getModelElement(), null ); // Update valid state. _contractElementKeyFieldEditor.isValid(true); } /** * Create the description field editor. * @param definitionGroup_p */ private void createDescriptionFieldEditor(Composite parent_p) { String formattedTooltip = MessageFormatHelper.formatMessage( Messages.WizardPage_Description_Tooltip, new String[] { Messages.ContractElementWizard_Title } ); // Create a document listener to get document modification to persist in the description IDocumentListener modificationHandler = new IDocumentListener() { /** * @see org.eclipse.jface.text.IDocumentListener#documentAboutToBeChanged(org.eclipse.jface.text.DocumentEvent) */ public void documentAboutToBeChanged(DocumentEvent event_p) { // Do nothing. } public void documentChanged(DocumentEvent event_p) { // Get the entered text. IDocument document = event_p.getDocument(); String enteredText = document.get(); getModelElement().setDescription(enteredText); } }; // Create a field editor to enter the contract element description. FieldEditorHelper.createDescriptionFieldEditor( parent_p, Messages.WizardPage_Description_Title, formattedTooltip, getModelElement().getDescription(), GROUP_NUM_COLUMNS, modificationHandler, isReadOnly() ); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // We can't finish in this page. return false; } /** * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage() */ @Override public boolean canFlipToNextPage() { // Field editors to validate. IFieldEditor[] fieldEditors = { _contractElementKeyFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { IWizardPage result = null; // Get the checked radio button to open the right second page. Object radioButtonValue = _typeGroup.getSelectedRadioButton(); IWizard wizard = getWizard(); if (CONTRACT_ELEMENT_TYPE.equals(radioButtonValue)) { result = wizard.getPage(ContractElementWizard.CONTRACT_ELEMENT_TYPE_PAGE); } else if (CONTRACT_ELEMENT_REFERENCE.equals(radioButtonValue)) { result = wizard.getPage(ContractElementWizard.CONTRACT_ELEMENT_REFERENCE_PAGE); } return result; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.ContractElementWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_CONTRACT_ELEMENT_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/EditDomainWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1842 Text-content-md5: 392028dba64c5847fba2d9709debb686 Text-content-sha1: 42e894476262e18c1693b5381904d26e2da97d26 Content-length: 1887 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.widgets.Composite; /** * Implements the domain wizard page. * @author fournier */ public class EditDomainWizardPage extends AbstractDomainWizardPage { /** * Constructor. * @param pageName_p */ public EditDomainWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public EditDomainWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { createDomainFileFieldEditor(parent_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { return isDomainSelectedExist(); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.DomainWizardPage_Title; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/EditFactoryComponentWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5608 Text-content-md5: 81d3dc335ba8872fa742de3acf8a6b51 Text-content-sha1: 3cc71046c4ee04f13f8eadabf71145cdefc7dbb2 Content-length: 5653 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.helper.MessageFormatHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ModelPackage; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentListener; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implements the factory component wizard page. * @author fournier */ public class EditFactoryComponentWizardPage extends AbstractModelElementWizardPage { /** * Field editor used to enter the factory component name. */ private ValidatingStringFieldEditor _factoryComponentNameFieldEditor; /** * Constructor. * @param pageName_p */ public EditFactoryComponentWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public EditFactoryComponentWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create a field editor to enter the factory component name. createFactoryComponentNameFieldEditor(parent_p); createDescriptionFieldEditor(parent_p); } /** * Create the field editor to enter the factory component name. * @param parent_p */ private void createFactoryComponentNameFieldEditor(Composite parent_p) { // Entered name can not be null. _factoryComponentNameFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.EditFactoryComponentWizardPage_Name_Title, Messages.EditFactoryComponentWizardPage_Name_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(Messages.EditFactoryComponentWizardPage_Name_ErrorMessage), isReadOnly() ); // FactoryComponent name text. Text fcName = _factoryComponentNameFieldEditor.getTextControl(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute(fcName, ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__NAME, getModelElement(), null); // Update valid state. _factoryComponentNameFieldEditor.isValid(true); } /** * Create the description field editor. * @param definitionGroup_p */ private void createDescriptionFieldEditor(Composite parent_p) { String formattedTooltip = MessageFormatHelper.formatMessage(Messages.WizardPage_Description_Tooltip, new String[] { Messages.ContractElementWizard_Title }); // Create a document listener to get document modification to persist in the description IDocumentListener modificationHandler = new IDocumentListener() { /** * @see org.eclipse.jface.text.IDocumentListener#documentAboutToBeChanged(org.eclipse.jface.text.DocumentEvent) */ public void documentAboutToBeChanged(DocumentEvent event_p) { // Do nothing. } public void documentChanged(DocumentEvent event_p) { // Get the entered text. IDocument document = event_p.getDocument(); String enteredText = document.get(); getModelElement().setDescription(enteredText); } }; // Create a field editor to enter the contract element description. FieldEditorHelper.createDescriptionFieldEditor( parent_p, Messages.WizardPage_Description_Title, formattedTooltip, getModelElement().getDescription(), 2 /* force to have the description label at the bottom of the text */, modificationHandler, isReadOnly() ); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _factoryComponentNameFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.EditFactoryComponentWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.EDIT_FC_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/FactoryComponentInvocationWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9451 Text-content-md5: 3c14a821eab5bc8637321589a7102040 Text-content-sha1: eafbffb33c4cfc12b3bd3842f5f4206957ebe6a1 Content-length: 9496 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import java.util.Collections; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.ui.internal.databinding.ReferencedFactoryComponent; import org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler; import org.eclipse.egf.core.ui.internal.dialogs.FactoryComponentSelectionDialog; import org.eclipse.egf.core.ui.internal.field.ModelElementButtonFieldEditor; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.internal.validators.ReferencedFactoryComponentValidator; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implements the factory component configuration wizard page. * @author fournier */ public class FactoryComponentInvocationWizardPage extends AbstractModelElementWizardPage { /** * Field editor used to enter the factory component invocation name. */ private ValidatingStringFieldEditor _factoryComponentInvocationNameFieldEditor; /** * Field editor used to enter the referenced factory component. */ private ValidatingStringButtonFieldEditor _referencedFactoryComponentFieldEditor; /** * Field that holds the referenced factory component id. */ protected String _referencedFactoryComponentId; /** * Constructor. * @param pageName_p */ public FactoryComponentInvocationWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public FactoryComponentInvocationWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * Get the factory component invocation managed by this page. * @return */ protected FactoryComponentInvocation getFactoryComponentInvocation() { return (FactoryComponentInvocation) getModelElement(); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create a field editor to enter the factory component configuration name. createFactoryComponentInvocationNameFieldEditor(parent_p); // Create the referenced factory component field editor. createReferencedFactoryComponentFieldEditor(parent_p); // Finally, layout the page. handlePageLayout(parent_p); } /** * Create the field editor to enter the factory component invocation name. * @param parent_p */ private void createFactoryComponentInvocationNameFieldEditor(Composite parent_p) { // Entered name can not be null. _factoryComponentInvocationNameFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.FactoryComponentInvocationWizardPage_Name_Title, Messages.FactoryComponentInvocationWizardPage_Name_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(Messages.FactoryComponentInvocationWizardPage_Name_ErrorMessage), isReadOnly() ); // FactoryComponent configuration name text. Text fcInvocationName = _factoryComponentInvocationNameFieldEditor.getTextControl(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute(fcInvocationName, ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__NAME, getModelElement(), null); // Update valid state. _factoryComponentInvocationNameFieldEditor.isValid(true); } /** * Create the referenced factory component field editor. * @param parent_p */ private void createReferencedFactoryComponentFieldEditor(Composite parent_p) { // Referenced factory component name text. FactoryComponentSelectionDialog fcSelectionDialog = new FactoryComponentSelectionDialog(getShell()); // Filter the factory component container of this factory component invocation. FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(getParent()); fcSelectionDialog.setFilteredFactoryComponents(Collections.singletonList(fcContainer)); ReferencedFactoryComponentValidator validator = new ReferencedFactoryComponentValidator(Messages.FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_ErrorMessage) { /** * @see org.eclipse.egf.core.ui.internal.validators.ReferencedFactoryComponentValidator#handleReferencedFactoryComponentChange(java.lang.String) */ @Override protected void handleReferencedFactoryComponentChange(String newReferencedFcIdValue_p) { _referencedFactoryComponentId = newReferencedFcIdValue_p; } }; _referencedFactoryComponentFieldEditor = ModelElementButtonFieldEditor.createModelElementButtonFieldEditor( parent_p, this, Messages.FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Title, Messages.FactoryComponentInvocationWizardPage_ReferencedFactoryComponent_Tooltip, fcSelectionDialog, validator, isReadOnly() ); // Get the referenced factory component name from the referenced factory component id if existing. FactoryComponentInvocation fcInvocation = getFactoryComponentInvocation(); NamedModelElementWithId referenceFc = CoreActivator.getDefault().getFactoryComponent(fcInvocation.getFactoryComponentId()); String referencedFcName = (null != referenceFc) ? referenceFc.getName() : ICommonConstants.EMPTY_STRING; ReferencedFactoryComponent referencedFc = new ReferencedFactoryComponent(referencedFcName); // Referenced factory component name text Text referencedFcNameText = _referencedFactoryComponentFieldEditor.getTextControl(parent_p); // Create a value change listener to compute the referenced factory component id according to referenced factory component name. ValueChangeHandler valueChangeHandler = new ValueChangeHandler(this) { /** * @see org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler#doHandleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @Override protected void doHandleValueChange(ValueChangeEvent event_p) { // Either set a null value (means no referenced factory component is retrieved) or a right one. getFactoryComponentInvocation().setFactoryComponentId(_referencedFactoryComponentId); } }; // Create the data binding between the text field and the related model element attribute. bindTextToAttribute(referencedFcNameText, ReferencedFactoryComponent.PROPERTY_NAME, referencedFc, valueChangeHandler); // Update valid state. _referencedFactoryComponentFieldEditor.isValid(true); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#handlePageLayout(org.eclipse.swt.widgets.Composite) */ @Override protected void handlePageLayout(Composite parent_p) { // Force to layout the text field editor on the right size. FieldEditorHelper.layoutFieldEditor(parent_p, _factoryComponentInvocationNameFieldEditor, 3); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _factoryComponentInvocationNameFieldEditor, _referencedFactoryComponentFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.FactoryComponentInvocationWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_FC_CONFIGURATION_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/MappingWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 16530 Text-content-md5: 93d2ad0ec135ec928e19a73ec9f84d76 Text-content-sha1: b11a1e755b8592634b514be7e23fce40c4a408fa Content-length: 16575 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import java.util.Iterator; import java.util.List; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.helper.StringHelper; import org.eclipse.egf.common.ui.field.ValidatingStringButtonFieldEditor; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.internal.databinding.ReferencedFactoryComponent; import org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler; import org.eclipse.egf.core.ui.internal.dialogs.FactoryComponentSelectionDialog; import org.eclipse.egf.core.ui.internal.field.ModelElementButtonFieldEditor; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.internal.validators.ReferencedFactoryComponentValidator; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.MappingModel; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implement the mapping wizard page. * @author Guillaume Brocard */ public class MappingWizardPage extends AbstractModelElementWizardPage { /** * Relative domain folder path where mapping files are located. */ protected static final String MAPPING_RELATIVE_FOLDER_PATH = "model/mapping"; //$NON-NLS-1$ /** * Mapping extension file. */ private static final String MAPPING_FILE_EXTENSION = ".ecore2ecore"; //$NON-NLS-1$ /** * Field editor used to enter the mapping name. */ private ValidatingStringFieldEditor _mappingNameFieldEditor; /** * Field editor used to enter the mapping id. */ private ValidatingStringFieldEditor _mappingIdFieldEditor; /** * Field editor used to select the factory component that the domain is coming from as source of the created mapping. */ private ValidatingStringButtonFieldEditor _fcAsSourceFieldEditor; /** * Store the id of the factory component that the domain is coming from as source of the created mapping. */ protected String _fcIdForSource; /** * Field editor used to select the factory component that the domain is coming from as target of the created mapping. */ private ValidatingStringButtonFieldEditor _fcAsTargetFieldEditor; /** * Store the id of the factory component that the domain is coming from as target of the created mapping. */ protected String _fcIdForTarget; /** * Constructor. * @param pageName_p */ public MappingWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public MappingWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create a field editor to enter the mapping id. createMappingIdFieldEditor(parent_p); // Create a field editor to enter the mapping name. createMappingNameFieldEditor(parent_p); // Create a field editor to enter the factory component used as source. createMappingSourceFieldEditor(parent_p); // Create a field editor to enter the factory component used as target. createMappingTargetFieldEditor(parent_p); // Finally, call the super method to layout the page. handlePageLayout(parent_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#handlePageLayout(org.eclipse.swt.widgets.Composite) */ @Override protected void handlePageLayout(Composite parent_p) { // Force to layout the text field editor on the right size. FieldEditorHelper.layoutFieldEditor(parent_p, _mappingIdFieldEditor, 3); FieldEditorHelper.layoutFieldEditor(parent_p, _mappingNameFieldEditor, 3); } /** * Create the mapping source field editor. * @param parent_p */ private void createMappingSourceFieldEditor(Composite parent_p) { ReferencedFactoryComponentValidator validator = new ReferencedFactoryComponentValidator(Messages.MappingWizardPage_FcAsSource_ErrorMessage) { /** * @see org.eclipse.egf.core.ui.internal.validators.ReferencedFactoryComponentValidator#handleReferencedFactoryComponentChange(java.lang.String) */ @Override protected void handleReferencedFactoryComponentChange(String newReferencedFcIdValue_p) { _fcIdForSource = newReferencedFcIdValue_p; } }; _fcAsSourceFieldEditor = ModelElementButtonFieldEditor.createModelElementButtonFieldEditor( parent_p, this, Messages.MappingWizardPage_FcAsSource_Title, Messages.MappingWizardPage_FcAsSource_Tooltip, createFactoryComponentSelectionDialog(), validator, isReadOnly() ); // Get the referenced factory component as source from the mapping model source feature if any. NamedModelElementWithId fcAsSource = CoreActivator.getDefault().getFactoryComponent(getMappingModel().getSource()); String referencedFcSourceName = (null != fcAsSource) ? fcAsSource.getName() : ICommonConstants.EMPTY_STRING; ReferencedFactoryComponent referencedFcAsSource = new ReferencedFactoryComponent(referencedFcSourceName); // Referenced factory component source name text Text referencedFcSourceNameText = _fcAsSourceFieldEditor.getTextControl(parent_p); // Create a value change listener to compute the referenced factory component id according to referenced factory component name. ValueChangeHandler valueChangeHandler = new ValueChangeHandler(this) { /** * @see org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler#doHandleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @Override protected void doHandleValueChange(ValueChangeEvent event_p) { // Either set a null value (means no referenced factory component is retrieved) or a right one. getMappingModel().setSource(_fcIdForSource); } }; // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( referencedFcSourceNameText, ReferencedFactoryComponent.PROPERTY_NAME, referencedFcAsSource, valueChangeHandler ); // Update valid state. _fcAsSourceFieldEditor.isValid(true); } /** * Create the mapping target field editor. * @param parent_p */ private void createMappingTargetFieldEditor(Composite parent_p) { ReferencedFactoryComponentValidator validator = new ReferencedFactoryComponentValidator(Messages.MappingWizardPage_FcAsTarget_ErrorMessage) { /** * @see org.eclipse.egf.core.ui.internal.validators.ReferencedFactoryComponentValidator#handleReferencedFactoryComponentChange(java.lang.String) */ @Override protected void handleReferencedFactoryComponentChange(String newReferencedFcIdValue_p) { _fcIdForTarget = newReferencedFcIdValue_p; } }; _fcAsTargetFieldEditor = ModelElementButtonFieldEditor.createModelElementButtonFieldEditor( parent_p, this, Messages.MappingWizardPage_FcAsTarget_Title, Messages.MappingWizardPage_FcAsTarget_Tooltip, createFactoryComponentSelectionDialog(), validator, isReadOnly() ); // Get the referenced factory component as target from the mapping model target feature if any. NamedModelElementWithId fcAsTarget = CoreActivator.getDefault().getFactoryComponent(getMappingModel().getTarget()); String referencedFcTargetName = (null != fcAsTarget) ? fcAsTarget.getName() : ICommonConstants.EMPTY_STRING; ReferencedFactoryComponent referencedFcAsTarget = new ReferencedFactoryComponent(referencedFcTargetName); // Referenced factory component name text Text referencedFcNameAsTargetText = _fcAsTargetFieldEditor.getTextControl(parent_p); // Create a value change listener to compute the referenced factory component id according to referenced factory component name. ValueChangeHandler valueChangeHandler = new ValueChangeHandler(this) { /** * @see org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler#doHandleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @Override protected void doHandleValueChange(ValueChangeEvent event_p) { // Either set a null value (means no referenced factory component is retrieved) or a right one. getMappingModel().setTarget(_fcIdForTarget); } }; // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( referencedFcNameAsTargetText, ReferencedFactoryComponent.PROPERTY_NAME, referencedFcAsTarget, valueChangeHandler ); // Update valid state. _fcAsTargetFieldEditor.isValid(true); } /** * Create a factory component selection dialog. * @return */ private FactoryComponentSelectionDialog createFactoryComponentSelectionDialog() { FactoryComponentSelectionDialog fcSelectionDialog = new FactoryComponentSelectionDialog(getShell()); // Filtered factory components that do not have domains. List filteredFcs = EgfUiActivator.getDefault().getTargetPlatformFactoryComponents(); // Iterate over all factory components, remove the ones that do not have a domain. Iterator iterator = filteredFcs.iterator(); while (iterator.hasNext()) { FactoryComponent currentFc = iterator.next(); // Remove the factory component that has a domain. if (ModelHelper.isDomainDefined(currentFc.getDomain())) { iterator.remove(); } } // Append in filtered factory components those ones that come from the workspace. // At runtime the Ecore models involved as input or output must be in the target platform. // At the moment, the ecore2ecore serialization handles in different ways the reference to an Ecore model (for input or output) located in workspace than in // the target platform. // Hence, at runtime, an input (or output) that references a workspace Ecore model can not run because the path is wrong. filteredFcs.addAll(EgfUiActivator.getDefault().getWorkspaceFactoryComponents()); fcSelectionDialog.setFilteredFactoryComponents(filteredFcs); return fcSelectionDialog; } /** * Create the mapping id field editor. * @param parent_p */ private void createMappingIdFieldEditor(Composite parent_p) { // Entered string can not be null. _mappingIdFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.MappingWizardPage_Id_Title, Messages.MappingWizardPage_Id_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(Messages.MappingWizardPage_Id_ErrorMessage), isReadOnly() ); // Mapping ID text Text mappingIdText = _mappingIdFieldEditor.getTextControl(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute(mappingIdText, ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__ID, getModelElement(), null); // Update valid state. _mappingIdFieldEditor.isValid(true); } /** * Create the mapping name field editor. * @param parent_p */ private void createMappingNameFieldEditor(Composite parent_p) { // Entered string can not be null. _mappingNameFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.MappingWizardPage_Name_Title, Messages.MappingWizardPage_Name_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(Messages.MappingWizardPage_Name_ErrorMessage), isReadOnly() ); // Mapping name text Text mappingNameText = _mappingNameFieldEditor.getTextControl(); // Create a value change handler to compute the path according to the mapping name attribute. ValueChangeHandler handler = new ValueChangeHandler(this) { /** * @see org.eclipse.egf.core.ui.internal.databinding.ValueChangeHandler#doHandleValueChange(org.eclipse.core.databinding.observable.value.ValueChangeEvent) */ @Override protected void doHandleValueChange(ValueChangeEvent event_p) { String mappingName = (String) event_p.diff.getNewValue(); String mappingFilePath = null; if (null != mappingName) { // Avoid to have not compatible characters in file name. String mappingfileName = StringHelper.replaceNonWordCharactersWithDot(mappingName); mappingFilePath = new StringBuilder( MAPPING_RELATIVE_FOLDER_PATH ).append( ICommonConstants.SLASH_CHARACTER ).append( mappingfileName ).append( MAPPING_FILE_EXTENSION ).toString(); } // Set the new path according to the new mapping file name. getMappingModel().setPath(mappingFilePath); } }; // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( mappingNameText, ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__NAME, getModelElement(), handler ); // Update valid state. _mappingNameFieldEditor.isValid(true); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _mappingIdFieldEditor, _mappingNameFieldEditor, _fcAsSourceFieldEditor, _fcAsTargetFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.MappingWizardPage_Title; } /** * Return the mapping model. * @return */ protected MappingModel getMappingModel() { return (MappingModel) getModelElement(); } /** * Return the folder where mapping files are located. * @return */ protected IFolder getMappingFolder() { IFolder result = null; // Get hosting project. IJavaProject hostingProject = getHostingProject(); if (null != hostingProject) { IProject project = hostingProject.getProject(); result = project.getFolder(MAPPING_RELATIVE_FOLDER_PATH); } return result; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_MAPPING_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/NewDomainWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9141 Text-content-md5: cf785b88d36bf725d527834443670397 Text-content-sha1: 02ec426a7119a52a01627e3059d47f348c21ec1a Content-length: 9186 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.field.DomainFieldEditor; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.adapters.BooleanFieldEditorAdapter; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.NotEmptyStringValidator; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implements the new domain wizard page. * @author fournier */ public class NewDomainWizardPage extends AbstractDomainWizardPage { /** * Field editor used to enter the package name. */ private ValidatingStringFieldEditor _packageNameFieldEditor; /** * Constant used to properly layout the wizard page. */ private static final int GROUP_NUM_COLUMNS = 3; private Composite _group; private BooleanFieldEditorAdapter _creationFieldEditor; /** * Constructor. * @param pageName_p */ public NewDomainWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public NewDomainWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { _group = FieldEditorHelper.createGroup(parent_p, null, SWT.NONE, GROUP_NUM_COLUMNS); createDomainCreationCheckBox(_group); // Create a field editor to enter the root package of created domain file. createPackageNameFieldEditor(_group); // Create a field editor to display domain file name. createDomainFileFieldEditor(_group); // Finally, layout the page. handlePageLayout(parent_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#handlePageLayout(org.eclipse.swt.widgets.Composite) */ @Override protected void handlePageLayout(Composite parent_p) { // Force to layout the text field editor on the right size. FieldEditorHelper.layoutFieldEditor( _packageNameFieldEditor.getTextControl().getParent(), _packageNameFieldEditor, GROUP_NUM_COLUMNS ); // Shift the Package Name Field Editor to the right. GridData gd = (GridData) _packageNameFieldEditor.getLabel().getLayoutData(); gd.horizontalIndent = 10; // Force to layout the field editor on the right size. IFieldEditor domainFileNameFieldEditor = getDomainFileNameFieldEditor(); FieldEditorHelper.layoutFieldEditor( domainFileNameFieldEditor.getValueControl().getParent(), (FieldEditor) domainFileNameFieldEditor, GROUP_NUM_COLUMNS ); // Shift the Domain File Name Field Editor to the right. gd = new GridData(); domainFileNameFieldEditor.getLabel().setLayoutData(gd); gd.horizontalIndent = 10; // Force to layout the field editor on the right size. FieldEditorHelper.layoutFieldEditor( _creationFieldEditor.getValueControl().getParent(), _creationFieldEditor, GROUP_NUM_COLUMNS ); } /** * @param group_p */ private BooleanFieldEditorAdapter createDomainCreationCheckBox(Composite group_p) { _creationFieldEditor = FieldEditorHelper.createCheckBoxFieldEditor( group_p, this, Messages.NewDomainWizardPage_CreateDomain_Title, Messages.NewDomainWizardPage_CreateDomain_Tooltip, true, 0, 0, isReadOnly() ); ((Button) _creationFieldEditor.getValueControl()).addSelectionListener( new SelectionAdapter() { /** * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) */ @SuppressWarnings("synthetic-access") @Override public void widgetSelected(SelectionEvent event_p) { boolean isCreatingDomain = ((Button) event_p.widget).getSelection(); // Handle package name selection Text packageNameText = (Text) _packageNameFieldEditor.getValueControl(); packageNameText.setEditable(isCreatingDomain); // Handle the domain file selector. IFieldEditor domainFileNameFieldEditor = getDomainFileNameFieldEditor(); domainFileNameFieldEditor.getHelperControl().setEnabled(!isCreatingDomain); if (isCreatingDomain) { // Handle specific action when creating the domain file. ((Text) domainFileNameFieldEditor.getValueControl()).setText(getDefaultDomainFilePath()); } else { // Handle specific action when browsing the domain file. packageNameText.setText(ICommonConstants.EMPTY_STRING); } // Check page validity. getCompleteStatus(); } } ); return _creationFieldEditor; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractDomainWizardPage#createDomainFileFieldEditor(org.eclipse.swt.widgets.Composite) */ @Override protected void createDomainFileFieldEditor(Composite parent_p) { super.createDomainFileFieldEditor(parent_p); DomainFieldEditor fieldEditor = (DomainFieldEditor) getDomainFileNameFieldEditor(); fieldEditor.getHelperControl().setEnabled(false); // Domain path text Text domainPath = fieldEditor.getTextControl(parent_p); // Set default value. domainPath.setText(getDefaultDomainFilePath()); // Update valid state. fieldEditor.isValid(true); } /** * Create the field editor to enter the package name. * @param parent_p */ private void createPackageNameFieldEditor(Composite parent_p) { // Entered string can not be null. _packageNameFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.NewDomainWizardPage_Package_Title, Messages.NewDomainWizardPage_Package_Tooltip, null, SWT.DEFAULT, new NotEmptyStringValidator(Messages.NewDomainWizardPage_Package_ErrorMessage), isReadOnly() ); // Update valid state. _packageNameFieldEditor.isValid(true); // Package name is not bound to a model feature. // Add listener to refresh page status. Text packageNameText = _packageNameFieldEditor.getTextControl(); packageNameText.addModifyListener( new ModifyListener() { /** * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) */ public void modifyText(ModifyEvent e_p) { updateButtons(); } } ); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { boolean result = false; // If the domain is created, check the appropriate field editor. if (_creationFieldEditor.getBooleanValue()) { // Field editors to validate. IFieldEditor[] fieldEditors = { _packageNameFieldEditor }; // Compute validation state. result = handleFieldEditorValidation(fieldEditors); } else { // An existing domain file is selected, check it. result = isDomainSelectedExist(); String errorMessage = null; if (!result) { errorMessage = Messages.NewDomainWizardPage_Domain_ErrorMessage; } setErrorMessage(errorMessage); } return result; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.DomainWizardPage_Title; } /** * Return the root package entered by the end-user. * @return */ public String getRootPackage() { return _packageNameFieldEditor.getStringValue(); } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/PatternLibraryProductionSequenceWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5400 Text-content-md5: 055c11ac48e50311bb2340957cc17978 Text-content-sha1: e745399472df9db260d642350667e33bc01ec192 Content-length: 5445 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard.page; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.eclipse.egf.common.helper.PatternLibrarySequenceHelper; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.AbstractPatternLibraryWizard; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizardPage; /** * Implement the pattern library production orchestration wizard page. * @author Guillaume Brocard */ public class PatternLibraryProductionSequenceWizardPage extends AbstractPatternLibrarySequenceWizardPage { /** * List of current pattern elements involved the production orchestration. */ private List _productionContent; /** * Constructor. * @param pageName_p */ public PatternLibraryProductionSequenceWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public PatternLibraryProductionSequenceWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { return getWizard().getPage(AbstractPatternLibraryWizard.PATTERN_LIBRARY_RUNTIME_SEQUENCE_PAGE); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractPatternLibrarySequenceWizardPage#getOrchestrationValue() */ @Override protected String getOrchestrationValue() { return getPatternLibrary().getProductionOrchestration(); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractPatternLibrarySequenceWizardPage#getPatternElements(java.lang.String) */ @Override protected List getPatternElements(String orchestrationValue_p) { // Get pattern elements. List patternElementAsString = PatternLibrarySequenceHelper.extractSequenceIds(orchestrationValue_p); _productionContent = new ArrayList(patternElementAsString.size()); // Get the pattern library. PatternLibrary library = getPatternLibrary(); // Loop over pattern short ids contained in production orchestration to retrieve related pattern element model element. for (String patternElementShortId : patternElementAsString) { AbstractPatternElement patternElement = ModelHelper.getPatternElement(patternElementShortId, library); if (null != patternElement) { _productionContent.add(patternElement); } } return _productionContent; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractPatternLibrarySequenceWizardPage#getFilteredPatternElements() */ @Override protected List getFilteredPatternElements() { List result = null; result = (null == _productionContent) ? Collections.emptyList() : _productionContent; return result; } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.PatternLibraryProductionSequenceWizardPage_Title; } /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementUpdated(java.util.List) */ public void elementUpdated(List elements_p) { // Handle the production orchestration sequence. Iterator patternElements = elements_p.iterator(); List orchestrationIds = new ArrayList(elements_p.size()); // Iterate over the pattern elements to rebuild the sequence. while (patternElements.hasNext()) { AbstractPatternElement patternElement = (AbstractPatternElement) patternElements.next(); // Append 'pattern element' short id according to expected productionOrchestration field (have a look at 'pattern' extension-point). orchestrationIds.add(ModelHelper.getPatternElementShortId(patternElement)); } // Set the new sequence. ((PatternLibrary) getModelElement()).setProductionOrchestration(PatternLibrarySequenceHelper.getFullSequence(orchestrationIds)); // Update the production content field accordingly. _productionContent = elements_p; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_PATTERN_LIBRARY_PRODUCTION_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/PatternLibraryRuntimeSequenceWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4517 Text-content-md5: 0f95efc0346bb0628db948d620c8395f Text-content-sha1: 605e6f3f3a342a62b32f80fe4cd654ca8679715b Content-length: 4562 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.wizard.page; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.egf.common.helper.PatternHelper; import org.eclipse.egf.common.helper.PatternLibrarySequenceHelper; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.resource.ImageDescriptor; /** * Implement the pattern library runtime orchestration wizard page. * @author Guillaume Brocard */ public class PatternLibraryRuntimeSequenceWizardPage extends AbstractPatternLibrarySequenceWizardPage { /** * Constructor. * @param pageName_p */ public PatternLibraryRuntimeSequenceWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public PatternLibraryRuntimeSequenceWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractPatternLibrarySequenceWizardPage#getOrchestrationValue() */ @Override protected String getOrchestrationValue() { return getPatternLibrary().getRuntimeOrchestration(); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractPatternLibrarySequenceWizardPage#getPatternElements(java.lang.String) */ @Override protected List getPatternElements(String orchestrationValue_p) { List result = null; // Get pattern elements. List patternElementAsString = PatternLibrarySequenceHelper.extractSequenceIds(orchestrationValue_p); result = new ArrayList(patternElementAsString.size()); // Get the pattern library. PatternLibrary library = getPatternLibrary(); // Loop over pattern element full ids contained in runtime orchestration to retrieve related 'pattern element' model element. for (String patternElementFullId : patternElementAsString) { String patternElementShortId = PatternHelper.deresolveId(patternElementFullId).getValue(); AbstractPatternElement patternElement = ModelHelper.getPatternElement(patternElementShortId, library); if (null != patternElement) { result.add(patternElement); } } return result; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.PatternLibraryRuntimeSequenceWizardPage_Title; } /** * @see org.eclipse.egf.core.ui.internal.observable.IListViewerObserver#elementUpdated(java.util.List) */ public void elementUpdated(List elements_p) { // Handle the runtime orchestration sequence. Iterator patternElements = elements_p.iterator(); List orchestrationIds = new ArrayList(elements_p.size()); // Iterate over the pattern elements to rebuild the sequence. while (patternElements.hasNext()) { AbstractPatternElement patternElement = (AbstractPatternElement) patternElements.next(); // Append 'pattern element' full id according to expected runtimeOrchestration field (have a look at 'pattern' extension-point). orchestrationIds.add(patternElement.getId()); } // Set the new sequence. ((PatternLibrary) getModelElement()).setRuntimeOrchestration(PatternLibrarySequenceHelper.getFullSequence(orchestrationIds)); } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_PATTERN_LIBRARY_RUNTIME_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/PatternLibraryWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5905 Text-content-md5: 4a2fc4a67699d3078fab24fcab0cd724 Text-content-sha1: 58026c97856da29a978c719c1e0274b71ed59f67 Content-length: 5950 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.egf.common.helper.PatternHelper; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.internal.validators.PatternElementValidator; import org.eclipse.egf.core.ui.wizard.AbstractPatternLibraryWizard; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implement the pattern library wizard page. * @author Guillaume Brocard */ public class PatternLibraryWizardPage extends AbstractModelElementWizardPage { /** * Field editor used to enter the library name. */ private ValidatingStringFieldEditor _libraryNameFieldEditor; /** * Constructor. * @param pageName_p */ public PatternLibraryWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public PatternLibraryWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create the library id. createLibraryFullId(); // Create the field editor for the library name. createLibraryNameFieldEditor(parent_p); } /** * Create the field editor to enter the pattern library name. * @param parent_p */ private void createLibraryNameFieldEditor(Composite parent_p) { // Entered value can not be null. _libraryNameFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.PatternLibraryWizardPage_Name_Title, Messages.PatternLibraryWizardPage_Name_Tooltip, null, SWT.DEFAULT, new PatternElementValidator( getParent(), (AbstractPatternElement) getModelElement(), Messages.PatternLibraryWizardPage_Name_ErrorMessage ), isReadOnly() ); // Library name text. Text libraryName = _libraryNameFieldEditor.getTextControl(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( libraryName, ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__NAME, getModelElement(), null ); // Update valid state. _libraryNameFieldEditor.isValid(true); } /** * Create the pattern library id.
* @param parent_p */ private void createLibraryFullId() { AbstractPatternElement patternLibrary = getPatternLibrary(); // In creation mode, perform extra-stuffs. boolean isInCreationMode = ((AbstractPatternLibraryWizard) getModelElementWizard()).isInCreationMode(); if (isInCreationMode) { // Get the short id of the created library. String createdLibraryShortId = patternLibrary.getId(); NamedModelElementWithId parent = getParent(); // Check the parent is not the pattern viewpoint ? // If the parent is another library, the parent id is the library id. // Else we are creating a 'root' library, thus do nothing. if (parent instanceof PatternLibrary) { String parentId = parent.getId(); // At creation time, the library id is a short id. // Create the pattern element full id. String createLibraryFullId = PatternHelper.getFullId(parentId, createdLibraryShortId); // Set it. patternLibrary.setId(createLibraryFullId); } } } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _libraryNameFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.PatternLibraryWizardPage_Title; } /** * Get the handled pattern library. * @return */ protected PatternLibrary getPatternLibrary() { return (PatternLibrary) getModelElement(); } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ @Override public IWizardPage getNextPage() { return getWizard().getPage(AbstractPatternLibraryWizard.PATTERN_LIBRARY_PRODUCTION_SEQUENCE_PAGE); } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_PATTERN_LIBRARY_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/PatternWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4407 Text-content-md5: 44a020af69077eb4e4de418fa7037a83 Text-content-sha1: 012ff2dae5aed65d8b47d1517d14c496d9d19b86 Content-length: 4452 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.common.ui.toolkit.fields.ValidatingStringFieldEditor; import org.eclipse.egf.common.ui.toolkit.validators.CompoundValidator; import org.eclipse.egf.common.ui.toolkit.validators.RegExpValidator; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.internal.validators.PatternElementValidator; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.ModelPackage; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * Implement the pattern wizard page. * @author Guillaume Brocard */ public class PatternWizardPage extends AbstractModelElementWizardPage { /** * Field editor used to enter the pattern name. */ private ValidatingStringFieldEditor _patternNameFieldEditor; /** * Constructor. * @param pageName_p */ public PatternWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public PatternWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create the field editor for the name. createLibraryNameFieldEditor(parent_p); } /** * @param parent_p */ private void createLibraryNameFieldEditor(Composite parent_p) { // Entered value can not be null. CompoundValidator compoundValidator = new CompoundValidator( new RegExpValidator( org.eclipse.egf.core.ui.Messages.PatternOverviewPage_PatternNameErrorMessage, org.eclipse.egf.core.ui.Messages.PatternOverviewPage_PatternNameRegularExpression ) ); compoundValidator.addValidator( new PatternElementValidator( getParent(), (AbstractPatternElement) getModelElement(), Messages.PatternWizardPage_Name_ErrorMessage ) ); _patternNameFieldEditor = FieldEditorHelper.createStringFieldEditor( parent_p, this, Messages.PatternWizardPage_Name_Title, Messages.PatternWizardPage_Name_Tooltip, null, SWT.DEFAULT, compoundValidator, isReadOnly() ); // Library name text. Text libraryName = _patternNameFieldEditor.getTextControl(); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( libraryName, ModelPackage.Literals.NAMED_MODEL_ELEMENT_WITH_ID__NAME, getModelElement(), null ); // Update valid state. _patternNameFieldEditor.isValid(true); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _patternNameFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.PatternWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_PATTERN_WIZARD_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui/src/org/eclipse/egf/core/ui/wizard/page/TaskFactoryHolderWizardPage.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3797 Text-content-md5: 5fa976aeef3e05c6334c2845461340f4 Text-content-sha1: 311aa083c39cd1781c961f45502aec886050804b Content-length: 3842 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.wizard.page; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import org.eclipse.egf.common.ui.field.JavaClassFieldEditor; import org.eclipse.egf.common.ui.helper.FieldEditorHelper; import org.eclipse.egf.common.ui.toolkit.fields.IFieldEditor; import org.eclipse.egf.core.task.ITaskFactory; import org.eclipse.egf.core.ui.internal.help.IHelpContextIds; import org.eclipse.egf.core.ui.wizard.Messages; import org.eclipse.egf.model.ModelPackage; /** * Implements the task factory holder wizard page. * @author fournier */ public class TaskFactoryHolderWizardPage extends AbstractModelElementWizardPage { /** * Field editor used to enter the task factory holder class. */ private JavaClassFieldEditor _classFieldEditor; /** * Constructor. * @param pageName_p */ public TaskFactoryHolderWizardPage(String pageName_p) { super(pageName_p); } /** * Constructor. * @param pageName_p * @param title_p * @param titleImage_p */ public TaskFactoryHolderWizardPage(String pageName_p, String title_p, ImageDescriptor titleImage_p) { super(pageName_p, title_p, titleImage_p); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#createPageArea(org.eclipse.swt.widgets.Composite) */ @Override protected void createPageArea(Composite parent_p) { // Create a field editor to enter the task factory class name. createClassFieldEditor(parent_p); } /** * Create the field editor to select the class. * @param parent_p */ private void createClassFieldEditor(Composite parent_p) { // Entered name can not be null. _classFieldEditor = FieldEditorHelper.createJavaClassFieldEditor( parent_p, this, Messages.TaskFactoryHolderWizardPage_Class_Title, Messages.TaskFactoryHolderWizardPage_OpenTypeDialog_Title, getHostingProjectClassLoader(), getHostingBundle(), ITaskFactory.class, isReadOnly() ); // Task factory holder class name text. Text className = _classFieldEditor.getTextControl(parent_p); // Create the data binding between the text field and the related model element attribute. bindTextToAttribute( className, ModelPackage.Literals.TASK_FACTORY_HOLDER__FACTORY_CLASS, getModelElement(), null ); // Update valid state. _classFieldEditor.isValid(true); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getCompleteStatus() */ @Override protected boolean getCompleteStatus() { // Field editors to validate. IFieldEditor[] fieldEditors = { _classFieldEditor }; // Compute validation state. return handleFieldEditorValidation(fieldEditors); } /** * @see org.eclipse.egf.core.ui.wizard.page.AbstractModelElementWizardPage#getPageTitle() */ @Override protected String getPageTitle() { return Messages.TaskFactoryHolderWizardPage_Title; } /** * @see org.eclipse.egf.common.ui.wizard.page.AbstractWizardPage#getHelpContextId() */ @Override protected String getHelpContextId() { return IHelpContextIds.NEW_TASK_FACTORY_PAGE; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 489 Text-content-md5: cd8f5b5379bfefbcf4a9f2be1ad67b1f Text-content-sha1: 2c02d9a74ca67b33b4e640446472d625d51cb0ee Content-length: 534 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 694 Text-content-md5: 9cf0b45788e8e7201d7881ec8c931c19 Text-content-sha1: 1036d02ad2f1d283b216771005ac2cdd08b57f7e Content-length: 739 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.core.ui.workbench org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.core.ui.workbench/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: 866f36672e4194f189611d8b1286a903 Text-content-sha1: 3981317f5eb13b1b2cbd7dbe5823ae4dd2c7009e Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:58 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.core.ui.workbench/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 700 Text-content-md5: a11428543c9252ede0d93ff6dbfcdc65 Text-content-sha1: 0a82f3485233cd3a8c3873269d25f9d2202702f9 Content-length: 745 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.core.ui.workbench; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.pattern.ui, org.eclipse.egf.mapping.ui.editor, org.eclipse.debug.ui, org.eclipse.emf.ecoretools.diagram, org.eclipse.egf.pattern.refactoring Export-Package: org.eclipse.egf.core.ui.workbench.action.navigator, org.eclipse.egf.core.ui.workbench.perspective Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.core.ui.workbench/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/EarlyStartup$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1121 Text-content-md5: 41f198ad5f42e283b11bc68d1ee532e4 Text-content-sha1: e1f961ec3e84cb5d7062384c0269dfd4637703ad Content-length: 1180 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-0org/eclipse/egf/core/ui/workbench/EarlyStartup$1java/lang/Objectjava/lang/Runnablethis$00Lorg/eclipse/egf/core/ui/workbench/EarlyStartup;3(Lorg/eclipse/egf/core/ui/workbench/EarlyStartup;)VCode    ()VLineNumberTableLocalVariableTablethis2Lorg/eclipse/egf/core/ui/workbench/EarlyStartup$1;run 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;   registerPackageExplorerListeners@(Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)V ! "#registerPackageExplorerPartListenersolfaWorkbenchActivator9Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator; SourceFileEarlyStartup.javaEnclosingMethod).org/eclipse/egf/core/ui/workbench/EarlyStartup + earlyStartup InnerClasses   8 *+ *    NL++  ! " # #$%&'(*,  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/EarlyStartup.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 869 Text-content-md5: a32bddc5495317f662f2c493e66ffb28 Text-content-sha1: 7e2ed47c04d214fc907380e034d91021c90700ca Content-length: 928 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1+.org/eclipse/egf/core/ui/workbench/EarlyStartupjava/lang/Objectorg/eclipse/ui/IStartup()VCode  LineNumberTableLocalVariableTablethis0Lorg/eclipse/egf/core/ui/workbench/EarlyStartup; earlyStartup org/eclipse/ui/PlatformUI  getWorkbench()Lorg/eclipse/ui/IWorkbench; org/eclipse/ui/IWorkbench  getDisplay#()Lorg/eclipse/swt/widgets/Display;0org/eclipse/egf/core/ui/workbench/EarlyStartup$1  !3(Lorg/eclipse/egf/core/ui/workbench/EarlyStartup;)V #%$org/eclipse/swt/widgets/Display &' asyncExec(Ljava/lang/Runnable;)V SourceFileEarlyStartup.java InnerClasses! /*    BY*" % ()*  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2128 Text-content-md5: b75427b11cb4d705b814ae227874ae09 Text-content-sha1: bec9f3879b91da86b064e029605a59fe6377f970 Content-length: 2187 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1D9org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$1java/lang/Objectorg/eclipse/ui/IPartListener2this$09Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;<(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;)VCode    ()VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$1; partClosed+(Lorg/eclipse/ui/IWorkbenchPartReference;)V"org.eclipse.jdt.ui.PackageExplorer &org/eclipse/ui/IWorkbenchPartReference getId()Ljava/lang/String; "!java/lang/String #$equals(Ljava/lang/Object;)Z & '(getPart"(Z)Lorg/eclipse/ui/IWorkbenchPart;*;org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart ,.-7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator /0access$0y(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)V partRef_p(Lorg/eclipse/ui/IWorkbenchPartReference; partActivated ,5 67 registerPackageExplorerListeners@(Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)VpartInputChangedpartBroughtToToppartDeactivated partOpened partHidden partVisible SourceFileEgfWorkbenchActivator.javaEnclosingMethod B#registerPackageExplorerPartListener InnerClasses   8 *+ * J   \ +* +%)+PRT  123 \ +* +%)4Z\^  128 5e129 5l12: 5s12; 5z12< 512= 512>?@,AC  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1517 Text-content-md5: ea47959e4d47f408399e3b2354112661 Text-content-sha1: 5fcec2b169aa4fb9ef03acfe1f4b7e21c9c9d2d4 Content-length: 1576 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 13;org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2$1java/lang/Objectjava/lang/Runnablethis$1;Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2;val$packageExplorerView_p=Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;{(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2;Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)VCode     ()VLineNumberTableLocalVariableTablethis=Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2$1;run 9org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2 access$0v(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2;)Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator; !#";org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart $%getWorkingSetModel;()Lorg/eclipse/jdt/internal/ui/workingsets/WorkingSetModel; ')(7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator *+access$1u(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;Lorg/eclipse/jdt/internal/ui/workingsets/WorkingSetModel;)V SourceFileEgfWorkbenchActivator.javaEnclosingMethod 01propertyChange/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V InnerClasses    =*+*,*    @** &  ,-./2 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3262 Text-content-md5: 44b65fdd55d4e2d2516daa4232a29b07 Text-content-sha1: 9095e8f74fb2b6a43438ff58cd1029439e4690a5 Content-length: 3321 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 19org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2java/lang/Object.org/eclipse/jface/util/IPropertyChangeListenerthis$09Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;val$packageExplorerView_p=Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;y(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)VCode     ()VLineNumberTableLocalVariableTablethis;Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2;propertyChange/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V *org/eclipse/jface/util/PropertyChangeEvent   getProperty()Ljava/lang/String; " #$ getNewValue()Ljava/lang/Object;&checked (*)java/lang/String +,equals(Ljava/lang/Object;)Z.java/lang/Boolean -0 12 booleanValue()Z 4650org/eclipse/egf/common/ui/helper/WorkbenchHelper 78getActiveWorkbenchPage!()Lorg/eclipse/ui/IWorkbenchPage;:Eorg.eclipse.egf.core.ui.workbench.views.explorer.assetProjectExplorer <>=org/eclipse/ui/IWorkbenchPage ?@findView.(Ljava/lang/String;)Lorg/eclipse/ui/IViewPart; B C$ getSourceE org/eclipse/jface/action/IAction DG H getText JLK:org/eclipse/jdt/internal/ui/workingsets/WorkingSetMessages MNViewActionGroup_projects_labelLjava/lang/String;PPorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer OR ST updateInput(Z)V VXWorg/eclipse/ui/IViewPart YZgetSite%()Lorg/eclipse/ui/IWorkbenchPartSite; \^]!org/eclipse/ui/IWorkbenchPartSite _`getShell!()Lorg/eclipse/swt/widgets/Shell; bdcorg/eclipse/swt/widgets/Shell ef getDisplay#()Lorg/eclipse/swt/widgets/Display;h;org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2$1 gj k{(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2;Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)V monorg/eclipse/swt/widgets/Display pq asyncExec(Ljava/lang/Runnable;)Vevent_p,Lorg/eclipse/jface/util/PropertyChangeEvent;propertynewValueLjava/lang/Object;fcExplorerViewLorg/eclipse/ui/IViewPart; currentAction"Lorg/eclipse/jface/action/IAction;currentActionLabelisProjectSelectedZaccess$0v(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2;)Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator; SourceFileEgfWorkbenchActivator.javaEnclosingMethod7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator *registerPackageExplorerMenuManagerListener@(Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)V InnerClasses    =*+*,*     +M+!N%,'o--/e39;:T+AD:F:I'6OQ!U[agY**il6  ).7@R\aRrs{tN vuv)Vwx7Hyz@?{NR-|}~ %*g Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5879 Text-content-md5: b1dbec633246de0d715e2a8c85c3606e Text-content-sha1: 8d543abc7be535b862b5f4bd10234b8c90e2a4d0 Content-length: 5938 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 17org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator7org/eclipse/egf/common/ui/activator/AbstractUIActivatorPROPERTY_CHECKEDLjava/lang/String; ConstantValue checked__plugin9Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;=_isAlreadyResgisteredAsPackageExplorerWorkingSetModelListenerZ*_isAlreadyResgisteredAsMenuManagerListener()VCode  LineNumberTableLocalVariableTablethisstart%(Lorg/osgi/framework/BundleContext;)V Exceptionsjava/lang/Exception    !#"&org/eclipse/egf/core/ui/EgfUiActivator $% getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator;context"Lorg/osgi/framework/BundleContext;#registerPackageExplorerPartListener *,+0org/eclipse/egf/common/ui/helper/WorkbenchHelper -.getActiveWorkbenchPage!()Lorg/eclipse/ui/IWorkbenchPage;09org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$1 /2 3<(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;)V 576org/eclipse/ui/IWorkbenchPage 89addPartListener"(Lorg/eclipse/ui/IPartListener2;)VactiveWorkbenchPageLorg/eclipse/ui/IWorkbenchPage; registerPackageExplorerListeners@(Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)V *? @AgetPackageExplorerView?()Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart; C D=*registerPackageExplorerMenuManagerListener FHG;org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart IJgetWorkingSetModel;()Lorg/eclipse/jdt/internal/ui/workingsets/WorkingSetModel; L MN.registerPackageExplorerWorkingSetModelListener<(Lorg/eclipse/jdt/internal/ui/workingsets/WorkingSetModel;)VpackageExplorerView_p=Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;packageExplorerView S !U VWgetWorkingSetsInput'()Lorg/eclipse/core/runtime/IAdaptable;YGorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager []\7org/eclipse/jdt/internal/ui/workingsets/WorkingSetModel ^_addPropertyChangeListener3(Lorg/eclipse/jface/util/IPropertyChangeListener;)Va*org/eclipse/jface/util/PropertyChangeEventcworkingSetModelChanged `e fK(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V Xh ijpropertyChange/(Lorg/eclipse/jface/util/PropertyChangeEvent;)VworkingSetModel_p9Lorg/eclipse/jdt/internal/ui/workingsets/WorkingSetModel;workingSetModelworkingSetsManagerILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager; q  Fs tu getViewSite()Lorg/eclipse/ui/IViewSite; wyxorg/eclipse/ui/IViewSite z{ getActionBars()Lorg/eclipse/ui/IActionBars; }~org/eclipse/ui/IActionBars getMenuManager)()Lorg/eclipse/jface/action/IMenuManager; %org/eclipse/jface/action/IMenuManager getItems/()[Lorg/eclipse/jface/action/IContributionItem;$org/eclipse/jface/action/MenuManager :org/eclipse/jdt/internal/ui/workingsets/WorkingSetMessages ViewActionGroup_show_label  getMenuText()Ljava/lang/String; java/lang/String equals(Ljava/lang/Object;)Z /org/eclipse/jface/action/ActionContributionItem  getAction$()Lorg/eclipse/jface/action/IAction;  org/eclipse/jface/action/IAction getText ViewActionGroup_projects_label !ViewActionGroup_workingSets_label9org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator$2 y(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;)V ] menuManager'Lorg/eclipse/jface/action/IMenuManager;items-[Lorg/eclipse/jface/action/IContributionItem;contributionItem,Lorg/eclipse/jface/action/IContributionItem;currentMenuManager&Lorg/eclipse/jface/action/MenuManager;actionsiIuiAction"Lorg/eclipse/jface/action/IAction; uiActionLabel"unregisterPackageExplorerListeners.org/eclipse/jface/util/IPropertyChangeListener [ _removePropertyChangeListenerstop  ;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;access$0  =access$1u(Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;Lorg/eclipse/jdt/internal/ui/workingsets/WorkingSetModel;)V SourceFileEgfWorkbenchActivator.java InnerClasses! B B /*'  N*+* W>? A B &'(O)L+/Y*14IJ :;<=q+ >+M,*,B*,EK   OP QPMN>*R+M, >EM,'*R TXN+-Z-`Y*bdg.  (-=*> >kl 4ml(noD= + *p+rv|M,N-Y:662::o: 6 W  2I  2:  :    Y*+*p   iV "6>ESZ`kxf  OP"6EzZe ]_ x9 0 =s!+EM,, T*R*p    ! !OPmlF *+Ʊ   &' $$&*+ʱ&*+K/ Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/IImageKeys.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1038 Text-content-md5: ca7407af69c00da129d502c54557caa6 Text-content-sha1: 836676ed8e76a77de455a43d90160adc9bcab866 Content-length: 1097 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 10,org/eclipse/egf/core/ui/workbench/IImageKeysjava/lang/ObjectIMG_NEWLjava/lang/String; ConstantValue  obj16/new.gifIMG_EDIT obj16/edit.gif IMG_EXECUTEobj16/execute_factory.gif IMG_VALIDATEobj16/validate.gifIMG_NEW_PATTERN_MODELobj16/new_pattern_model.gifIMG_NEW_PATTERN_LIBRARYobj16/new_pattern_library.gifIMG_NEW_DOMAINobj16/new_domain.gif$IMG_NEW_FACTORY_COMPONENT_INVOCATION!obj16/new_asset_configuration.gifIMG_NEW_CONTEXT!obj16/new_context.gifIMG_NEW_CONTEXT_ELEMENT$obj16/new_context_element.gifIMG_NEW_CONTRACT_ELEMENT'obj16/new_contract_element.gifIMG_NEW_TASK_FACTORY*obj16/new_task_factory.gifIMG_NEW_MAPPING-obj16/new_mapping_model.gif SourceFileIImageKeys.java     "#%&()+,./ Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/Messages.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3020 Text-content-md5: d3f29ccb408458f2a0d0f6c6d6bab5f5 Text-content-sha1: 2f05be5ad7efbec83fd4232d99b0954d3384a775 Content-length: 3079 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1P*org/eclipse/egf/core/ui/workbench/Messagesorg/eclipse/osgi/util/NLS BUNDLE_NAMELjava/lang/String; ConstantValue *org.eclipse.egf.core.ui.workbench.messages(ExplorerActionProvider_NewMenuItem_TitleOpenModelElementAction_TitleCreateDomainAction_TitleCreateDomainAction_Tooltip,CreateFactoryComponentInvocationAction_Title.CreateFactoryComponentInvocationAction_Tooltip#CreateTaskFactoryHolderAction_Title%CreateTaskFactoryHolderAction_Tooltip!CreateContractElementAction_Title#CreateContractElementAction_TooltipCreateContextAction_TitleCreateContextAction_Tooltip CreateContextElementAction_Title"CreateContextElementAction_Tooltip CreatePatternLibraryAction_Title"CreatePatternLibraryAction_TooltipCreatePatternAction_TitleCreatePatternAction_TooltipCreateMappingAction_TitleCreateMappingAction_TooltipEditModelElementAction_TitleEditModelElementAction_TooltipDeleteAction_TitleDeleteAction_TooltipDeleteDomainAction_Message.DeleteFactoryComponentInvocationAction_Message%DeleteTaskFactoryHolderAction_Message#DeleteContractElementAction_MessageDeleteContextAction_Message"DeleteContextElementAction_Message"DeletePatternLibraryAction_Message.CleanPatternLibraryActionConfirmDialog_MessageDeletePatternAction_MessageCleanPatternAction_TitleCleanPatternAction_Tooltip%CleanPatternActionConfirmDialog_Title'CleanPatternActionConfirmDialog_MessageDeleteMappingAction_MessageExecuteFactoryAction_TitleExecuteFactoryAction_Tooltip0ExecuteFactoryAction_ValidationErrorDialog_Title!ProducePatternElementAction_Title#ProducePatternElementAction_Tooltip$ConvertPlugin2FactoryComponent_Title2ConvertPlugin2FactoryComponent_ErrorDialog_MessageValidateElementAction_Title7ValidateElementAction_ValidationReportDialog_Title_Info:ValidateElementAction_ValidationReportDialog_Title_ProblemValidateElementAction_Tooltip2ValidateElementAction_ValidationReportDialog_Title%ValidateElementAction_NoError_Message+ValidateElementAction_Error_Overall_Message,ValidateElementAction_Error_Detailed_Message,FactoryComponentView_PatternFilterText_Title()VCode D EFinitializeMessages&(Ljava/lang/String;Ljava/lang/Class;)VLineNumberTableLocalVariableTable K IAthis,Lorg/eclipse/egf/core/ui/workbench/Messages; SourceFile Messages.java!7                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?@AB,CG aHIAB3*JG giH LMNO Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1680 Text-content-md5: a98d60b65c9ba1d16ff7cf9fa2859517 Text-content-sha1: 19a5540245af724e4d437cec2eb4e079a38c5c95 Content-length: 1739 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1=Porg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler$1java/lang/Object1org/eclipse/egf/common/progress/IProgressRunnablethis$0PLorg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler;val$projectNameLjava/lang/String;e(Lorg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler;Ljava/lang/String;)VCode     ()VLineNumberTableLocalVariableTablethisRLorg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler$1;getReportingTitle()Ljava/lang/String; *org/eclipse/egf/core/ui/workbench/Messages  $ConvertPlugin2FactoryComponent_Title !#"java/text/MessageFormat $%format9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;run.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z )+*#org/eclipse/egf/pde/EgfPdeActivator ,- getDefault'()Lorg/eclipse/egf/pde/EgfPdeActivator; )/ 01convertToFactoryComponent(Ljava/lang/String;)VprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; SourceFile*ConvertPlugin2FactoryComponentHandler.javaEnclosingMethod8Norg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler :;execute>(Lorg/eclipse/core/commands/ExecutionEvent;)Ljava/lang/Object; InnerClasses    =*+*,*  P  <Y*S R &' D (*. U V  2345679<  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5472 Text-content-md5: 1a010218ab75d7ba3422ab183c7d3211 Text-content-sha1: 6a427c48455f812f4016203f44454be9317da1ec Content-length: 5531 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Norg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler1org/eclipse/egf/core/ui/actions/AbstractUiHandler()VCode  LineNumberTableLocalVariableTablethisPLorg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler;execute>(Lorg/eclipse/core/commands/ExecutionEvent;)Ljava/lang/Object; Exceptions,org/eclipse/core/commands/ExecutionException!org/eclipse/jdt/core/IJavaProject   getSelectionM(Lorg/eclipse/core/commands/ExecutionEvent;Ljava/lang/Class;)Ljava/util/List; java/util/List isEmpty()Z  !"iterator()Ljava/util/Iterator; $&%java/util/Iterator '(next()Ljava/lang/Object; * +, getProject'()Lorg/eclipse/core/resources/IProject; .0/#org/eclipse/core/resources/IProject 12getName()Ljava/lang/String; 465#org/eclipse/egf/pde/EgfPdeActivator 78 getDefault'()Lorg/eclipse/egf/pde/EgfPdeActivator; 4: ;<getPluginModelBaseU(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/pde/core/plugin/IPluginModelBase; >@?*org/eclipse/egf/core/ui/workbench/Messages AB$ConvertPlugin2FactoryComponent_TitleLjava/lang/String;Djava/lang/Object FHGjava/text/MessageFormat IJformat9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; 4L MNconvertToPlugin(Ljava/lang/String;)Z PRQ,org/eclipse/pde/core/plugin/IPluginModelBase ST getPluginBase+()Lorg/eclipse/pde/core/plugin/IPluginBase; VXW'org/eclipse/pde/core/plugin/IPluginBase Y2getId []\java/lang/String ^_equals(Ljava/lang/Object;)Z >a bB2ConvertPlugin2FactoryComponent_ErrorDialog_Message dfeorg/eclipse/ui/PlatformUI gh getWorkbench()Lorg/eclipse/ui/IWorkbench; jlkorg/eclipse/ui/IWorkbench mngetActiveWorkbenchWindow#()Lorg/eclipse/ui/IWorkbenchWindow; prqorg/eclipse/ui/IWorkbenchWindow stgetShell!()Lorg/eclipse/swt/widgets/Shell; vxw'org/eclipse/jface/dialogs/MessageDialog yz openErrorF(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;)V|Porg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler$1 {~ e(Lorg/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler;Ljava/lang/String;)V 0org/eclipse/egf/common/progress/ProgressReporter  asyncExec6(Lorg/eclipse/egf/common/progress/IProgressRunnable;)V $ hasNextexecutionEvent_p*Lorg/eclipse/core/commands/ExecutionEvent;resultLjava/lang/Object; selectionLjava/util/List;selectedJavaProject#Lorg/eclipse/jdt/core/IJavaProject;project%Lorg/eclipse/core/resources/IProject; projectNamepluginModelBase.Lorg/eclipse/pde/core/plugin/IPluginModelBase; dialogTitle convertToFCZpluginId dialogMessageconvertToFcRunnable3Lorg/eclipse/egf/common/progress/IProgressRunnable;LocalVariableTypeTable5Ljava/util/List; isEnabled  (()Lorg/eclipse/jface/viewers/ISelection;   getProjects8(Lorg/eclipse/jface/viewers/ISelection;)Ljava/util/List;   canConvert((Lorg/eclipse/core/resources/IProject;)Z&Lorg/eclipse/jface/viewers/ISelection;projectsiterLjava/util/Iterator;7Ljava/util/List;;Ljava/util/Iterator; 4 getFactoryComponentO(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/egf/model/FactoryComponent; project_p p getSelectionService$()Lorg/eclipse/ui/ISelectionService;  org/eclipse/ui/ISelectionServicecurrentSelectionactiveWorkbenchWindow!Lorg/eclipse/ui/IWorkbenchWindow; Signature_(Lorg/eclipse/jface/viewers/ISelection;)Ljava/util/List;java/util/ArrayList (I)V.org/eclipse/jface/viewers/IStructuredSelection  _add selection_p0Lorg/eclipse/jface/viewers/IStructuredSelection;selectedElementsselectedElement SourceFile*ConvertPlugin2FactoryComponentHandler.java InnerClasses!/* *   M*+N-,-:#:):-:39:=CYSE: 6 3K6 HOU:  Z0`CYSY SE: cio  u6  {Y*}:  P, Z03 458,95;>=H>Y?\@aCnF|HIJKOPY8\  ,5>BHYpB \m |7B B   K<*M,A*,N-0-:*#.~< < . def ghi"j%k6jGnIq 4K ID8"%8"%B3+ {  kLciM,,L+     MYM+,+N-:%#:,)W, . (0AK >M M D91(  D { Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditContextElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1426 Text-content-md5: 656e33e229c1b2aa70a31eeb2fb0fef5 Text-content-sha1: b4250bed0870b70daa4c10a34c5a1b95579f037d Content-length: 1485 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/Forg/eclipse/egf/core/ui/workbench/action/edit/EditContextElementActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/workbench/action/edit/EditContextElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;3org/eclipse/egf/core/ui/wizard/ContextElementWizard -org/eclipse/egf/model/NamedModelElementWithId  eContainer!()Lorg/eclipse/emf/ecore/EObject;  ! isReadOnly()Z # $R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;,$org/eclipse/egf/model/ContextElement SourceFileEditContextElementAction.java!T*+, "# * GY++*" *  %&'()*-+ 2  -. Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditContractElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1431 Text-content-md5: 6ef2a4d23f689929c1d6af0873c48f46 Text-content-sha1: 19ff2d28f0c5ddbbc2302f8efe7179151eb88d3f Content-length: 1490 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/Gorg/eclipse/egf/core/ui/workbench/action/edit/EditContractElementActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisILorg/eclipse/egf/core/ui/workbench/action/edit/EditContractElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;%org/eclipse/egf/model/ContractElement getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;4org/eclipse/egf/core/ui/wizard/ContractElementWizard ! -org/eclipse/egf/model/NamedModelElementWithId "# eContainer!()Lorg/eclipse/emf/ecore/EObject; % &' isReadOnly()Z ) *R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFileEditContractElementAction.java!T*+, "# * - *  GY++*$( 2  +,-. Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditDomainAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1765 Text-content-md5: f862f4fa471f0f5b32fcf779e0dc6fa6 Text-content-sha1: cc1b53defab2a035d435775d3e34a3698aba4533 Content-length: 1824 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1>>org/eclipse/egf/core/ui/workbench/action/edit/EditDomainActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethis@Lorg/eclipse/egf/core/ui/workbench/action/edit/EditDomainAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;/org/eclipse/egf/core/ui/wizard/EditDomainWizard -org/eclipse/egf/model/NamedModelElementWithId  eContainer!()Lorg/eclipse/emf/ecore/EObject;  ! isReadOnly()Z # $R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;,org/eclipse/egf/model/Domain isEnabled / -! 1 23getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; 576-org/eclipse/egf/model/data/helper/ModelHelper 89isDomainDefined!(Lorg/eclipse/egf/model/Domain;)ZdomainLorg/eclipse/egf/model/Domain; SourceFileEditDomainAction.java!T*+, #$ * GY++*" +  %&'()*-+ 3  -!f*.<*0+M,4< <= >@B  -:;<= Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1325 Text-content-md5: 524360e2c6986cb9278b6a2ad804db17 Text-content-sha1: 8f482d2e2525da8bf304b972c9f033e0f0f4eefc Content-length: 1384 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)Horg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;&org/eclipse/egf/model/FactoryComponent getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;9org/eclipse/egf/core/ui/wizard/EditFactoryComponentWizard  ! isReadOnly()Z # $R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFileEditFactoryComponentAction.java!T*+, "# * - *  BY++*" 4  %&'( Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentInvocationAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1486 Text-content-md5: ed10828033adadfe7abbdf0c89504c51 Text-content-sha1: 5cee3a6fd19d768d5a20f82f5cb2de6a335fb351 Content-length: 1545 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/Rorg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentInvocationActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentInvocationAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;0org/eclipse/egf/model/FactoryComponentInvocation getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;?org/eclipse/egf/core/ui/wizard/FactoryComponentInvocationWizard ! -org/eclipse/egf/model/NamedModelElementWithId "# eContainer!()Lorg/eclipse/emf/ecore/EObject; % &' isReadOnly()Z ) *R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFile)EditFactoryComponentInvocationAction.java!T*+,  ! * - (  GY++*$( 0  +,-. Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditMappingAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1404 Text-content-md5: bd5d6e440d1ccaefb17d7145338ad8c8 Text-content-sha1: b3642588aa95a01b95620942f6c0ad49b1c5d033 Content-length: 1463 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/?org/eclipse/egf/core/ui/workbench/action/edit/EditMappingActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/workbench/action/edit/EditMappingAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;,org/eclipse/egf/core/ui/wizard/MappingWizard -org/eclipse/egf/model/NamedModelElementWithId  eContainer!()Lorg/eclipse/emf/ecore/EObject;  ! isReadOnly()Z # $R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VselectedModelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;,"org/eclipse/egf/model/MappingModel SourceFileEditMappingAction.java!T*+, !" * GY++*" )  %&'()*-+ 1  -. Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditModelElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1787 Text-content-md5: 6984628fd9f786c8cdb6f895d1bf6acb Text-content-sha1: 8f2d3f636401ee6d0a9837cc1f617ef4b62aa861 Content-length: 1846 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1HDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages EditModelElementAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  EditModelElementAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/edit.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZrun()V 7 89getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; ; <= getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard; ? @AopenWizardDialog$(Lorg/eclipse/jface/wizard/Wizard;)V modelElement/Lorg/eclipse/egf/model/NamedModelElementWithId;wizard!Lorg/eclipse/jface/wizard/Wizard; SourceFileEditModelElementAction.java!z"*+,* ** "&*$%&'!(+*",-"./"01"2345[*6L*+:M*,>*/0 12+ ,- BC DEFG Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditPatternLibraryAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1708 Text-content-md5: 8fd4b67a785bcd0a8abd181fa65a2673 Text-content-sha1: 71d282616767f7ca113b306b52ea97395b5c2c70 Content-length: 1767 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18Forg/eclipse/egf/core/ui/workbench/action/edit/EditPatternLibraryActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/workbench/action/edit/EditPatternLibraryAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard; -org/eclipse/egf/model/NamedModelElementWithId  eContainer!()Lorg/eclipse/emf/ecore/EObject;&org/eclipse/egf/model/PatternViewpoint7org/eclipse/egf/core/ui/wizard/RootPatternLibraryWizard ! "# isReadOnly()Z % &S(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;ZZ)V($org/eclipse/egf/model/PatternLibrary*3org/eclipse/egf/core/ui/wizard/PatternLibraryWizard )%modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;result!Lorg/eclipse/jface/wizard/Wizard;parentLorg/eclipse/emf/ecore/EObject;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; SourceFileEditPatternLibraryAction.java!T*+, %& * :M+N-Y-+* $M-')Y-+* +M, -/ 24"5)789 *: :,-8./ 1012345-' A  67 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/edit/EditTaskFactoryHolderAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1441 Text-content-md5: 50e8025a328719d9c45763bf04d2fa5f Text-content-sha1: e090e831da4e31a22596f00687a4d3ce465f55b0 Content-length: 1500 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/Iorg/eclipse/egf/core/ui/workbench/action/edit/EditTaskFactoryHolderActionDorg/eclipse/egf/core/ui/workbench/action/edit/EditModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/action/edit/EditTaskFactoryHolderAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;'org/eclipse/egf/model/TaskFactoryHolder getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;6org/eclipse/egf/core/ui/wizard/TaskFactoryHolderWizard ! -org/eclipse/egf/model/NamedModelElementWithId "# eContainer!()Lorg/eclipse/emf/ecore/EObject; % &' isReadOnly()Z ) *R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFile EditTaskFactoryHolderAction.java!T*+, "# * - *  GY++*$( 2  +,-. Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/AbstractCleanPatternElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3552 Text-content-md5: d60cb9d4516cffab9ab80486d8890796 Text-content-sha1: 66d9daa3c4bfc0b0219a77df327a566826ac5fa1 Content-length: 3611 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Sorg/eclipse/egf/core/ui/workbench/action/explorer/AbstractCleanPatternElementActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementAction__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTableQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)V # !%7org.eclipse.egf.core.ui.workbench.action.explorer.clean ' ()setId(Ljava/lang/String;)V +-,*org/eclipse/egf/core/ui/workbench/Messages ./CleanPatternAction_TitleLjava/lang/String; 1 2)setText +4 5/CleanPatternAction_Tooltip 7 8)setToolTipTextthisULorg/eclipse/egf/core/ui/workbench/action/explorer/AbstractCleanPatternElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZrun C DEgetShell!()Lorg/eclipse/swt/widgets/Shell; +G H/%CleanPatternActionConfirmDialog_Title J KgetConfirmationMessage MON'org/eclipse/jface/dialogs/MessageDialog PQ openQuestionF(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;)Z S TdoCleanPatternElementcleanConfirmed getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;selectedModelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;cleanR(Lorg/eclipse/egf/model/PatternModel;Lorg/eclipse/core/runtime/IProgressMonitor;)V ] ^_getPatternHandlerT(Lorg/eclipse/egf/model/PatternModel;)Lorg/eclipse/egf/pattern/ecore/PatternHandler; acb,org/eclipse/egf/pattern/ecore/PatternHandler dcleanGeneratedStructures fhg)org/eclipse/core/runtime/IProgressMonitor ijworked(I)V pattern_p$Lorg/eclipse/egf/model/PatternModel; monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;patternHandler.Lorg/eclipse/egf/pattern/ecore/PatternHandler; ar  tvu"org/eclipse/egf/model/PatternModel wgetPath ay z{loadN(Ljava/lang/String;)Lorg/eclipse/egf/pattern/ecore/PatternHandler$PatternData;}java/lang/StringBuilder:AbstractCleanPatternElementAction.getPatternHandler(..) _ | ) | toString  warn*(Ljava/lang/Object;Ljava/lang/Throwable;)Vjava/lang/Exception exception_pLjava/lang/Exception; loggerMessageLjava/lang/StringBuilder; SourceFile&AbstractCleanPatternElementAction.java InnerClasses8org/eclipse/egf/pattern/ecore/PatternHandler$PatternData PatternData! 3  # ! t*+,"*$&**0*36+, -./*9:;<=>?@A X*BF*IL<*R79:<9: U@KTVW 6K9:XYZ[ s+*+\N-`,eUVX Y[\*9:klmn op^_ 0aYqM,+sxWN|Y~:-,cefg"h.j409:0kl(op"  a Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2122 Text-content-md5: ff984c1f55327adfb19a87b9aa43ec5b Text-content-sha1: 64dfeda0b3d60f7c2f943da7762f2905e4bbf0ca Content-length: 2181 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1WForg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction$1java/lang/Object1org/eclipse/egf/common/progress/IProgressRunnablethis$0FLorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction; val$pattern$Lorg/eclipse/egf/model/PatternModel;m(Lorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction;Lorg/eclipse/egf/model/PatternModel;)VCode     ()VLineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction$1;getReportingTitle()Ljava/lang/String;java/lang/StringBuilder  *org/eclipse/egf/core/ui/workbench/Messages !"CleanPatternAction_TitleLjava/lang/String; $&%java/lang/String '(valueOf&(Ljava/lang/Object;)Ljava/lang/String; * +(Ljava/lang/String;)V - ./append(C)Ljava/lang/StringBuilder; 132"org/eclipse/egf/model/PatternModel 4getName 6 .7-(Ljava/lang/String;)Ljava/lang/StringBuilder; 9 :toStringrun.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z >@?#org/eclipse/core/runtime/SubMonitor ABconvertS(Lorg/eclipse/core/runtime/IProgressMonitor;I)Lorg/eclipse/core/runtime/SubMonitor; >D EFsetWorkRemaining((I)Lorg/eclipse/core/runtime/SubMonitor; HJIDorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction KLcleanR(Lorg/eclipse/egf/model/PatternModel;Lorg/eclipse/core/runtime/IProgressMonitor;)VprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;monitor%Lorg/eclipse/core/runtime/SubMonitor; SourceFileCleanPatternAction.javaEnclosingMethod UdoCleanPatternElement InnerClasses    =*+*,*  /  L"Y#) ,*0581 ";< ,+=M,CW**,G N,CW-,CW"9< =>@"A$@*B ,,MN&OPQRSHTV  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1731 Text-content-md5: c71b7c035ee3be8988beb32c530c418c Text-content-sha1: 3efa101ad8ddb82c197a62a24ce06e4b55e06c95 Content-length: 1790 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18Dorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternActionSorg/eclipse/egf/core/ui/workbench/action/explorer/AbstractCleanPatternElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZdoCleanPatternElement()V  getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;"org/eclipse/egf/model/PatternModelForg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction$1   m(Lorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction;Lorg/eclipse/egf/model/PatternModel;)V "$#0org/eclipse/egf/common/progress/ProgressReporter %& asyncExec6(Lorg/eclipse/egf/common/progress/IProgressRunnable;)Vpattern$Lorg/eclipse/egf/model/PatternModel;getConfirmationMessage()Ljava/lang/String; ,.-*org/eclipse/egf/core/ui/workbench/Messages /0'CleanPatternActionConfirmDialog_MessageLjava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; SourceFileCleanPatternAction.java InnerClasses!T*+, $% * Q*LY*+! -/F   '()*.+ M  1234- U  567  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2421 Text-content-md5: 782480e773aa4a55b0eafe8d589c8a80 Text-content-sha1: 4c8ae0c23dbd081edeb472875d874ff7c62b1a7d Content-length: 2480 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1cMorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction$1java/lang/Object1org/eclipse/egf/common/progress/IProgressRunnablethis$0MLorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction; val$library&Lorg/eclipse/egf/model/PatternLibrary;v(Lorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction;Lorg/eclipse/egf/model/PatternLibrary;)VCode     ()VLineNumberTableLocalVariableTablethisOLorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction$1;getReportingTitle()Ljava/lang/String;java/lang/StringBuilder  *org/eclipse/egf/core/ui/workbench/Messages !"CleanPatternAction_TitleLjava/lang/String; $&%java/lang/String '(valueOf&(Ljava/lang/Object;)Ljava/lang/String; * +(Ljava/lang/String;)V - ./append(C)Ljava/lang/StringBuilder; 132$org/eclipse/egf/model/PatternLibrary 4getName 6 .7-(Ljava/lang/String;)Ljava/lang/StringBuilder; 9 :toStringrun.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z 1> ?@getPatternElements%()Lorg/eclipse/emf/common/util/EList; BDC!org/eclipse/emf/common/util/EList EFsize()I HJI#org/eclipse/core/runtime/SubMonitor KLconvertS(Lorg/eclipse/core/runtime/IProgressMonitor;I)Lorg/eclipse/core/runtime/SubMonitor; HN OPsetWorkRemaining((I)Lorg/eclipse/core/runtime/SubMonitor; RTSKorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction UVaccess$0(Lorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction;Lorg/eclipse/egf/model/PatternLibrary;Lorg/eclipse/core/runtime/SubMonitor;)VprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;workImonitor%Lorg/eclipse/core/runtime/SubMonitor; SourceFileCleanPatternLibraryAction.javaEnclosingMethod adoCleanPatternElement InnerClasses    =*+*,*  D  L"Y#) ,*058F ";< =*=A=+GN-MW**-Q:-MW-MW**& LNPR*S,U2V5U;W*==WX.YZ([\]^_R`b  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3994 Text-content-md5: 7fd269e47f496a9dc274988b4e2766a3 Text-content-sha1: cc9cb07aecced897456a24f8e24742ca61515fe1 Content-length: 4053 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Korg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryActionSorg/eclipse/egf/core/ui/workbench/action/explorer/AbstractCleanPatternElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmationMessage()Ljava/lang/String; *org/eclipse/egf/core/ui/workbench/Messages .CleanPatternLibraryActionConfirmDialog_MessageLjava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;!$org/eclipse/egf/model/PatternLibrarydoCleanPatternElement()V % &'getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;)Morg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction$1 (+ ,v(Lorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction;Lorg/eclipse/egf/model/PatternLibrary;)V .0/0org/eclipse/egf/common/progress/ProgressReporter 12 asyncExec6(Lorg/eclipse/egf/common/progress/IProgressRunnable;)Vlibrary&Lorg/eclipse/egf/model/PatternLibrary;cleanN(Lorg/eclipse/egf/model/PatternLibrary;Lorg/eclipse/core/runtime/SubMonitor;)V8java/lang/StringBuilder : ;CleanPatternAction_Title =?>java/lang/String @AvalueOf&(Ljava/lang/Object;)Ljava/lang/String; 7C D(Ljava/lang/String;)V 7F GHappend(C)Ljava/lang/StringBuilder; J KgetName 7M GN-(Ljava/lang/String;)Ljava/lang/StringBuilder; 7P QtoString SUT#org/eclipse/core/runtime/SubMonitor VD setTaskName X YZgetPatternElements%()Lorg/eclipse/emf/common/util/EList; \^]java/util/List _`iterator()Ljava/util/Iterator; bdcjava/util/Iterator efnext()Ljava/lang/Object;h,org/eclipse/egf/model/AbstractPatternElement Sj klnewChild((I)Lorg/eclipse/core/runtime/SubMonitor; npo!org/eclipse/emf/common/util/EList qrsize()I St ulsetWorkRemaining w 56y"org/eclipse/egf/model/PatternModel gJ S| }DsubTask  5R(Lorg/eclipse/egf/model/PatternModel;Lorg/eclipse/core/runtime/IProgressMonitor;)V b hasNext()Z library_p monitor_p%Lorg/eclipse/core/runtime/SubMonitor;taskNamepatternElementListLjava/util/List;patternElementsLjava/util/Iterator;currentPatternElement.Lorg/eclipse/egf/model/AbstractPatternElement; subMonitorworkILocalVariableTypeTable@Ljava/util/List;DLjava/util/Iterator;access$0(Lorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction;Lorg/eclipse/egf/model/PatternLibrary;Lorg/eclipse/core/runtime/SubMonitor;)V SourceFileCleanPatternLibraryAction.java InnerClasses!T*+, )* * . 1  -  9  "#Q*$ L(Y*+*- BDZ   3456 ۻ7Y9<B E+ILON,-R+W:[:ag: R :,i:Wm6  sW*v: sW,-R sW,-R8x0,7Y9<B EzLO{*x,~ap{{ ^cd$f,h5i8jDlLmSoZqhrpu{v}xz{xz~i f 4,5DSH34ZAh3 ,5'*+,v a  ( Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/ExplorerActionProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 8292 Text-content-md5: a772faea7c1f5ee65d9b5117bb9ee190 Text-content-sha1: c2932de11369622d2d33f5764da9a07ccdf37879 Content-length: 8351 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1 Horg/eclipse/egf/core/ui/workbench/action/explorer/ExplorerActionProviderIorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProviderGROUP_UNDO_REDOLjava/lang/String; ConstantValue group.undoredo _undoAction+Lorg/eclipse/emf/edit/ui/action/UndoAction; _redoAction+Lorg/eclipse/emf/edit/ui/action/RedoAction;()VCode  LineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/workbench/action/explorer/ExplorerActionProvider; initActionso(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/ui/IWorkbenchPage;Lorg/eclipse/jface/viewers/ISelectionProvider;)V  initUndoRedoActions  initCreationActionsP(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;)V ! "initEditActions $ %initOpenActions ' (initDeleteActions * +initAdditionActionsshell_pLorg/eclipse/swt/widgets/Shell;page_pLorg/eclipse/ui/IWorkbenchPage;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider; 354org/eclipse/ui/PlatformUI 67 getWorkbench()Lorg/eclipse/ui/IWorkbench; 9;:org/eclipse/ui/IWorkbench <=getSharedImages ()Lorg/eclipse/ui/ISharedImages; ?A@&org/eclipse/egf/core/ui/EgfUiActivator BC getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; ?E FGgetEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;I)org/eclipse/emf/edit/ui/action/UndoAction HK L.(Lorg/eclipse/emf/edit/domain/EditingDomain;)V N P IMG_TOOL_UNDO RTSorg/eclipse/ui/ISharedImages UVgetImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; HX YZsetImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)V\IMG_TOOL_UNDO_DISABLED H^ _ZsetDisabledImageDescriptora)org/eclipse/emf/edit/ui/action/RedoAction `K d f IMG_TOOL_REDO `XiIMG_TOOL_REDO_DISABLED `^ sharedImagesLorg/eclipse/ui/ISharedImages; editingDomain9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; p qrgetOpenActions()Ljava/util/List;t>org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction sv wQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)V y{zjava/util/List |}add(Ljava/lang/Object;)Z?org/eclipse/egf/core/ui/workbench/action/open/OpenPatternAction ~v?org/eclipse/egf/core/ui/workbench/action/open/OpenMappingAction vMorg/eclipse/egf/core/ui/workbench/action/explorer/ProducePatternElementAction v openActionsLjava/util/List;LocalVariableTypeTable4Ljava/util/List;  rgetDeleteActionsKorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteDomainAction v_org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteFactoryComponentInvocationAction vVorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteTaskFactoryHolderAction vTorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContractElementAction vLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextAction vSorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextElementAction vSorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternLibraryAction vLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternAction vLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteMappingAction v deleteActions  rgetEditActionsHorg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentAction v>org/eclipse/egf/core/ui/workbench/action/edit/EditDomainAction vRorg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentInvocationAction vIorg/eclipse/egf/core/ui/workbench/action/edit/EditTaskFactoryHolderAction vGorg/eclipse/egf/core/ui/workbench/action/edit/EditContractElementAction vForg/eclipse/egf/core/ui/workbench/action/edit/EditContextElementAction vForg/eclipse/egf/core/ui/workbench/action/edit/EditPatternLibraryAction v?org/eclipse/egf/core/ui/workbench/action/edit/EditMappingAction v editActions  rgetAdditionActionsKorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction vDorg/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction vHorg/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementAction vadditionActions  r getNewActionsKorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateDomainAction v_org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateFactoryComponentInvocationAction vVorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateTaskFactoryHolderAction vTorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContractElementAction vLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextAction vSorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextElementAction vWorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateRootPatternLibraryAction vSorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternLibraryAction vLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternAction vLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction v newActionsfillContextMenu*(Lorg/eclipse/jface/action/IMenuManager;)V  %org/eclipse/jface/action/IMenuManager  appendToGroup7(Ljava/lang/String;Lorg/eclipse/jface/action/IAction;)Vmenu_p'Lorg/eclipse/jface/action/IMenuManager;fillActionBars(Lorg/eclipse/ui/IActionBars;)V   $org/eclipse/ui/actions/ActionFactory   UNDO&Lorg/eclipse/ui/actions/ActionFactory;   getId()Ljava/lang/String; org/eclipse/ui/IActionBars setGlobalActionHandler   REDO actionBars_pLorg/eclipse/ui/IActionBars;updateActionBars H update ` SourceFileExplorerActionProvider.java!  /*D #**+-*+- *+-#*+-&*+-)Z[ \]^_"`*##,-#./#01e28L>DM*HY,JM*M+OQW*M+[Q]*`Y,bc*c+eQg*c+hQj& d efg+h:jFkUldm e \klUmn%J*oN-sY+,uxW-~Y+,xW-Y+,xW-Y+,xWvxz'|8~I*JJ,-J01E E(!*N-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW. '8IZk|*,-01 " *N-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,ĹxW* '8IZk|*,-01 +9*N-Y+,˹xW-Y+,ιxW-Y+,ѹxW'8*99,-9014 46*N-Y+,عxW-Y+,۹xW-Y+,޹xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW-Y+,xW2 '8IZk|*,-01 ^*++*M+*cf&*++ *M+ *c%&&A*M*c  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/ProducePatternElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2285 Text-content-md5: 6920338f1cba3725403113facd1be52f Text-content-sha1: 2bbc79352c22f096ceb9c1bb984230c2ea0162fc Content-length: 2344 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1VMorg/eclipse/egf/core/ui/workbench/action/explorer/ProducePatternElementActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages !ProducePatternElementAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  #ProducePatternElementAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/execute_factory.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisOLorg/eclipse/egf/core/ui/workbench/action/explorer/ProducePatternElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;selectedModelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;=,org/eclipse/egf/model/AbstractPatternElementrun()V A BCgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; EGF-org/eclipse/egf/model/NamedModelElementWithId HIgetId()Ljava/lang/String; KML(org/eclipse/egf/pattern/PatternActivator N,()Lorg/eclipse/egf/pattern/PatternActivator; KP QRproducePatternsA(Ljava/lang/String;ZLorg/eclipse/core/runtime/IProgressMonitor;)ZpatternElementId SourceFile ProducePatternElementAction.java!z"*+,* ** "&*%&'(!)+*",-"./"01"23456*1+,-6789:;-<*9+ ,->?Q*@DLJ+OW*B DE+,- STU Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/AbstractCreatePatternLibraryAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1133 Text-content-md5: 453d3221bab50963fb801a80db12f22b Text-content-sha1: f2b3b10fbca1d9d3f7bef5f8df27bec41a30737d Content-length: 1192 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&[org/eclipse/egf/core/ui/workbench/action/explorer/create/AbstractCreatePatternLibraryActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;obj16/new_pattern_library.gif  getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor;  setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethis]Lorg/eclipse/egf/core/ui/workbench/action/explorer/create/AbstractCreatePatternLibraryAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ SourceFile'AbstractCreatePatternLibraryAction.java!d*+,*  !"* !"#$% Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3800 Text-content-md5: 17b143d624afa14ff30ce043c92f4907 Text-content-sha1: 3f06de6d5bbe965e7325a607c25f895eb263ad1d Content-length: 3859 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Lorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages CreateContextAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  CreateContextAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/new_context.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisNLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; isEnabled()Z ; 89 = >?getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;A5org/eclipse/egf/model/AbstractFactoryComponentFactoryC0org/eclipse/egf/model/FactoryComponentInvocation BE FGgetFactoryComponentId()Ljava/lang/String; IKJ+org/eclipse/egf/core/data/helper/DataHelper LMisBootstrapFactoryComponent(Ljava/lang/String;)Z @O PQ getContext!()Lorg/eclipse/egf/model/Context; fcFactory7Lorg/eclipse/egf/model/AbstractFactoryComponentFactory;contextLorg/eclipse/egf/model/Context;run()V Y Z[getEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; ]_^"org/eclipse/egf/model/ModelFactory `a eINSTANCE$Lorg/eclipse/egf/model/ModelFactory; ]c dQ createContext fhg+org/eclipse/egf/model/ModelPackage$Literals ij+ABSTRACT_FACTORY_COMPONENT_FACTORY__CONTEXT"Lorg/eclipse/emf/ecore/EReference; lnm'org/eclipse/emf/edit/command/AddCommand opcreate(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command; r stexecuteCommandd(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/common/command/Command;)Vv3org/eclipse/egf/core/ui/wizard/ContextElementWizard x y9 isReadOnly u{ |R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)V ~ openWizardDialog$(Lorg/eclipse/jface/wizard/Wizard;)V editingDomain9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;parentcommand(Lorg/eclipse/emf/common/command/Command;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; SourceFileCreateContextAction.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!z"*+,* ** "&*,-./!0+*",-"./"01"23456*8+,-6789@*:<8*<@M,B,BDH<,NN-<** AB CDF'G)J-L4M>P+*@,-;83-RS4 TUVW7*XL*Q(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages  CreateContextElementAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  "CreateContextElementAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/new_context_element.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisULorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;73org/eclipse/egf/core/ui/wizard/ContextElementWizard 9 :; isReadOnly()Z 6= >R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;Forg/eclipse/egf/model/Context SourceFileCreateContextElementAction.java!z"*+,* ** "&*%&'(!)+*",-"./"01"2345B6Y+*8<*0+,-?@ABCD-E*8+ ,-GH Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContractElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1983 Text-content-md5: 7a868597a413af3fab73a3292fb5466d Text-content-sha1: 08a1a86ba3011fbcae2bba7a5387692c2ba15042 Content-length: 2042 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1ITorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContractElementActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages !CreateContractElementAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  #CreateContractElementAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/new_contract_element.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisVLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContractElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;9org/eclipse/egf/model/Contract getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;=4org/eclipse/egf/core/ui/wizard/ContractElementWizard ? @A isReadOnly()Z <C DR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFile CreateContractElementAction.java!z"*+,* ** "&*%&'(!)+*",-"./"01"234567-8*0+ ,-:;BB*8+,-EFGH Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateDomainAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2949 Text-content-md5: 6a6ef6db57bccdf40e9bad077a83959d Text-content-sha1: 18c561f2fca47180ec72909a4183a66bc0264bfb Content-length: 3008 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1tKorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateDomainActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages CreateDomainAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  CreateDomainAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/new_domain.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateDomainAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;7.org/eclipse/egf/core/ui/wizard/NewDomainWizard 9;:-org/eclipse/egf/model/NamedModelElementWithId <= eContainer!()Lorg/eclipse/emf/ecore/EObject; ? @A isReadOnly()Z 6C DR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;run()V J GH L MNgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;Porg/eclipse/egf/model/Domain RTS-org/eclipse/egf/model/data/helper/ModelHelper UVisDomainDefined!(Lorg/eclipse/egf/model/Domain;)ZX>org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction Z [\getShell!()Lorg/eclipse/swt/widgets/Shell; ^ _`getSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider; W Wc desetSelectedElement(Ljava/lang/Object;)V WJdomainLorg/eclipse/egf/model/Domain;openDomainAction@Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; isEnabled q oA SourceFileCreateDomainAction.java!z"*+,* ** "&*&'()!*+*",-"./"01"2345G6Y+8+*>B*1+,-EFGH1*I*KOL+Q WY*Y*]*>aM,+b,f*9: ;='?,A0C+ 1,- %gh' ijklmn-O*J+ ,-oAn *p<*KOM,Q<*ST UWY+  ,-o3 ghrs Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateFactoryComponentInvocationAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2058 Text-content-md5: 3c3de06d306082b67effd118a8030966 Text-content-sha1: be36423adab83b63c9bb978e7ab7ea1f6c9baee0 Content-length: 2117 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1I_org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateFactoryComponentInvocationActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages ,CreateFactoryComponentInvocationAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  .CreateFactoryComponentInvocationAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!!obj16/new_asset_configuration.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisaLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateFactoryComponentInvocationAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;9$org/eclipse/egf/model/ProductionPlan getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;=?org/eclipse/egf/core/ui/wizard/FactoryComponentInvocationWizard ? @A isReadOnly()Z <C DR(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFile+CreateFactoryComponentInvocationAction.java!z"*+,* ** "&*%&'(!)+*",-"./"01"234567-8*0+ ,-:;BB*8+,-EFGH Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1243 Text-content-md5: 10a56f34e7118d805f69e981fbc4f96e Text-content-sha1: eba920916f8aa26b90df26581a44d8fee663f87c Content-length: 1302 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/Norg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction$1.org/eclipse/emf/common/notify/impl/AdapterImplthis$0NLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction;Q(Lorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction;)VCode    ()VLineNumberTableLocalVariableTablethisPLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction$1; notifyChanged/(Lorg/eclipse/emf/common/notify/Notification;)V *org/eclipse/emf/common/notify/Notification  getEventType()I   getNewValue()Ljava/lang/Object; "org/eclipse/egf/model/MappingModel "$#Lorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction %&_createdMappingModel$Lorg/eclipse/egf/model/MappingModel;msg_p,Lorg/eclipse/emf/common/notify/Notification; SourceFileCreateMappingAction.javaEnclosingMethod -run InnerClasses  8 *+ *  B   W+* +!H IK'()*+",.  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3417 Text-content-md5: fe2160274c20b37f767fb6f917d447c9 Text-content-sha1: d2d0ac54b0c6a24ddeb0d89046d24d7b76871301 Content-length: 3476 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Lorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementAction_createdMappingModel$Lorg/eclipse/egf/model/MappingModel;Q(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode   *org/eclipse/egf/core/ui/workbench/Messages CreateMappingAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  CreateMappingAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator ! getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;#obj16/new_mapping_model.gif % &'getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ) *+setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisNLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;9,org/eclipse/egf/core/ui/wizard/MappingWizard ; <= isReadOnly()Z 8? @R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;run()V F  H IJgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;LNorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction$1 KN OQ(Lorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction;)V QSR-org/eclipse/egf/model/NamedModelElementWithId TU eAdapters%()Lorg/eclipse/emf/common/util/EList; WYX!org/eclipse/emf/common/util/EList Z[add(Ljava/lang/Object;)Z ] CD_?org/eclipse/egf/core/ui/workbench/action/open/OpenMappingAction a bcgetShell!()Lorg/eclipse/swt/widgets/Shell; e fggetSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider; ^ ^j klsetSelectedElement(Ljava/lang/Object;)V ^] Wo p[removemappingViewpointmappingCreationListener0Lorg/eclipse/emf/common/notify/impl/AdapterImpl;mappingViewpointAdapters#Lorg/eclipse/emf/common/util/EList;openMappincActionALorg/eclipse/egf/core/ui/workbench/action/open/OpenMappingAction;LocalVariableTypeTableLLorg/eclipse/emf/common/util/EList;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;&org/eclipse/egf/model/MappingViewpoint SourceFileCreateMappingAction.java InnerClasses! z"*+, * **"$(,,-./!0-*"./"01"23"4567 B8Y+*:>,7-./ABCD Y*E*GLKY*MM+PN-,VW*\*E&^Y*`*d*:h:*Eim-,nW,2 ?@ BMO"Q&S-TBVKXP[X\-4Y./ OqBFrs?tuBvwx ?tyz{|} -~,c- ./ K Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1568 Text-content-md5: d67e620bef58a0e67a6b3135a790f0c5 Text-content-sha1: dd958667bfb734e59464cd3d65959fdf38a41cf3 Content-length: 1627 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 18Qorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator; obj16/new.gif  getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor;  setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisSLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZrun()V ' ()getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; + ,- getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard; / 01openWizardDialog$(Lorg/eclipse/jface/wizard/Wizard;)V modelElement/Lorg/eclipse/egf/model/NamedModelElementWithId;wizard!Lorg/eclipse/jface/wizard/Wizard; SourceFileCreateModelElementAction.java!d*+,* #$%* !"#$%[*&L*+*M*,.,- ./  23 4567 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3206 Text-content-md5: 34278be0dd5a66b26294cadd9068e383 Text-content-sha1: 9024b75cb686db46c1669a36ac1d6e779172e743 Content-length: 3265 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1{Lorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementAction_patternWizard.Lorg/eclipse/egf/core/ui/wizard/PatternWizard;Q(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode   *org/eclipse/egf/core/ui/workbench/Messages CreatePatternAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  CreatePatternAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator ! getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;#obj16/new_pattern_model.gif % &'getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ) *+setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisNLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;9,org/eclipse/egf/core/ui/wizard/PatternWizard ; <= isReadOnly()Z 8? @R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)V B modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;J$org/eclipse/egf/model/PatternLibraryrun()V N KL 8P QRgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;T"org/eclipse/egf/model/PatternModel VXW5org/eclipse/egf/pattern/ui/editor/PatternEditorHelper YZgetEditorInputD(Lorg/eclipse/egf/model/PatternModel;Z)Lorg/eclipse/ui/IEditorInput;\/org/eclipse/egf/pattern/ui/editor/PatternEditor ^`_java/lang/Class abgetName()Ljava/lang/String; d efgetShell!()Lorg/eclipse/swt/widgets/Shell; hji0org/eclipse/egf/common/ui/helper/WorkbenchHelper kl openEditorl(Lorg/eclipse/ui/IEditorInput;Ljava/lang/String;Lorg/eclipse/swt/widgets/Shell;)Lorg/eclipse/ui/IEditorPart; npoIorg/eclipse/egf/core/ui/workbench/internal/util/ActionPatternEditorHelper qraddPatternEditorToListenerC(Lorg/eclipse/ui/IEditorPart;Lorg/eclipse/egf/model/PatternModel;)VcreatedPattern$Lorg/eclipse/egf/model/PatternModel; editorInputLorg/eclipse/ui/IEditorInput; patternEditorLorg/eclipse/ui/IEditorPart; SourceFileCreatePatternAction.java! z"*+, * **"$(,1234!5-*"./"01"23"4567 N*8Y+*:>A*A, <=-./CDEFGH -I,E- ./KL <*M*AOSL+++*:UM,[]*cgN--+m,"NQSU$W2X6Z;]-*<./-st$uv2 wxyz Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternLibraryAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1618 Text-content-md5: 57397a28681651e54781c016dfb85c92 Text-content-sha1: 4f67bf1e05548e9da6cf6b5c141faf941805ae0b Content-length: 1677 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 19Sorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternLibraryAction[org/eclipse/egf/core/ui/workbench/action/explorer/create/AbstractCreatePatternLibraryActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages  CreatePatternLibraryAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  "CreatePatternLibraryAction_Tooltip  setToolTipTextLineNumberTableLocalVariableTablethisULorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternLibraryAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;'3org/eclipse/egf/core/ui/wizard/PatternLibraryWizard ) *+ isReadOnly()Z &- .S(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;ZZ)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;6$org/eclipse/egf/model/PatternLibrary SourceFileCreatePatternLibraryAction.java!j*+,* *"#$%* !"#$%C&Y+*(,,/01234-54 78 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateRootPatternLibraryAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1636 Text-content-md5: 368cba06bc6fe5b8fa8aab0b0f7a00c5 Text-content-sha1: 9b1722e9c8f6f5002d7832f4d4cca155cdd292cd Content-length: 1695 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 19Worg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateRootPatternLibraryAction[org/eclipse/egf/core/ui/workbench/action/explorer/create/AbstractCreatePatternLibraryActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages  CreatePatternLibraryAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  "CreatePatternLibraryAction_Tooltip  setToolTipTextLineNumberTableLocalVariableTablethisYLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateRootPatternLibraryAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;)&org/eclipse/egf/model/PatternViewpoint getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;-7org/eclipse/egf/core/ui/wizard/RootPatternLibraryWizard / 01 isReadOnly()Z ,3 4S(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;ZZ)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFile#CreateRootPatternLibraryAction.java!j*+,* *$%&'* !"#$%&'-(. *+C,Y+*.265678 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateTaskFactoryHolderAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2647 Text-content-md5: c7495fa94bd50895b45bf798bc5f6e01 Text-content-sha1: 919dc83eab46eba2f35431d917521620c2ea4b8b Content-length: 2706 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1bVorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateTaskFactoryHolderActionQorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages #CreateTaskFactoryHolderAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  %CreateTaskFactoryHolderAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/new_task_factory.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisXLorg/eclipse/egf/core/ui/workbench/action/explorer/create/CreateTaskFactoryHolderAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;90org/eclipse/egf/model/FactoryComponentInvocation isEnabled()Z = :; ? @AgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; 8C DEgetFactoryComponentId()Ljava/lang/String; GIH+org/eclipse/egf/core/data/helper/DataHelper JKisBootstrapFactoryComponent(Ljava/lang/String;)Z 8M NOgetTaskFactory+()Lorg/eclipse/egf/model/TaskFactoryHolder; fcInvocation2Lorg/eclipse/egf/model/FactoryComponentInvocation; taskFactory)Lorg/eclipse/egf/model/TaskFactoryHolder; getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;W6org/eclipse/egf/core/ui/wizard/TaskFactoryHolderWizard Y Z; isReadOnly V\ ]R(Lorg/eclipse/emf/ecore/EObject;Lorg/eclipse/egf/model/NamedModelElementWithId;Z)VmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFile"CreateTaskFactoryHolderAction.java!z"*+,* ** "&*'()*!++*",-"./"01"234567-8*2+ ,-:;5*<<-*>8M,BF,LN-<<*";< =?A$B1D3G+*5,-0:3"PQ$ RSTUBVY+*X[*O+,-^_`a Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1203 Text-content-md5: 0e9043ebc180094b6dc7cbdaf189443c Text-content-sha1: e4539ab01647ae6d137a29c76622d787a198043a Content-length: 1262 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*Lorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisNLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;java/lang/String *org/eclipse/egf/core/ui/workbench/Messages DeleteContextAction_MessageLjava/lang/String;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;'org/eclipse/egf/model/Context SourceFileDeleteContextAction.java!T*+, !" * JYSYSL+ )*   !"#$%-& 2  () Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1451 Text-content-md5: 3252fd6d845e27454c9975b0525e9b80 Text-content-sha1: 55d19a3d12aa5877b7ee3eebb868a60d26f338b9 Content-length: 1510 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 12Sorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextElementActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisULorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;java/lang/String *org/eclipse/egf/core/ui/workbench/Messages "DeleteContextElementAction_MessageLjava/lang/String;  !getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;#$org/eclipse/egf/model/ContextElement %'&+org/eclipse/egf/core/data/helper/DataHelper ()getLabel:(Lorg/eclipse/egf/model/ContextElement;)Ljava/lang/String;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; SourceFileDeleteContextElementAction.java!T*+, !" * RYSY*"$SL+ )*  *+,-./-" 2  01 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContractElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1418 Text-content-md5: 819199251148e846b739a8a49c1333e1 Text-content-sha1: 090d44b448217e01708ac16b8124661962702aad Content-length: 1477 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 12Torg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContractElementActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisVLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContractElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;java/lang/String *org/eclipse/egf/core/ui/workbench/Messages #DeleteContractElementAction_MessageLjava/lang/String;  !getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; #%$-org/eclipse/egf/model/NamedModelElementWithId &'getName()Ljava/lang/String;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;/%org/eclipse/egf/model/ContractElement SourceFile DeleteContractElementAction.java!T*+,  ! * QYSY*"SL+ ()  ()*+,--. 1  01 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteDomainAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4216 Text-content-md5: 971a9cb2d6604d150ec6f56966c65dbc Text-content-sha1: 5fdf3c7d66ac8854921fa8f98004270d64ff0571 Content-length: 4275 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Korg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteDomainActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteDomainAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;  getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;org/eclipse/egf/model/Domainjava/lang/String ! *org/eclipse/egf/core/ui/workbench/Messages "#DeleteDomainAction_MessageLjava/lang/String; % &'getPath()Ljava/lang/String;domainLorg/eclipse/egf/model/Domain;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; isEnabled()Z 3 01 576-org/eclipse/egf/model/data/helper/ModelHelper 89isDomainDefined!(Lorg/eclipse/egf/model/Domain;)Z closeEditor2(Lorg/eclipse/egf/model/NamedModelElementWithId;)Z 5= >? getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject; ACB#org/eclipse/core/resources/IProject DEgetFile6(Ljava/lang/String;)Lorg/eclipse/core/resources/IFile;G0org.eclipse.emf.ecore.presentation.EcoreEditorID I JKcloseFileEditor7(Lorg/eclipse/core/resources/IFile;Ljava/lang/String;)ZMorg/eclipse/core/runtime/Path LO P(Ljava/lang/String;)V LR STremoveFileExtension"()Lorg/eclipse/core/runtime/IPath;V ecorediag XZYorg/eclipse/core/runtime/IPath [\addFileExtension4(Ljava/lang/String;)Lorg/eclipse/core/runtime/IPath; X^ _'toStringa  01f*2<*M,4< GH IKM  0():;U+Q(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisaLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteFactoryComponentInvocationAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;java/lang/String *org/eclipse/egf/core/ui/workbench/Messages .DeleteFactoryComponentInvocationAction_MessageLjava/lang/String;  !getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; #%$-org/eclipse/egf/model/NamedModelElementWithId &'getName()Ljava/lang/String;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;/0org/eclipse/egf/model/FactoryComponentInvocation SourceFile+DeleteFactoryComponentInvocationAction.java!T*+,  * QYSY*"SL+ &'  ()*+,--. /  01 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteMappingAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2187 Text-content-md5: e2e78e02d03849eb441ab48201e32c37 Text-content-sha1: ec0141407cfb4b1780be4ba8ba9fe1af4e04fedf Content-length: 2246 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1LLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteMappingActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisNLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteMappingAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;  getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;"org/eclipse/egf/model/MappingModeljava/lang/String ! *org/eclipse/egf/core/ui/workbench/Messages "#DeleteMappingAction_MessageLjava/lang/String; % &'getPath()Ljava/lang/String;mapping$Lorg/eclipse/egf/model/MappingModel;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; closeEditor2(Lorg/eclipse/egf/model/NamedModelElementWithId;)Z 354-org/eclipse/egf/model/data/helper/ModelHelper 67 getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject; 9;:#org/eclipse/core/resources/IProject <=getFile6(Ljava/lang/String;)Lorg/eclipse/core/resources/IFile;?1org.eclipse.egf.mapping.ui.editor.mappingEditorId A BCcloseFileEditor7(Lorg/eclipse/core/resources/IFile;Ljava/lang/String;)ZmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;hostingProject%Lorg/eclipse/core/resources/IProject; mappingFile"Lorg/eclipse/core/resources/IFile; SourceFileDeleteMappingAction.java!T*+, $% * d*LYSY+$SM, ,-.  ()*+,-./- 6  01m+2M,+$8N*->@ ?AB * DEFGHIJK Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6910 Text-content-md5: 00cfe81b3ea90cbcc21803a0d512efe3 Text-content-sha1: cbb3ec0c729c805819d0a365582f384689c4d6b8 Content-length: 6969 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Qorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementAction_isUserConfirmationRequestedZQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode     $org/eclipse/ui/actions/ActionFactory DELETE&Lorg/eclipse/ui/actions/ActionFactory;  getId()Ljava/lang/String;  setId(Ljava/lang/String;)Vorg.eclipse.ui.edit.delete  setActionDefinitionId " #$getSharedImages ()Lorg/eclipse/ui/ISharedImages;&IMG_TOOL_DELETE (*)org/eclipse/ui/ISharedImages +,getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; . /0setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)V2IMG_TOOL_DELETE_DISABLED 4 50setDisabledImageDescriptor 798*org/eclipse/egf/core/ui/workbench/Messages :;DeleteAction_TitleLjava/lang/String; = >setText 7@ A;DeleteAction_Tooltip C DsetToolTipTextLineNumberTableLocalVariableTablethisSLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_p sharedImagesLorg/eclipse/ui/ISharedImages;setUserConfirmationRequested(Z)VuserConfirmation_prun()V V WXgetConfirmDeleteMessage()[Ljava/lang/String; Z [\getShell!()Lorg/eclipse/swt/widgets/Shell; ^`_-org/eclipse/egf/common/ui/helper/DialogHelper abopenDeleteConfirmationDialog5(Lorg/eclipse/swt/widgets/Shell;[Ljava/lang/Object;)Z d eTdoDeleteModelElementdeleteConfirmed arguments[Ljava/lang/String; j klgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; n op closeEditor2(Lorg/eclipse/egf/model/NamedModelElementWithId;)Z r stexecuteDeleteCommand2(Lorg/eclipse/egf/model/NamedModelElementWithId;)V modelElement/Lorg/eclipse/egf/model/NamedModelElementWithId; canDelete y z{getEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; }~*org/eclipse/emf/edit/command/DeleteCommand createg(Lorg/eclipse/emf/edit/domain/EditingDomain;Ljava/lang/Object;)Lorg/eclipse/emf/common/command/Command; 7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getAdapterFactory0()Lorg/eclipse/emf/common/notify/AdapterFactory;   updateLabel(Lorg/eclipse/emf/common/command/Command;Lorg/eclipse/emf/common/notify/AdapterFactory;Lorg/eclipse/egf/model/NamedModelElementWithId;)V  executeCommandd(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/common/command/Command;)VmodelElement_p editingDomain9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;command(Lorg/eclipse/emf/common/command/Command;0org/eclipse/emf/edit/provider/IItemLabelProvider ,org/eclipse/emf/common/notify/AdapterFactory adaptc(Lorg/eclipse/emf/common/notify/Notifier;Ljava/lang/Object;)Lorg/eclipse/emf/common/notify/Adapter; getText&(Ljava/lang/Object;)Ljava/lang/String; java/lang/String length()Ijava/lang/StringBuilder &org/eclipse/emf/common/command/Command getLabel  append(C)Ljava/lang/StringBuilder; -org/eclipse/egf/model/NamedModelElementWithId eClass ()Lorg/eclipse/emf/ecore/EClass; org/eclipse/emf/ecore/EClass getName -(Ljava/lang/String;)Ljava/lang/StringBuilder;.org/eclipse/emf/common/command/AbstractCommand toString setLabel command_padapterFactory_p.Lorg/eclipse/emf/common/notify/AdapterFactory; element_p labelProvider2Lorg/eclipse/emf/edit/provider/IItemLabelProvider; elementText updatedLabelLjava/lang/StringBuilder; getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;closeFileEditor7(Lorg/eclipse/core/resources/IFile;Ljava/lang/String;)Z  org/eclipse/core/resources/IFile  getFullPath"()Lorg/eclipse/core/runtime/IPath; org/eclipse/core/runtime/IPath 0org/eclipse/egf/common/ui/helper/WorkbenchHelper getAllOpenEditors6(Ljava/lang/String;)[Lorg/eclipse/ui/IEditorReference; org/eclipse/ui/IEditorReference  getEditor(Z)Lorg/eclipse/ui/IEditorPart; org/eclipse/ui/IEditorPart getEditorInput()Lorg/eclipse/ui/IEditorInput; 'org/eclipse/emf/edit/ui/util/EditUIUtil getURI@(Lorg/eclipse/ui/IEditorInput;)Lorg/eclipse/emf/common/util/URI; org/eclipse/emf/common/util/URI toPlatformString(Z)Ljava/lang/String; equals(Ljava/lang/Object;)Z  o (Lorg/eclipse/ui/IEditorPart;Z)ZmodelElementFile_p"Lorg/eclipse/core/resources/IFile; editorId_presultmodelElementPathallOpenMappingEditors"[Lorg/eclipse/ui/IEditorReference;modelElementEditorLorg/eclipse/ui/IEditorPart;iIcurrentEditorRefernce!Lorg/eclipse/ui/IEditorReference; currentEditor editorInputLorg/eclipse/ui/IEditorInput; resourceURI!Lorg/eclipse/emf/common/util/URI;currentEditorInputPath SourceFileDeleteModelElementAction.java!  K*+, * ***!:*%'-*1'3*6<*?BE* 78 9:;"</=<>C?J@F4KGHKIJKKLKM")NOPQ >* E GHFGHRST v <* *UM*Y,]<*cEOP QRTUWF  GHf gheT c*iL*+m=*+qE^` abdF GHuv wst t*xM,+|N*-,+*,-Ekm npqF*GHv  p+ ,-,-:R-:C;Y+ - :+ĶDZE. { |  *7IacoFHpGHpppvU*E;c WX 6EFGHvop 6EFGHv Q s>+:,::6=2::  :  :  :   : >EB%/8?GQUejqF sGHss;qd ;^  [  J%0/& 8 ? G;  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4268 Text-content-md5: d4223fd045e141cd9c688c1b461ff98e Text-content-sha1: a128a8e6505084d98a2b228d647428913a23c271 Content-length: 4327 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Lorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementAction__loggerLorg/apache/log4j/Logger;_refreshProjectZ()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTableQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)V % "# ' thisNLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pgetConfirmDeleteMessage()[Ljava/lang/String;2java/lang/String 465*org/eclipse/egf/core/ui/workbench/Messages 78DeletePatternAction_MessageLjava/lang/String; : ;<getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; >?-org/eclipse/egf/model/NamedModelElementWithIdmessage[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;G"org/eclipse/egf/model/PatternModel closeEditor2(Lorg/eclipse/egf/model/NamedModelElementWithId;)Z K LMgetPatternModel&()Lorg/eclipse/egf/model/PatternModel; OQP5org/eclipse/egf/pattern/ui/editor/PatternEditorHelper RSisPatternEditorOpenB(Lorg/eclipse/egf/model/PatternModel;)Lorg/eclipse/ui/IEditorPart; UWV0org/eclipse/egf/common/ui/helper/WorkbenchHelper HX (Lorg/eclipse/ui/IEditorPart;Z)ZmodelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;patternEditorPartLorg/eclipse/ui/IEditorPart;canDeletePatterndoDeleteModelElement `ba-org/eclipse/egf/model/data/helper/ModelHelper cd getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject; f ^ h ijgetPatternHandlerT(Lorg/eclipse/egf/model/PatternModel;)Lorg/eclipse/egf/pattern/ecore/PatternHandler; lnm,org/eclipse/egf/pattern/ecore/PatternHandler o deleteq,org/eclipse/core/runtime/NullProgressMonitor ps " uwv+org/eclipse/egf/common/helper/ProjectHelper xyrefreshProjectT(Lorg/eclipse/core/resources/IProject;ILorg/eclipse/core/runtime/IProgressMonitor;)Vpattern$Lorg/eclipse/egf/model/PatternModel;project%Lorg/eclipse/core/resources/IProject;patternHandler.Lorg/eclipse/egf/pattern/ecore/PatternHandler; ls F getPath l loadN(Ljava/lang/String;)Lorg/eclipse/egf/pattern/ecore/PatternHandler$PatternData;java/lang/StringBuilder!DeletePatternAction.delete(..) _ "(Ljava/lang/String;)V toString  warn*(Ljava/lang/Object;Ljava/lang/Throwable;)Vjava/lang/Exception pattern_p exception_pLjava/lang/Exception; loggerMessageLjava/lang/StringBuilder;setRefreshProject(Z)V refresh_p SourceFileDeletePatternAction.java InnerClasses8org/eclipse/egf/pattern/ecore/PatternHandler$PatternData PatternData!   3  &"!"# ] *+,$*& 34 5!* () *+ ,- ./0 Q1Y3SY*9=SL+ <=!()@ABCDE -F E! ()HI n*JNM>, ,T> NO QSU!*()YZ[\ ]LM 2*9F ]! ()^  5*JLM*&+_M*e*+gN-k*&,pYrt * eghilno!p(r4t!*5()0z{.|}~ij 8M+,lYM,+WNY:-, & {}~*6!48()8{6~*  >*& !() l Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternLibraryAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3983 Text-content-md5: 9b71e038bd00595ed70a192a214a640e Text-content-sha1: 7afd181415fe47f55a9c4690447d0056932fe87a Content-length: 4042 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Sorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternLibraryActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisULorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternLibraryAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;java/lang/String *org/eclipse/egf/core/ui/workbench/Messages "DeletePatternLibraryAction_MessageLjava/lang/String;  !getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; #%$-org/eclipse/egf/model/NamedModelElementWithId &'getName()Ljava/lang/String;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;/$org/eclipse/egf/model/PatternLibrarydoDeleteModelElement()V 3 45getPatternLibrary(()Lorg/eclipse/egf/model/PatternLibrary; 798-org/eclipse/egf/model/data/helper/ModelHelper :; getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject; = >?deleteSubLibraries)(Lorg/eclipse/egf/model/PatternLibrary;)V A 01C,org/eclipse/core/runtime/NullProgressMonitor BE 1 GIH+org/eclipse/egf/common/helper/ProjectHelper JKrefreshProjectT(Lorg/eclipse/core/resources/IProject;ILorg/eclipse/core/runtime/IProgressMonitor;)VpatternLibrary&Lorg/eclipse/egf/model/PatternLibrary;project%Lorg/eclipse/core/resources/IProject;Qjava/util/ArrayList .S TUgetPatternElements%()Lorg/eclipse/emf/common/util/EList; PW X(Ljava/util/Collection;)V PZ [\iterator()Ljava/util/Iterator; ^`_java/util/Iterator abnext()Ljava/lang/Object;d,org/eclipse/egf/model/AbstractPatternElementf"org/eclipse/egf/model/PatternModel h ij deletePattern'(Lorg/eclipse/egf/model/PatternModel;)V ^l mnhasNext()Z library_ppatternElementListLjava/util/ArrayList;patternElementsLjava/util/Iterator;currentPatternElement.Lorg/eclipse/egf/model/AbstractPatternElement;LocalVariableTypeTableELjava/util/ArrayList;DLjava/util/Iterator;zLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternAction | }~getShell!()Lorg/eclipse/swt/widgets/Shell;  getSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider;  n isReadOnly y y setSelectedElement(Ljava/lang/Object;)V y setUserConfirmationRequested(Z)V y setRefreshProject y 1run pattern_p$Lorg/eclipse/egf/model/PatternModel;deletePatternActionNLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternAction; SourceFileDeletePatternLibraryAction.java!T*+, )* * QYSY*"SL+ 12  ()*+,--. :  01r *2L+6M*+<*@,BYDF BD FHJK  LM NO>?PPY+RVM,YN3-]c:.*.<e *eg-kʱ * SUVW!Y)[5^=_FVOb 4P PoMBpq=rs!%tuvBpw=rxijz(yY*{**M,+,,, ijkl#m'n ( (452*. u   Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteTaskFactoryHolderAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1253 Text-content-md5: 2f9019b529726360e0c625d2b5b1c9ab Text-content-sha1: bb8a0edc5689a7ce02e7936d46cc77285e9f2d62 Content-length: 1312 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*Vorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteTaskFactoryHolderActionQorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisXLorg/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteTaskFactoryHolderAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetConfirmDeleteMessage()[Ljava/lang/String;java/lang/String *org/eclipse/egf/core/ui/workbench/Messages %DeleteTaskFactoryHolderAction_MessageLjava/lang/String;message[Ljava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;''org/eclipse/egf/model/TaskFactoryHolder SourceFile"DeleteTaskFactoryHolderAction.java!T*+, !" * JYSYSL+ )*   !"#$%-& 2  () Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/fc/AbstractFactoryExecutionAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3431 Text-content-md5: 8601c6e04e4fc25887ffe885dae4b96f Text-content-sha1: fb5bd305f58e784ba7ce62dfa877570847e220e6 Content-length: 3490 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Jorg/eclipse/egf/core/ui/workbench/action/fc/AbstractFactoryExecutionActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode    *org/eclipse/egf/core/ui/workbench/Messages ExecuteFactoryAction_TitleLjava/lang/String;  setText(Ljava/lang/String;)V  ExecuteFactoryAction_Tooltip  setToolTipText 7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator  getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;!obj16/execute_factory.gif # $%getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; ' ()setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)VLineNumberTableLocalVariableTablethisLLorg/eclipse/egf/core/ui/workbench/action/fc/AbstractFactoryExecutionAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;selectedModelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;run()V ;=<&org/eclipse/egf/core/ui/EgfUiActivator >*()Lorg/eclipse/egf/core/ui/EgfUiActivator; ;@ ABgetPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore;DFactoryComponent_Execution_Mode FHG-org/eclipse/jface/preference/IPreferenceStore IJ getBoolean(Ljava/lang/String;)ZLHorg/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementAction N OPgetShell!()Lorg/eclipse/swt/widgets/Shell; R STgetSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider; V WX isReadOnly()Z KZ [R(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;ZZ)V ] ^0ExecuteFactoryAction_ValidationErrorDialog_Title K` asetErrorDialogTitle c degetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; Kg hisetSelectedElement(Ljava/lang/Object;)V Kk 89 Km nXisValid prq-org/eclipse/egf/model/data/helper/ModelHelper stgetFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; vxw&org/eclipse/egf/model/FactoryComponent yzgetId()Ljava/lang/String; |~}"org/eclipse/egf/core/CoreActivator &()Lorg/eclipse/egf/core/CoreActivator; | generateFactoryComponentA(Ljava/lang/String;Lorg/eclipse/core/runtime/IProgressMonitor;Z)ZreadyToExecutepreferenceStore/Lorg/eclipse/jface/preference/IPreferenceStore;validationRequestedvalidateActionJLorg/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementAction;fcId SourceFile#AbstractFactoryExecutionAction.java!z"*+,* ** "&*)*+,!-+*",-"./"01"23456*5+,-6789f<:?M,CE>5KY*M*Q*UY:\_*bfjl<*bou:{W*6 >A BCD,E4F=GBHHKLMZOeQ+>f,-d3 ]T3,Z  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 866 Text-content-md5: 19e2d8971845019afccbfdc75dbc5899 Text-content-sha1: d0c89ae51c00b1ced1343c6c3739446f3d3bf2a5 Content-length: 925 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1@org/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryActionJorg/eclipse/egf/core/ui/workbench/action/fc/AbstractFactoryExecutionActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisBLorg/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;org/eclipse/egf/model/Factory SourceFileExecuteFactoryAction.java!T*+,  * - '   Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryComponentAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 902 Text-content-md5: 75615b12c91b08dc28ff0e682638b2cc Text-content-sha1: 32185940294a2047aa5d2c629876e60a57a808aa Content-length: 961 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Iorg/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryComponentActionJorg/eclipse/egf/core/ui/workbench/action/fc/AbstractFactoryExecutionActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryComponentAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZgetModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;&org/eclipse/egf/model/FactoryComponent SourceFile"ExecuteFactoryComponentAction.java!T*+,  * - &   Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/fc/InstalledFactoryComponentActionProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3116 Text-content-md5: 1b8f8f215e2af21b42c87a735559a19a Text-content-sha1: acaf1ca1f34db53fc85b48338487cf7df03b125f Content-length: 3175 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1aSorg/eclipse/egf/core/ui/workbench/action/fc/InstalledFactoryComponentActionProviderIorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider()VCode  LineNumberTableLocalVariableTablethisULorg/eclipse/egf/core/ui/workbench/action/fc/InstalledFactoryComponentActionProvider; initActionso(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/ui/IWorkbenchPage;Lorg/eclipse/jface/viewers/ISelectionProvider;)V  initOpenActionsP(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;)V  initEditActions  initAdditionActionsshell_pLorg/eclipse/swt/widgets/Shell;page_pLorg/eclipse/ui/IWorkbenchPage;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider; ! "#getEditActions()Ljava/util/List;%Horg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentAction $' (Q(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)V *,+java/util/List -.add(Ljava/lang/Object;)Z0>org/eclipse/egf/core/ui/workbench/action/edit/EditDomainAction /'3Rorg/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentInvocationAction 2'6Iorg/eclipse/egf/core/ui/workbench/action/edit/EditTaskFactoryHolderAction 5'9Gorg/eclipse/egf/core/ui/workbench/action/edit/EditContractElementAction 8'<Forg/eclipse/egf/core/ui/workbench/action/edit/EditContextElementAction ;'?Forg/eclipse/egf/core/ui/workbench/action/edit/EditPatternLibraryAction >'B?org/eclipse/egf/core/ui/workbench/action/edit/EditMappingAction A' editActionsLjava/util/List;LocalVariableTypeTable4Ljava/util/List; I J#getOpenActionsL>org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction K'O?org/eclipse/egf/core/ui/workbench/action/open/OpenPatternAction N' openActions S T#getAdditionActionsV@org/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryAction U'YIorg/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryComponentAction X'\Horg/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementAction ['additionActions SourceFile,InstalledFactoryComponentActionProvider.java!/* %  g*+-*+-*+- /0 12 *  * N-$Y+,&)W-/Y+,1)W-2Y+,4)W-5Y+,7)W-8Y+,:)W-;Y+,=)W->Y+,@)W-AY+,C)W * <=?'A8BIDZFkH|JK * DEF DG(*HN-KY+,M)W-NY+,P)W TVX'Y *( ((#QEF #QG9*RN-UY+,W)W-XY+,Z)W-[Y+,])W bdf'h8i *9 994^EF 4^G_` Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/navigator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1137 Text-content-md5: 7e3473c0773ffe33a98c450394284f7a Text-content-sha1: 3c4c80e70de2109c56f9dfe13c384b2f34f4fd4f Content-length: 1196 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1!Korg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider$1/org/eclipse/jface/action/ActionContributionItemthis$0KLorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider;p(Lorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider;Lorg/eclipse/jface/action/IAction;)VCode    %(Lorg/eclipse/jface/action/IAction;)VLineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider$1; $anonymous0"Lorg/eclipse/jface/action/IAction;isDirty()Z isDynamic SourceFileAbstractActionProvider.javaEnclosingMethodIorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider fillContextMenuL(Lorg/eclipse/jface/action/IMenuManager;Ljava/util/List;Ljava/lang/String;)V InnerClasses  C *+ *,     ,  ,   Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5632 Text-content-md5: 08ea86f867594ed6fe6bd66e25fc75f6 Text-content-sha1: 29719be10044224230f043cbebf58c25f6f33f14 Content-length: 5691 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Iorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider-org/eclipse/ui/navigator/CommonActionProvider GROUP_DELETELjava/lang/String; ConstantValue  group.deleteGROUP_NEW_SUB_MENU_ID group.new.subMenu _newActionsLjava/util/List; Signature4Ljava/util/List; _openActions _editActions_deleteActions_additionActions()VCode  java/util/ArrayList  (I)V   "  $  &  ( LineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider;init8(Lorg/eclipse/ui/navigator/ICommonActionExtensionSite;)V 0 -. 2433org/eclipse/ui/navigator/ICommonActionExtensionSite 56 getViewSite.()Lorg/eclipse/ui/navigator/ICommonViewerSite;83org/eclipse/ui/navigator/ICommonViewerWorkbenchSite 7: ;<getPage!()Lorg/eclipse/ui/IWorkbenchPage; 7> ?@getSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider; 7B CDgetShell!()Lorg/eclipse/swt/widgets/Shell; F GH initActionso(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/ui/IWorkbenchPage;Lorg/eclipse/jface/viewers/ISelectionProvider;)Vsite_p5Lorg/eclipse/ui/navigator/ICommonActionExtensionSite;commonViewerSite,Lorg/eclipse/ui/navigator/ICommonViewerSite; workbenchSite5Lorg/eclipse/ui/navigator/ICommonViewerWorkbenchSite;pageLorg/eclipse/ui/IWorkbenchPage;selectionProvider.Lorg/eclipse/jface/viewers/ISelectionProvider;shellLorg/eclipse/swt/widgets/Shell;fillActionBars(Lorg/eclipse/ui/IActionBars;)V X YZfillActionsBars/(Lorg/eclipse/ui/IActionBars;Ljava/util/List;)V actionBars_pLorg/eclipse/ui/IActionBars;S(Lorg/eclipse/ui/IActionBars;Ljava/util/List;)V _a`java/util/List bciterator()Ljava/util/Iterator; egfjava/util/Iterator hinext()Ljava/lang/Object;k org/eclipse/jface/action/IActionmJorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractNavigatorAction lo pqisSelectionCompatible()Z js tq isEnabled jv wxgetId()Ljava/lang/String; z|{org/eclipse/ui/IActionBars }~setGlobalActionHandler7(Ljava/lang/String;Lorg/eclipse/jface/action/IAction;)V e qhasNext actions_paction"Lorg/eclipse/jface/action/IAction;ZLocalVariableTypeTablefillContextMenu*(Lorg/eclipse/jface/action/IMenuManager;)V  createNewSubMenuManager)()Lorg/eclipse/jface/action/IMenuManager; group.new %org/eclipse/jface/action/IMenuManager  insertAfterA(Ljava/lang/String;Lorg/eclipse/jface/action/IContributionItem;)V group.edit  L(Lorg/eclipse/jface/action/IMenuManager;Ljava/util/List;Ljava/lang/String;)V group.open additionsmenu_p'Lorg/eclipse/jface/action/IMenuManager;subMenu$org/eclipse/jface/action/MenuManager *org/eclipse/egf/core/ui/workbench/Messages (ExplorerActionProvider_NewMenuItem_Title '(Ljava/lang/String;Ljava/lang/String;)VsubMenuManagerp(Lorg/eclipse/jface/action/IMenuManager;Ljava/util/List;Ljava/lang/String;)VKorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider$1 p(Lorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider;Lorg/eclipse/jface/action/IAction;)V  appendToGroup add/(Lorg/eclipse/jface/action/IContributionItem;)V groupId_pitem1Lorg/eclipse/jface/action/ActionContributionItem; getNewActions()Ljava/util/List;6()Ljava/util/List;getOpenActionsgetEditActionsgetDeleteActionsgetAdditionActions SourceFileAbstractActionProvider.java InnerClasses!    A**Y*Y!*Y#*Y%*Y')LMNO(P4Q@R* A+,-.;*+/+1M,7*,7N-9:-=:-A:*E)& YZ [\] ^(_0`:b*H;+,;IJ /KL"MN OP(QR0 STGHUVv.*+*W*+*!W*+*#W*+*%W*+*'W)q rst$u-v*.+,.[\YZ]O,^:<djN6-l -ln6-r+-u-y)"~ )7D~N*4O+,O[\O.+p O;*M+,*+*#*+*!*+*%*+*')$/:* ;+,;6UY L*+*+) *+, `,^:Mdj:6l ln6'Y*:-+- +). ",1=AMU_*H`+,```>;p= `/*)* +,/*!)* +,/*#)* +,/*%)* +,/*')* +,  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3797 Text-content-md5: 0827798efdb982463f2bfd04552197f2 Text-content-sha1: da8405b8a608397b78a922c14af4fa45e2edcd15 Content-length: 3856 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Morg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementActionJorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractNavigatorAction _modelElement/Lorg/eclipse/egf/model/NamedModelElementWithId; _isReadOnlyZQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  P(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;)V java/lang/Object getClass()Ljava/lang/Class; java/lang/Class getName()Ljava/lang/String;  setId(Ljava/lang/String;)V  LineNumberTableLocalVariableTablethisOLorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_psetSelectedElement(Ljava/lang/Object;)V--org/eclipse/egf/model/NamedModelElementWithId / object_pLjava/lang/Object;getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;executeCommandd(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;Lorg/eclipse/emf/common/command/Command;)V 7987org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain :;getCommandStack/()Lorg/eclipse/emf/common/command/CommandStack; =?>+org/eclipse/emf/common/command/CommandStack @Aexecute+(Lorg/eclipse/emf/common/command/Command;)VeditingDomain_p9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; command_p(Lorg/eclipse/emf/common/command/Command;getEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; I JK isReadOnly()Z MON&org/eclipse/egf/core/ui/EgfUiActivator PQ getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; MS TGgetEditingDomainInReadOnly MV FG editingDomain%computeImageDescriptorForModelElement@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; []\9org/eclipse/egf/model/provider/FactoryComponentEditPlugin ^_ getPluginL()Lorg/eclipse/egf/model/provider/FactoryComponentEditPlugin$Implementation; acbHorg/eclipse/egf/model/provider/FactoryComponentEditPlugin$Implementation dgetSymbolicName fhg&org/eclipse/ui/plugin/AbstractUIPlugin ijimageDescriptorFromPluginR(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor;pluginRelatedImagePath_pLjava/lang/String; getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;openWizardDialog$(Lorg/eclipse/jface/wizard/Wizard;)Vr%org/eclipse/jface/wizard/WizardDialog t uvgetShell!()Lorg/eclipse/swt/widgets/Shell; qx yD(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/wizard/IWizard;)V q{ |}open()Iwizard_p!Lorg/eclipse/jface/wizard/Wizard;dialog'Lorg/eclipse/jface/wizard/WizardDialog; SourceFileAbstractModelElementAction.java InnerClassesImplementation!   k*+, ***!1345"*#$%&'()*+ L+, *+,.!<=?"#$0123 /*.!F" #$45 M +6,<! P Q"  #$ BC DEFG ]*H LR LUL+!Z[\Y]"#$WCXY ? Z`+e!f" #$ klJK /*!n" #$mnop YqY*s+wM,zW!} ~" #$~  a[ Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/navigator/AbstractNavigatorAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2579 Text-content-md5: 59555ef0172738a51b99997e792cbe51 Text-content-sha1: 59cd73246d9dc61e8ff3b764b1967ea0c2637b94 Content-length: 2638 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1eJorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractNavigatorActionorg/eclipse/jface/action/Action _provider.Lorg/eclipse/jface/viewers/ISelectionProvider;_shellLorg/eclipse/swt/widgets/Shell;1(Lorg/eclipse/jface/viewers/ISelectionProvider;)VCode  ()V  LineNumberTableLocalVariableTablethisLLorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractNavigatorAction;selectionProvider_pP(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;)V   shell_p getSelection%(Ljava/lang/Class;)Ljava/lang/Object; Signature((Ljava/lang/Class<*>;)Ljava/lang/Object; !#",org/eclipse/jface/viewers/ISelectionProvider $(()Lorg/eclipse/jface/viewers/ISelection;&.org/eclipse/jface/viewers/IStructuredSelection %( )*isEmpty()Z %, -.getFirstElement()Ljava/lang/Object; %0 12size()I 465java/lang/Class 78 isInstance(Ljava/lang/Object;)Z objectType_pLjava/lang/Class;selectedObjectLjava/lang/Object;selectedObjects0Lorg/eclipse/jface/viewers/IStructuredSelection; firstElementLocalVariableTypeTableLjava/lang/Class<*>;getShell!()Lorg/eclipse/swt/widgets/Shell;isSelectionCompatible F GHgetModelElementClass()Ljava/lang/Class; J  L MNsetSelectedElement(Ljava/lang/Object;)V isEnabledZelement()Ljava/lang/Class<*>;getSharedImages ()Lorg/eclipse/ui/ISharedImages; VXWorg/eclipse/ui/PlatformUI YZ getWorkbench()Lorg/eclipse/ui/IWorkbench; \^]org/eclipse/ui/IWorkbench ST sharedImagesLorg/eclipse/ui/ISharedImages;getSelectionProvider0()Lorg/eclipse/jface/viewers/ISelectionProvider; SourceFileAbstractNavigatorAction.java!   F * *+)* +    Q *,*+34 5     8M* %N-'!-+:-/+3M,<>@A B3C6F4889:6;<)=> ?<@ 89ABC /*N D* j<**EIM, *,K<VX YZ[] OP Q<GHRMNST C U[L+ q r  _`ab /*z cd Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5195 Text-content-md5: 27c65970273f42016bead22329383303 Text-content-sha1: df00843dec51af425a5e60c1537e93124fb747a4 Content-length: 5254 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Horg/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementAction_isValidationOnErrorZ_reportSuccessfulValidation_errorDialogTitleLjava/lang/String;Q(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  ;org.eclipse.egf.core.ui.workbench.action.navigator.validate  setId(Ljava/lang/String;)V *org/eclipse/egf/core/ui/workbench/Messages  ValidateElementAction_Title  setText   ValidateElementAction_Tooltip ! "setToolTipText $&%7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator '( getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator;*obj16/validate.gif $, -.getImageDescriptor@(Ljava/lang/String;)Lorg/eclipse/jface/resource/ImageDescriptor; 0 12setImageDescriptor/(Lorg/eclipse/jface/resource/ImageDescriptor;)V 4 LineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pR(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;ZZ)V reportSuccessfulValidation_p getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;selectedModelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;J-org/eclipse/egf/model/NamedModelElementWithIdrun()V N OPgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;Rjava/lang/Object IT UVgetName()Ljava/lang/String; IX YZeClass ()Lorg/eclipse/emf/ecore/EClass; \T]org/eclipse/emf/ecore/EClass _ ` ,ValidateElementAction_Error_Detailed_Messagebjava/lang/String dfe*org/eclipse/egf/common/helper/StringHelper gh formatMessage9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;j+org/eclipse/emf/common/util/BasicDiagnosticlorg.eclipse.emf.ecore in o;(Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;)Vq(org/eclipse/emf/ecore/util/Diagnostician ps L pu vwvalidateI(Lorg/eclipse/emf/ecore/EObject;)Lorg/eclipse/emf/common/util/Diagnostic; y{z&org/eclipse/emf/common/util/Diagnostic |} getSeverity()I   +org/eclipse/emf/common/util/DiagnosticChain addAll+(Lorg/eclipse/emf/common/util/Diagnostic;)V  VgetErrorDialogTitle  getShell!()Lorg/eclipse/swt/widgets/Shell;  +ValidateElementAction_Error_Overall_Message 2org/eclipse/emf/common/ui/dialogs/DiagnosticDialog openn(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/emf/common/util/Diagnostic;)I  2ValidateElementAction_ValidationReportDialog_Title  7ValidateElementAction_ValidationReportDialog_Title_Info  %ValidateElementAction_NoError_Message 'org/eclipse/jface/dialogs/MessageDialog openInformationF(Lorg/eclipse/swt/widgets/Shell;Ljava/lang/String;Ljava/lang/String;)V modelElementdata[Ljava/lang/Object; elementNameformattedMessagediagnosticChain-Lorg/eclipse/emf/common/util/DiagnosticChain; diagnostician*Lorg/eclipse/emf/ecore/util/Diagnostician; diagnostic(Lorg/eclipse/emf/common/util/Diagnostic;formattedTitle    VgetDefaultErrorDialogTitle  :ValidateElementAction_ValidationReportDialog_Title_ProblemisValid()Z isEnabled  "org/eclipse/egf/model/PatternModelresultsetErrorDialogTitleerrorDialogTitle_p SourceFileValidateElementAction.java!   -*+, *** *#)+/*3589 :;<'=,>6*-78-9:-;<-= > h*+,?*35HI J64789:;<=@AB 65R678CDEFGH -I5Z6 78KL  *MLQY+SM+SN--+W[N^aY-Sc:iYk,m:pYr:+t:*x~*~'*:*yW(*3!aYSc:*5Rbceg)h9iHkQmYomptq}stvyzyx{~6f 78D 9 HvQmYe  V =* **56 78V WaYScL+5 678  7 *~56  78 c*<*MM,<5 6 78 D >*+5 678  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/open Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2520 Text-content-md5: 439c30e4d399f92b774dd7569af458e3 Text-content-sha1: e8857d6514ebc7c061e777020d4ff1f88ee56952 Content-length: 2579 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1\Borg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1$1java/lang/Objectjava/lang/Runnablethis$1BLorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1;val$domainUri_p!Lorg/eclipse/emf/common/util/URI;val$diagramUri_p val$monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1;Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/core/runtime/IProgressMonitor;)VCode       ()VLineNumberTableLocalVariableTablethisDLorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1$1;run "$#@org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1 %&access$0(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1;)Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction; (*)>org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction %+(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction;Lorg/eclipse/emf/common/util/URI;)Lorg/eclipse/emf/ecore/EObject; -/.>org/eclipse/emf/ecoretools/diagram/part/EcoreDiagramEditorUtil 01createDiagramOnly(Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/emf/ecore/EObject;ZLorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/emf/ecore/resource/Resource; -3 45 openDiagram,(Lorg/eclipse/emf/ecore/resource/Resource;)Z7java/lang/StringBuilder9 .run(..) _ 6; <(Ljava/lang/String;)V (> ?@access$1()Lorg/apache/log4j/Logger; 6B CDtoString()Ljava/lang/String; FHGorg/apache/log4j/Logger IJwarn*(Ljava/lang/Object;Ljava/lang/Throwable;)VL org/eclipse/ui/PartInitExceptiondiagramEObjectLorg/eclipse/emf/ecore/EObject;diagram)Lorg/eclipse/emf/ecore/resource/Resource; exception_p"Lorg/eclipse/ui/PartInitException; loggerMessageLjava/lang/StringBuilder; SourceFileOpenDomainAction.javaEnclosingMethod YZexecute.(Lorg/eclipse/core/runtime/IProgressMonitor;)V InnerClasses    H*+*,*-**   @*!*'L**+*,M,2WL6Y8:M=,A+E&)K" !)*4?4@MN!OP*QR4 STUVW"X[" Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2095 Text-content-md5: eea50c1434c6746e7c6f21f71bb0dec8 Text-content-sha1: 222754ebc9ee59c9700963838ed5133247e8a880 Content-length: 2154 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1G@org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1/org/eclipse/ui/actions/WorkspaceModifyOperationthis$0@Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction;val$domainUri_p!Lorg/eclipse/emf/common/util/URI;val$diagramUri_p(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction;Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/emf/common/util/URI;)VCode        ()VLineNumberTableLocalVariableTablethisBLorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1;execute.(Lorg/eclipse/core/runtime/IProgressMonitor;)V Exceptions&org/eclipse/core/runtime/CoreException +java/lang/reflect/InvocationTargetException"java/lang/InterruptedException $&%org/eclipse/ui/PlatformUI '( getWorkbench()Lorg/eclipse/ui/IWorkbench; *,+org/eclipse/ui/IWorkbench -. getDisplay#()Lorg/eclipse/swt/widgets/Display;0Borg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1$1 /2 3(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1;Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/core/runtime/IProgressMonitor;)V 576org/eclipse/swt/widgets/Display 89 asyncExec(Ljava/lang/Runnable;)V monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;access$0(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction$1;)Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction; SourceFileOpenDomainAction.javaEnclosingMethodB>org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction DEcreateAndOpenEcoreDiagramE(Lorg/eclipse/emf/common/util/URI;Lorg/eclipse/emf/common/util/URI;)V InnerClasses    B*+ *,*-*  ! U#)/Y***+14 :;<= %* >?@ACF/ Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7550 Text-content-md5: 8b86eebdc6d1241aa57f122cc0f5a49d Text-content-sha1: 8c1e500207f03a962408c0d1228d094fbe3d09f5 Content-length: 7609 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1#>org/eclipse/egf/core/ui/workbench/action/open/OpenDomainActionDorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction__loggerLorg/apache/log4j/Logger;()VCode  java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package getName()Ljava/lang/String; org/apache/log4j/Logger  getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger;  LineNumberTableLocalVariableTableQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)V # !this@Lorg/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getEditorId . /0 isReadOnly()Z20org.eclipse.emf.ecore.presentation.EcoreEditorID 465&org/eclipse/egf/core/ui/EgfUiActivator 78 getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; 4: ;<getPreferenceStore1()Lorg/eclipse/jface/preference/IPreferenceStore;>Domain_Editor_Id @BA-org/eclipse/jface/preference/IPreferenceStore CD getString&(Ljava/lang/String;)Ljava/lang/String;editorIdLjava/lang/String;preferenceStore/Lorg/eclipse/jface/preference/IPreferenceStore;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>;Norg/eclipse/egf/model/Domain isEnabled Q O0 S TU getDomain ()Lorg/eclipse/egf/model/Domain; WYX-org/eclipse/egf/model/data/helper/ModelHelper Z[isDomainDefined!(Lorg/eclipse/egf/model/Domain;)ZdomainLorg/eclipse/egf/model/Domain; getDomainURIA(Lorg/eclipse/egf/model/Domain;)Lorg/eclipse/emf/common/util/URI; Wa bcgetFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; egf&org/eclipse/egf/model/FactoryComponent hgetId jlk8org/eclipse/egf/model/edit/helper/FactoryComponentHelper ^m5(Ljava/lang/String;)Lorg/eclipse/emf/common/util/URI;domain_p fcContainer(Lorg/eclipse/egf/model/FactoryComponent; domainUri!Lorg/eclipse/emf/common/util/URI;getEditorInput()Lorg/eclipse/ui/IEditorInput; v ^_x(org/eclipse/emf/common/ui/URIEditorInput wz {$(Lorg/eclipse/emf/common/util/URI;)V } ~,handleEditorInputForDomainLocatedInWorkspace^(Lorg/eclipse/egf/model/Domain;Lorg/eclipse/emf/common/util/URI;)Lorg/eclipse/ui/IEditorInput;resultLorg/eclipse/ui/IEditorInput;  , java/lang/String equals(Ljava/lang/Object;)ZQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/workbench/action/open/OpenMappingAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getEditorId()Ljava/lang/String;1org.eclipse.egf.mapping.ui.editor.mappingEditorIdshouldSaveEditorAfterOpening()ZgetEditorInput()Lorg/eclipse/ui/IEditorInput;  getModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId;!"org/eclipse/egf/model/MappingModel #%$-org/eclipse/egf/model/data/helper/ModelHelper &' getProjectV(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/core/resources/IProject;)org/eclipse/core/runtime/Path + ,getPath (. /(Ljava/lang/String;)V 132#org/eclipse/core/resources/IProject 45getFileD(Lorg/eclipse/core/runtime/IPath;)Lorg/eclipse/core/resources/IFile;7#org/eclipse/ui/part/FileEditorInput 69 :%(Lorg/eclipse/core/resources/IFile;)VresultLorg/eclipse/ui/IEditorInput; mappingModel$Lorg/eclipse/egf/model/MappingModel;project%Lorg/eclipse/core/resources/IProject; mappingFile"Lorg/eclipse/core/resources/IFile;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; SourceFileOpenMappingAction.java!T*+, &' * - .  , 6  9L* M,"N-'-(Y,*-0: 6Y8L+ ">@ BCE(F-H7K 49 7;< /=>*?@(ABCDEF-  S  GH Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1020 Text-content-md5: a6c54daa5db65488ec7b70e938a12b42 Text-content-sha1: b82bf98a0fb6b92c7e3233a6d68acd149088aaa4 Content-length: 1079 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1'Forg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction$1java/lang/Objectjava/lang/Runnablethis$0FLorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction;val$openEditorLorg/eclipse/ui/IEditorPart;e(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction;Lorg/eclipse/ui/IEditorPart;)VCode     ()VLineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction$1;run 0org/eclipse/egf/common/ui/helper/WorkbenchHelper  saveEditor(Lorg/eclipse/ui/IEditorPart;)V SourceFileOpenModelElementAction.javaEnclosingMethod$Dorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction  InnerClasses    =*+*,*  C  6* EF  !"#%&  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2565 Text-content-md5: 4207eb9da872d30171d7699b1438f99d Text-content-sha1: 7b37e36effcd3ce5771c9560dbe0e1fa1c7ff1c1 Content-length: 2624 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1_Dorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementActionMorg/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementActionOPEN_ACTION_IDLjava/lang/String; ConstantValue org.eclipse.ui.navigator.OpenQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode   setId(Ljava/lang/String;)V *org/eclipse/egf/core/ui/workbench/Messages OpenModelElementAction_Title  setTextLineNumberTableLocalVariableTablethisFLorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getWizardForR(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/jface/wizard/Wizard;modelElement_p/Lorg/eclipse/egf/model/NamedModelElementWithId;run()V , -.getEditorInput()Lorg/eclipse/ui/IEditorInput; 0 12 getEditorId()Ljava/lang/String; 4 56 doOpenEditorM(Lorg/eclipse/ui/IEditorInput;Ljava/lang/String;)Lorg/eclipse/ui/IEditorPart; 8 9:shouldSaveEditorAfterOpening()Z < =>getShell!()Lorg/eclipse/swt/widgets/Shell; @BAorg/eclipse/swt/widgets/Shell CD getDisplay#()Lorg/eclipse/swt/widgets/Display;FForg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction$1 EH Ie(Lorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction;Lorg/eclipse/ui/IEditorPart;)V KMLorg/eclipse/swt/widgets/Display NO asyncExec(Ljava/lang/Runnable;)V editorInputLorg/eclipse/ui/IEditorInput;editorId openEditorLorg/eclipse/ui/IEditorPart; VXW0org/eclipse/egf/common/ui/helper/WorkbenchHelper SYl(Lorg/eclipse/ui/IEditorInput;Ljava/lang/String;Lorg/eclipse/swt/widgets/Shell;)Lorg/eclipse/ui/IEditorPart; editorInput_p editorId_p SourceFileOpenModelElementAction.java InnerClasses!  i*+, **)* +,* !"#$%& 64'()* 4*+L*/M+(,$*+,3N*7*;?EY*-GJ<= ?@A C3J*4/PQ *RST9: ,R 56 H +,*;U[   ZQ [12-.\]^ E Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/action/open/OpenPatternAction.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2441 Text-content-md5: 6eb43ade4d768cdd313b2a314048891d Text-content-sha1: 15ff8bf8a5689831fc990ecd22977ee0374dcc17 Content-length: 2500 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Z?org/eclipse/egf/core/ui/workbench/action/open/OpenPatternActionDorg/eclipse/egf/core/ui/workbench/action/open/OpenModelElementActionQ(Lorg/eclipse/swt/widgets/Shell;Lorg/eclipse/jface/viewers/ISelectionProvider;Z)VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/workbench/action/open/OpenPatternAction;shell_pLorg/eclipse/swt/widgets/Shell;selectionProvider_p.Lorg/eclipse/jface/viewers/ISelectionProvider;readOnlyMode_pZ getEditorId()Ljava/lang/String;/org/eclipse/egf/pattern/ui/editor/PatternEditor java/lang/Class getNamegetEditorInput()Lorg/eclipse/ui/IEditorInput;  !"getPatternModel&()Lorg/eclipse/egf/model/PatternModel; $ %& isReadOnly()Z (*)5org/eclipse/egf/pattern/ui/editor/PatternEditorHelper +D(Lorg/eclipse/egf/model/PatternModel;Z)Lorg/eclipse/ui/IEditorInput;run()V /  1  3 45getShell!()Lorg/eclipse/swt/widgets/Shell; 7980org/eclipse/egf/common/ui/helper/WorkbenchHelper :; openEditorl(Lorg/eclipse/ui/IEditorInput;Ljava/lang/String;Lorg/eclipse/swt/widgets/Shell;)Lorg/eclipse/ui/IEditorPart; =?>Iorg/eclipse/egf/core/ui/workbench/internal/util/ActionPatternEditorHelper @AaddPatternEditorToListenerC(Lorg/eclipse/ui/IEditorPart;Lorg/eclipse/egf/model/PatternModel;)V patternEditorLorg/eclipse/ui/IEditorPart; isEnabled F D& HJI"org/eclipse/egf/model/PatternModel KgetPathpattern$Lorg/eclipse/egf/model/PatternModel;pathLjava/lang/String;getModelElementClass()Ljava/lang/Class; Signature()Ljava/lang/Class<*>; U VWgetModelElement1()Lorg/eclipse/egf/model/NamedModelElementWithId; SourceFileOpenPatternAction.java!T*+, %& * 0 -  >**#' 6  ,-]*.*0*26L+ +*< ?@BD   BCD&#*E<*M,GN-~< LM NPQ!S *# DLM NOPQRS-H [  !"2*TH c  XY Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/drop Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/drop/DelegatingCommonDropAdapter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3426 Text-content-md5: c7a76b3a2c99fc26486588a48f83e805 Text-content-sha1: bdef737340431d49e4898ac1458fe17ce76b9498 Content-length: 3485 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1sKorg/eclipse/egf/core/ui/workbench/internal/drop/DelegatingCommonDropAdapter%org/eclipse/ui/part/PluginDropAdapter_commonDropAdapter,Lorg/eclipse/ui/navigator/CommonDropAdapter;b(Lorg/eclipse/ui/navigator/INavigatorContentService;Lorg/eclipse/jface/viewers/StructuredViewer;)VCode   /(Lorg/eclipse/jface/viewers/StructuredViewer;)V*org/eclipse/ui/navigator/CommonDropAdapter    LineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/workbench/internal/drop/DelegatingCommonDropAdapter;contentService_p3Lorg/eclipse/ui/navigator/INavigatorContentService;structuredViewer_p,Lorg/eclipse/jface/viewers/StructuredViewer;drop((Lorg/eclipse/swt/dnd/DropTargetEvent;)V   determineLocation((Lorg/eclipse/swt/dnd/DropTargetEvent;)I "$##org/eclipse/swt/dnd/DropTargetEvent %&feedbackI ( event_p%Lorg/eclipse/swt/dnd/DropTargetEvent;locationgetFeedbackEnabled()Z / ,- performDrop(Ljava/lang/Object;)Z 3 01data_pLjava/lang/Object;setFeedbackEnabled(Z)V 9 67value_pZsetScrollExpandEnabled > <7 >setSelectionFeedbackEnabled B @7getSupportedDropTransfers!()[Lorg/eclipse/swt/dnd/Transfer; F CD dragEnter I G dragLeave L JdragOperationChanged O MdragOver > S P S dropAccept W U validateDrop8(Ljava/lang/Object;ILorg/eclipse/swt/dnd/TransferData;)Z [ XY dropTarget_pdropOperation_ptransferData_p"Lorg/eclipse/swt/dnd/TransferData; getBoundsD(Lorg/eclipse/swt/widgets/Item;)Lorg/eclipse/swt/graphics/Rectangle; c `aitemLorg/eclipse/swt/widgets/Item;getCurrentLocation()I i fggetCurrentOperation l jggetCurrentTransfer$()Lorg/eclipse/swt/dnd/TransferData; p mn SourceFile DelegatingCommonDropAdapter.java! Y*, * Y+,)*+  2*+="+!+!*+'235!6$8):1; 22)*,+&,- 2*.B 01 = *+2J  4567 A *8 RS  :;<7 J*=*?Z[ \:;@7 A *A cd  :;CD 2*Ek G A *+H st  )*J A *+K {|  )*M A *+N   )*P S*Q*+R*+T )*U A *+V   )*XY S *+-Z*  \5 ]& ^_`a = *+b  defg 2*h jg 2*k mn 2*o qr Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/drop/FactoryComponentInvocationDropAdapterAssistant.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7282 Text-content-md5: 3aafd51c5a9049a003ba89240126be8b Text-content-sha1: bd98ba34498c72cb32ea5ccaed8956f76091dfa9 Content-length: 7341 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1^org/eclipse/egf/core/ui/workbench/internal/drop/FactoryComponentInvocationDropAdapterAssistant3org/eclipse/ui/navigator/CommonDropAdapterAssistant()VCode  LineNumberTableLocalVariableTablethis`Lorg/eclipse/egf/core/ui/workbench/internal/drop/FactoryComponentInvocationDropAdapterAssistant; handleDrop(Lorg/eclipse/ui/navigator/CommonDropAdapter;Lorg/eclipse/swt/dnd/DropTargetEvent;Ljava/lang/Object;)Lorg/eclipse/core/runtime/IStatus; org/eclipse/core/runtime/Status  CANCEL_STATUS"Lorg/eclipse/core/runtime/IStatus;  handleSelection()Ljava/util/List; #org/eclipse/swt/dnd/DropTargetEvent item Lorg/eclipse/swt/widgets/Widget; !#"org/eclipse/swt/widgets/Widget $%getData()Ljava/lang/Object;'0org/eclipse/egf/model/FactoryComponentInvocation )+*-org/eclipse/egf/model/data/helper/ModelHelper ,-getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent; )/ 01getProductionPlanP(Lorg/eclipse/egf/model/FactoryComponent;)Lorg/eclipse/egf/model/ProductionPlan;3java/util/ArrayList 576$org/eclipse/egf/model/ProductionPlan 89getFactoryComponentInvocations%()Lorg/eclipse/emf/common/util/EList; 2; <(Ljava/util/Collection;)V >@?java/util/List ABcontains(Ljava/lang/Object;)Z D EFfeedbackI H IJcomputeNewFcInvocationOrderV(Ljava/util/List;ILorg/eclipse/egf/model/FactoryComponentInvocation;Ljava/util/List;)V L MNmoveFcInvocationsa(Lorg/eclipse/egf/model/ProductionPlan;Ljava/util/List;Lorg/eclipse/egf/model/FactoryComponent;)V P Q OK_STATUS dropAdapter_p,Lorg/eclipse/ui/navigator/CommonDropAdapter;dropTargetEvent_p%Lorg/eclipse/swt/dnd/DropTargetEvent;target_pLjava/lang/Object;resultmovingFcInvocationsLjava/util/List;datafcInvocationAtDropLocation2Lorg/eclipse/egf/model/FactoryComponentInvocation; fcContainer(Lorg/eclipse/egf/model/FactoryComponent;productionPlan&Lorg/eclipse/egf/model/ProductionPlan;allFcInvocationsLocalVariableTypeTableDLjava/util/List; Signature(Ljava/util/List;ILorg/eclipse/egf/model/FactoryComponentInvocation;Ljava/util/List;)V >h ij removeAll(Ljava/util/Collection;)Z >l mnindexOf(Ljava/lang/Object;)I >p qraddAll(ILjava/util/Collection;)ZmovingFcInvocations_p feedback_pfcInvocationAtDropLocation_pallFcInvocations_pacAtDropPosition newPosition(Lorg/eclipse/egf/model/ProductionPlan;Ljava/util/List;Lorg/eclipse/egf/model/FactoryComponent;)V {}|#org/eclipse/egf/pde/EgfPdeActivator ~ getDefault'()Lorg/eclipse/egf/pde/EgfPdeActivator; {  getProductionPlanExtensionHelperH()Lorg/eclipse/egf/pde/plugin/extension/IProductionPlanExtensionFactory; 5 getId()Ljava/lang/String; 2 (I)V > iterator()Ljava/util/Iterator; java/util/Iterator %next & Dorg/eclipse/egf/pde/plugin/extension/IProductionPlanExtensionFactory unsetFactoryComponentInvocation`(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/egf/pde/plugin/command/IPluginChangesCommand; > Badd setFactoryComponentInvocation hasNext()Z &org/eclipse/egf/model/FactoryComponent { getPluginIdForFactoryComponent&(Ljava/lang/String;)Ljava/lang/String; > qj { getPluginChangesCommandRunnerB()Lorg/eclipse/egf/pde/plugin/command/IPluginChangesCommandRunner; >org/eclipse/egf/pde/plugin/command/IPluginChangesCommandRunner performChangesOnPlugin%(Ljava/lang/String;Ljava/util/List;)V +org/eclipse/egf/model/ModelPackage$Literals .PRODUCTION_PLAN__FACTORY_COMPONENT_INVOCATIONS"Lorg/eclipse/emf/ecore/EReference; 5 eSet?(Lorg/eclipse/emf/ecore/EStructuralFeature;Ljava/lang/Object;)VproductionPlan_pallfcInvocations_p fcContainer_psolfaPdeActivator%Lorg/eclipse/egf/pde/EgfPdeActivator;productionPlanExtensionFactoryFLorg/eclipse/egf/pde/plugin/extension/IProductionPlanExtensionFactory;productionPlanIdLjava/lang/String; unsetCommands setCommands fcInvocationpluginIdcommandsLLjava/util/List; validateDropY(Ljava/lang/Object;ILorg/eclipse/swt/dnd/TransferData;)Lorg/eclipse/core/runtime/IStatus; operation_ptransferType_p"Lorg/eclipse/swt/dnd/TransferData;selectedFcInvocationsF()Ljava/util/List; 5org/eclipse/ui/views/navigator/LocalSelectionTransfer  getInstance9()Lorg/eclipse/ui/views/navigator/LocalSelectionTransfer;  getSelection(()Lorg/eclipse/jface/viewers/ISelection;.org/eclipse/jface/viewers/IStructuredSelection toList > isEmpty-org/eclipse/egf/model/NamedModelElementWithId java/lang/Object Bequals selection&Lorg/eclipse/jface/viewers/ISelection;selectedElements isInterruptedZLjava/util/Iterator;objectLjava/util/List<*>; SourceFile3FactoryComponentInvocationDropAdapterAssistant.java InnerClasses"org/eclipse/egf/model/ModelPackageLiterals!/* +  G m:*:, :&Q&:(:.: 2Y 4:: = *,C G*  KO: 6 35 789#:*;1=A?M@[BeCjF p m mRSmTUmVWhX bYZY[W#G\]*@^_19`a A)bZ c bYdA)bd IJefD+gW-k66 `6 66+oW . Q STUV$W)X.Y4[8^C_ HD DsZDtFDu]DvZ1wF.xFcDsdDvdMNey z::+:2Y:2Y:,: ? &:  W W -: 2Y::  W  +, >gh ikl(m?oWqomytvwy{| z aZ_ Z(Z?0] . #Z c*d(# G:*:55"5 O::  ,<?D >G GVWGFGDX >Zc  >deeLضM,+,N- -+:6-:<:&6(:(6-YL N )+.1<EMPUbru R XZ uZ.c^_1`9KE0WcXdu  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/drop/PatternLibraryDropAdapterAssistant.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 5478 Text-content-md5: 408a23709ed00cc2933a077bc6d7be31 Text-content-sha1: 30f5ceaeb03059bd3f7e469fd495fdb7782525e9 Content-length: 5537 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Rorg/eclipse/egf/core/ui/workbench/internal/drop/PatternLibraryDropAdapterAssistant3org/eclipse/ui/navigator/CommonDropAdapterAssistant_moveRefactoring:Lorg/eclipse/egf/pattern/refactoring/move/MoveRefactoring;()VCode  LineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/workbench/internal/drop/PatternLibraryDropAdapterAssistant; handleDrop(Lorg/eclipse/ui/navigator/CommonDropAdapter;Lorg/eclipse/swt/dnd/DropTargetEvent;Ljava/lang/Object;)Lorg/eclipse/core/runtime/IStatus;6org/eclipse/ltk/core/refactoring/CreateChangeOperation    1(Lorg/eclipse/ltk/core/refactoring/Refactoring;)V7org/eclipse/ltk/core/refactoring/PerformChangeOperation  ;(Lorg/eclipse/ltk/core/refactoring/CreateChangeOperation;)V ! org/eclipse/core/runtime/Status "# CANCEL_STATUS"Lorg/eclipse/core/runtime/IStatus;%=org/eclipse/ui/IWorkbench ?@getProgressService,()Lorg/eclipse/ui/progress/IProgressService; BDC(org/eclipse/ui/progress/IProgressService EFrun8(ZZLorg/eclipse/jface/operation/IRunnableWithProgress;)V H I# OK_STATUSKjava/lang/Exception dropAdapter_p,Lorg/eclipse/ui/navigator/CommonDropAdapter;dropTargetEvent_p%Lorg/eclipse/swt/dnd/DropTargetEvent;target_pLjava/lang/Object;changeOperation8Lorg/eclipse/ltk/core/refactoring/CreateChangeOperation;performOperation9Lorg/eclipse/ltk/core/refactoring/PerformChangeOperation;resultingStatusrunnableAdapter>Lorg/eclipse/jdt/internal/ui/actions/WorkbenchRunnableAdapter; validateDropY(Ljava/lang/Object;ILorg/eclipse/swt/dnd/TransferData;)Lorg/eclipse/core/runtime/IStatus; \ ]^handleSelection()Ljava/util/List;`1org/eclipse/egf/pattern/refactoring/move/MoveInfo _ c-org/eclipse/egf/model/NamedModelElementWithId _e fgsetDestinationElement2(Lorg/eclipse/egf/model/NamedModelElementWithId;)V _i jkaddElementsToMove(Ljava/util/Collection;)Vm6org/eclipse/egf/pattern/refactoring/move/MoveProcessor lo p6(Lorg/eclipse/egf/pattern/refactoring/move/MoveInfo;)Vr8org/eclipse/egf/pattern/refactoring/move/MoveRefactoring qt u;(Lorg/eclipse/egf/pattern/refactoring/move/MoveProcessor;)Vw9org/eclipse/ltk/core/refactoring/CheckConditionsOperation vy z2(Lorg/eclipse/ltk/core/refactoring/Refactoring;I)V|,org/eclipse/core/runtime/NullProgressMonitor { $ E.(Lorg/eclipse/core/runtime/IProgressMonitor;)V v  getStatus6()Lorg/eclipse/ltk/core/refactoring/RefactoringStatus; 2org/eclipse/ltk/core/refactoring/RefactoringStatus isOK()Z operation_pItransferType_p"Lorg/eclipse/swt/dnd/TransferData;selectedPatternElementsLjava/util/List;moveInfo3Lorg/eclipse/egf/pattern/refactoring/move/MoveInfo;target/Lorg/eclipse/egf/model/NamedModelElementWithId; processor8Lorg/eclipse/egf/pattern/refactoring/move/MoveProcessor;checkOperation;Lorg/eclipse/ltk/core/refactoring/CheckConditionsOperation;status4Lorg/eclipse/ltk/core/refactoring/RefactoringStatus;LocalVariableTypeTable@Ljava/util/List; SignatureB()Ljava/util/List; 5org/eclipse/ui/views/navigator/LocalSelectionTransfer  getInstance9()Lorg/eclipse/ui/views/navigator/LocalSelectionTransfer;  getSelection(()Lorg/eclipse/jface/viewers/ISelection;.org/eclipse/jface/viewers/IStructuredSelection ^toList java/util/List isEmpty iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object;,org/eclipse/egf/model/AbstractPatternElement hasNextresult selection&Lorg/eclipse/jface/viewers/ISelection;selectedElementsobjectLjava/util/List<*>; SourceFile'PatternLibraryDropAdapterAssistant.java! /*  -   SY*:Y::$Y&,2:5;AG::*0FIJ & : <>@0BACIDKGPH RSSLMSNOSPQ FRS;TU6V#0#WXYZ  *[::_Ya:+b:dhlYn:*qYsvY*x: $Y &,2:  {Y}~ :  G:: jJ JPR TUXZ"[)\0^;`HbWdjfvg}hikn z PQ V#v"p;WW; j(WX } ]^ WLM,+,N- -+-::+-L+ 6 wx z{~)+?GISU 4WU N;? QU; Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/navigator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/navigator/PatternLinkHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1907 Text-content-md5: c74b44647a803153da7a6f594574a1c9 Text-content-sha1: a04ac1b0587a8bb09f66402eee0685b1f6be3a5d Content-length: 1966 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1JForg/eclipse/egf/core/ui/workbench/internal/navigator/PatternLinkHelperjava/lang/Object$org/eclipse/ui/navigator/ILinkHelper()VCode  LineNumberTableLocalVariableTablethisHLorg/eclipse/egf/core/ui/workbench/internal/navigator/PatternLinkHelper;activateEditorR(Lorg/eclipse/ui/IWorkbenchPage;Lorg/eclipse/jface/viewers/IStructuredSelection;)V .org/eclipse/jface/viewers/IStructuredSelection isEmpty()Z  getFirstElement()Ljava/lang/Object;"org/eclipse/egf/model/PatternModel ! 5org/eclipse/egf/pattern/ui/editor/PatternEditorHelper "#isPatternEditorOpenB(Lorg/eclipse/egf/model/PatternModel;)Lorg/eclipse/ui/IEditorPart; %'&org/eclipse/ui/IWorkbenchPage ()activate"(Lorg/eclipse/ui/IWorkbenchPart;)Vpage_pLorg/eclipse/ui/IWorkbenchPage; selection_p0Lorg/eclipse/jface/viewers/IStructuredSelection;elementLjava/lang/Object;partLorg/eclipse/ui/IEditorPart; findSelectionO(Lorg/eclipse/ui/IEditorInput;)Lorg/eclipse/jface/viewers/IStructuredSelection; 576-org/eclipse/jface/viewers/StructuredSelection 89EMPTY/Lorg/eclipse/jface/viewers/StructuredSelection; ;=<org/eclipse/ui/IEditorInput >? getAdapter%(Ljava/lang/Class;)Ljava/lang/Object; 5A B(Ljava/lang/Object;)V anInput_pLorg/eclipse/ui/IEditorInput;result patternModel$Lorg/eclipse/egf/model/PatternModel; SourceFilePatternLinkHelper.java! /*    7+, ,,N--: +$ "!"$% &)'.(6+ 477*+7,-./) 0123 %4M+,+:N- 5Y-@M, 134 789#; *%%CD!E-FGHI Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/util Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/util/ActionPatternEditorHelper.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1075 Text-content-md5: be352e31ada4e00e23f2157f7c8d039d Text-content-sha1: 73998e3f28820850148196b9a6587dd9d4a396fd Content-length: 1134 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&Iorg/eclipse/egf/core/ui/workbench/internal/util/ActionPatternEditorHelperjava/lang/Object_patternEditorListenerLLorg/eclipse/egf/core/ui/workbench/internal/util/ClosePatternEditorListener;()VCode  LineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/internal/util/ActionPatternEditorHelper;addPatternEditorToListenerC(Lorg/eclipse/ui/IEditorPart;Lorg/eclipse/egf/model/PatternModel;)V  Jorg/eclipse/egf/core/ui/workbench/internal/util/ClosePatternEditorListener  0org/eclipse/egf/common/ui/helper/WorkbenchHelper addPartListener!(Lorg/eclipse/ui/IPartListener;)V  addPatternEditorToMonitorpatternEditorPart_pLorg/eclipse/ui/IEditorPart; pattern_p$Lorg/eclipse/egf/model/PatternModel; SourceFileActionPatternEditorHelper.java!  /*     cY*+ %')+,  !"#$% Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/internal/util/ClosePatternEditorListener.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1886 Text-content-md5: 4713cb9ebff1ac1519a9c74fdf935bf0 Text-content-sha1: 95b75c07262427e31e8c2ba62266fdf86d33a1e3 Content-length: 1945 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1@Jorg/eclipse/egf/core/ui/workbench/internal/util/ClosePatternEditorListenerjava/lang/Objectorg/eclipse/ui/IPartListener_handledPatternEditorsLjava/util/Map; SignatureQLjava/util/Map;()VCode  LineNumberTableLocalVariableTablethisLLorg/eclipse/egf/core/ui/workbench/internal/util/ClosePatternEditorListener;addPatternEditorToMonitorC(Lorg/eclipse/ui/IEditorPart;Lorg/eclipse/egf/model/PatternModel;)V  java/util/HashMap  (I)V   java/util/Map !"put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;patternEditorPart_pLorg/eclipse/ui/IEditorPart; pattern_p$Lorg/eclipse/egf/model/PatternModel; partClosed"(Lorg/eclipse/ui/IWorkbenchPart;)V * +,remove&(Ljava/lang/Object;)Ljava/lang/Object;."org/eclipse/egf/model/PatternModel00org/eclipse/egf/model/internal/data/ModelElement24org/eclipse/egf/pattern/ui/editor/PatternEditorInput /4 56 setAdapter&(Ljava/lang/Class;Ljava/lang/Object;)Vpart_pLorg/eclipse/ui/IWorkbenchPart;pattern partActivatedpartBroughtToToppartDeactivated partOpened SourceFileClosePatternEditorListener.java     /*  j **Y*+,W)*,-   #$ %&'( g*+)-M, ,/13569; 789&:( 5B78;( 5I78<( 5P78=( 5W78>? Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/messages.properties Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 4204 Text-content-md5: 21630313718301ee67fefd9477fc80cc Text-content-sha1: e825f7c89215f63000e759306220d143e237da61 Content-length: 4214 PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### OpenModelElementAction_Title=Open... ExplorerActionProvider_NewMenuItem_Title=New # Common Actions EditModelElementAction_Title=Edit... EditModelElementAction_Tooltip=Open a wizard to edit the selected element. DeleteAction_Title=Delete DeleteAction_Tooltip=Delete the selected element. ExecuteFactoryAction_Title=Execute ExecuteFactoryAction_Tooltip=Execute the factory. ExecuteFactoryAction_ValidationErrorDialog_Title=Factory Component Execution Problems ProducePatternElementAction_Title=Produce ProducePatternElementAction_Tooltip=Produce the selected pattern element. # Factory component invocation action messages CreateFactoryComponentInvocationAction_Title=Factory Component Invocation CreateFactoryComponentInvocationAction_Tooltip=Create a new factory component invocation. DeleteFactoryComponentInvocationAction_Message=factory component invocation CreateTaskFactoryHolderAction_Title=Task Factory CreateTaskFactoryHolderAction_Tooltip=Create a new task factory. DeleteTaskFactoryHolderAction_Message=task factory # Contract element messages CreateContractElementAction_Title=Contract element CreateContractElementAction_Tooltip=Create a new contract element. DeleteContractElementAction_Message=contract element # Domain element messages CreateDomainAction_Title=Domain CreateDomainAction_Tooltip=Create a new domain (ecore file). DeleteDomainAction_Message=domain # Context element messages CreateContextAction_Title=Context CreateContextAction_Tooltip=Create a new context. DeleteContextAction_Message=context # ContextElement messages CreateContextElementAction_Title=Context element CreateContextElementAction_Tooltip=Create a new context element. DeleteContextElementAction_Message=context element # Pattern Library messages CreatePatternLibraryAction_Title=Pattern Library CreatePatternLibraryAction_Tooltip=Create a new pattern library. DeletePatternLibraryAction_Message=pattern library CleanPatternLibraryActionConfirmDialog_Message=Are you sure you want to clean all patterns generated structures for selected library? # Pattern messages CreatePatternAction_Title=Pattern CreatePatternAction_Tooltip=Create a new pattern. DeletePatternAction_Message=pattern CleanPatternAction_Title=Clean CleanPatternAction_Tooltip=Clean selected pattern element generated structures. CleanPatternActionConfirmDialog_Title=Confirm clean CleanPatternActionConfirmDialog_Message=Are you sure you want to clean pattern generated structures? # Mapping messages CreateMappingAction_Title=Mapping CreateMappingAction_Tooltip=Create a new mapping. DeleteMappingAction_Message=mapping # Convert Plug-in in a Factory Component ConvertPlugin2FactoryComponent_Title=Convert {0} project to a Factory Component ConvertPlugin2FactoryComponent_ErrorDialog_Message=This plug-in project has a name ''{0}'' different from its plug-in id ''{1}''.\nFactory components must have a plug-in id equals to the project name. # Validation messages ValidateElementAction_Title=Validate ValidateElementAction_Tooltip=Validate selected element. ValidateElementAction_ValidationReportDialog_Title=Validation {0} ValidateElementAction_ValidationReportDialog_Title_Info=Information ValidateElementAction_ValidationReportDialog_Title_Problem=Problems ValidateElementAction_NoError_Message=Validation completed successfully. ValidateElementAction_Error_Overall_Message=Problems encountered during validation. ValidateElementAction_Error_Detailed_Message=Diagnosis of selected element ''{0}'' # Factory component views messages FactoryComponentView_PatternFilterText_Title=Enter FC name or pattern (*, ?): Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/perspective Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/perspective/EgfPerspective.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3322 Text-content-md5: 3c5a46fc297d951f5ac4e91fb479ad14 Text-content-sha1: 32ae2bea998c565e1b97826814e8038394390eb5 Content-length: 3381 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1()VCode  LineNumberTableLocalVariableTablethis>Lorg/eclipse/egf/core/ui/workbench/perspective/EgfPerspective;createInitialLayout(Lorg/eclipse/ui/IPageLayout;)V !#"org/eclipse/ui/IPageLayout $% getEditorArea()Ljava/lang/String;> !( )* createFolderF(Ljava/lang/String;IFLjava/lang/String;)Lorg/eclipse/ui/IFolderLayout;,"org.eclipse.jdt.ui.PackageExplorer .0/org/eclipse/ui/IFolderLayout 12addView(Ljava/lang/String;)V4 org.eclipse.jdt.ui.TypeHierarchy6&org.eclipse.ui.views.ResourceNavigator .8 92addPlaceholder?<#org.eclipse.ui.views.ContentOutline>"org.eclipse.ui.views.PropertySheet?(AEorg.eclipse.egf.core.ui.workbench.views.explorer.assetProjectExplorerC=org.eclipse.egf.core.ui.workbench.views.fc.installedAssetViewE org.eclipse.ui.views.ProblemViewGorg.eclipse.jdt.ui.JavadocViewI!org.eclipse.ui.views.BookmarkViewK!org.eclipse.ui.views.ProgressView !M N2addShowViewShortcutPorg.eclipse.ui.views.TaskListR7org.eclipse.egf.core.ui.workbench.NewAssetProjectWizard !T U2addNewWizardShortcutW,org.eclipse.jdt.ui.wizards.JavaProjectWizardY3org.eclipse.jdt.ui.wizards.NewPackageCreationWizard[1org.eclipse.jdt.ui.wizards.NewClassCreationWizard]5org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard_0org.eclipse.jdt.ui.wizards.NewEnumCreationWizarda6org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizardc8org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizarde7org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizardg!org.eclipse.ui.wizards.new.folderiorg.eclipse.ui.wizards.new.filek5org.eclipse.ui.editors.wizards.UntitledTextFileWizardm$org.eclipse.debug.ui.launchActionSet !o p2 addActionSetr org.eclipse.jdt.ui.JavaActionSett/org.eclipse.jdt.ui.JavaElementCreationActionSetv org.eclipse.ui.NavigateActionSet !x y2addPerspectiveShortcut{"org.eclipse.jdt.ui.JavaPerspectivelayout_pLorg/eclipse/ui/IPageLayout; editorArea topLeftFolderLorg/eclipse/ui/IFolderLayout;bottomLeftFolderFolderbottomCenterFolder SourceFileEgfPerspective.java!       /* nj+ M+&,'N-+--3--57+:':;-=-+ ?,':@-B-D-F-H7J7++L+3L+@L+BL+;L+DL+5L+OL+JL+QS+VS+XS+ZS+\S+^S+`S+bS+dS+fS+hS+jS+ln+qn+sn+un+ w+zw+.012$3,5;6D7M9[;d<m>v?@ACDEFHIJKLNOPQRS TUV!W)X1Y9[A\I]Q^Y`aaib>jj|}c~V;/[ Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1258 Text-content-md5: af6e81945c303d698121f485624e10e8 Text-content-sha1: f8d44b325daad24ef7fde819f0ec668c3f7a02e9 Content-length: 1317 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1)Rorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$1java/lang/Objectjava/lang/Runnablethis$0RLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;U(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)VCode    ()VLineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$1;run Porg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer access$1(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener; 9org/eclipse/egf/core/ui/data/listener/IWorkingSetListener !workingSetModelChanged/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V SourceFile$FactoryComponentProjectExplorer.javaEnclosingMethod &' computeInput((Z)Lorg/eclipse/core/runtime/IAdaptable; InnerClasses   8 *+ * w   <*  } ~ "#$%(  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2351 Text-content-md5: 19238df570f140bcb19428587a59ed5f Text-content-sha1: 85e12a5006cdb7ea44d8f4bbd1b4695428773c09 Content-length: 2410 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1HRorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$2%org/eclipse/ui/navigator/CommonViewerthis$0RLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;I)VCode    9(Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;I)VLineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$2; $anonymous0Ljava/lang/String; $anonymous1#Lorg/eclipse/swt/widgets/Composite; $anonymous2IinitDragAndDrop()V  getNavigatorContentService5()Lorg/eclipse/ui/navigator/INavigatorContentService; *org/eclipse/ui/navigator/CommonDragAdapter " #d(Lorg/eclipse/ui/navigator/INavigatorContentService;Lorg/eclipse/jface/viewers/ISelectionProvider;)V % &'getSupportedDragTransfers!()[Lorg/eclipse/swt/dnd/Transfer; ) *+addDragSupportK(I[Lorg/eclipse/swt/dnd/Transfer;Lorg/eclipse/swt/dnd/DragSourceListener;)V-Korg/eclipse/egf/core/ui/workbench/internal/drop/DelegatingCommonDropAdapter ,/ 0b(Lorg/eclipse/ui/navigator/INavigatorContentService;Lorg/eclipse/jface/viewers/StructuredViewer;)V ,2 3'getSupportedDropTransfers 5 67addDropSupportK(I[Lorg/eclipse/swt/dnd/Transfer;Lorg/eclipse/swt/dnd/DropTargetListener;)V operationscontentService3Lorg/eclipse/ui/navigator/INavigatorContentService; dragAdapter,Lorg/eclipse/ui/navigator/CommonDragAdapter; dropAdapterMLorg/eclipse/egf/core/ui/workbench/internal/drop/DelegatingCommonDropAdapter; SourceFile$FactoryComponentProjectExplorer.javaEnclosingMethodCPorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer EFcreateCommonViewerL(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/ui/navigator/CommonViewer; InnerClasses  Z*+ *,-  * 3<*MY,*!N*-$-(,Y,*.:*14&24318,9:";<& =>?@ABDG  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2741 Text-content-md5: 9f31bbc375f26a9fdae43a82591657ef Text-content-sha1: a9c2dfb1ca2a726f92c0185bb39f7f86d2ae5f44 Content-length: 2800 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1aRorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$3java/lang/Object3org/eclipse/jface/viewers/ISelectionChangedListenerthis$0RLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;U(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)VCode    ()VLineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$3;selectionChanged4(Lorg/eclipse/jface/viewers/SelectionChangedEvent;)V Porg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer isLinkingEnabled()Z  /org/eclipse/jface/viewers/SelectionChangedEvent !" getSelection(()Lorg/eclipse/jface/viewers/ISelection; $&%$org/eclipse/jface/viewers/ISelection 'isEmpty).org/eclipse/jface/viewers/IStructuredSelection (+ ,-getFirstElement()Ljava/lang/Object;/-org/eclipse/egf/model/NamedModelElementWithId 132-org/eclipse/egf/model/data/helper/ModelHelper 45getFactoryComponentContainerY(Lorg/eclipse/egf/model/NamedModelElementWithId;)Lorg/eclipse/egf/model/FactoryComponent;70org/eclipse/egf/model/internal/data/ModelElement9#org/eclipse/core/resources/IProject 6; <= getAdapter%(Ljava/lang/Class;)Ljava/lang/Object; ?A@0org/eclipse/egf/common/ui/helper/WorkbenchHelper BCgetPackageExplorerView?()Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart; EGF;org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart HIselectAndReveal(Ljava/lang/Object;)Vevent_p1Lorg/eclipse/jface/viewers/SelectionChangedEvent; selection&Lorg/eclipse/jface/viewers/ISelection;structuredSelection0Lorg/eclipse/jface/viewers/IStructuredSelection;elementLjava/lang/Object;namedModelElement/Lorg/eclipse/egf/model/NamedModelElementWithId; fcContainer(Lorg/eclipse/egf/model/FactoryComponent;hostingProject%Lorg/eclipse/core/resources/IProject;packageExplorerView=Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart; SourceFile$FactoryComponentProjectExplorer.javaEnclosingMethod ^_ initListeners)(Lorg/eclipse/jface/viewers/TreeViewer;)V InnerClasses   8 *+ *     f+ * +M,#K,(N-*:.6.:0:68:8:>: D>"*29@OTY^e\ ffJKRLM"CNO*;PQ9,RS@%TUOVWY XYZ[\]`  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2030 Text-content-md5: eb3ee1ac3db92df98fea4dccdb456065 Text-content-sha1: 64fa8fb964b8973afc171ffbce0b39bccd60ec57 Content-length: 2089 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1KRorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$4java/lang/Object org/eclipse/ui/IPropertyListenerthis$0RLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;U(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)VCode    ()VLineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$4;propertyChanged(Ljava/lang/Object;I)V Porg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer getCommonViewer)()Lorg/eclipse/ui/navigator/CommonViewer;  %org/eclipse/ui/navigator/CommonViewer !" getControl#()Lorg/eclipse/swt/widgets/Control; $&%org/eclipse/swt/widgets/Control '( isDisposed()Z * +,access$2(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)Lorg/eclipse/jface/viewers/ISelectionChangedListener;./org/eclipse/jface/viewers/SelectionChangedEvent 0 12 getSelection(()Lorg/eclipse/jface/viewers/ISelection; -4 5W(Lorg/eclipse/jface/viewers/ISelectionProvider;Lorg/eclipse/jface/viewers/ISelection;)V 7983org/eclipse/jface/viewers/ISelectionChangedListener :;selectionChanged4(Lorg/eclipse/jface/viewers/SelectionChangedEvent;)Vsource_pLjava/lang/Object;propId_pI commonViewer'Lorg/eclipse/ui/navigator/CommonViewer;tree!Lorg/eclipse/swt/widgets/Control; SourceFile$FactoryComponentProjectExplorer.javaEnclosingMethod HI initListeners)(Lorg/eclipse/jface/viewers/TreeViewer;)V InnerClasses   8 *+ *    LJ* N-.-:##* )-Y--/36 &3K 4LL<=L>?/@A&%BCDEFGJ  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2867 Text-content-md5: 47ca201d7c82803955c5c80b2db24a98 Text-content-sha1: bb941c3e7c5fdc826f4b2aae9c670df3408dc70d Content-length: 2926 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1WRorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$5java/lang/Object9org/eclipse/egf/core/ui/data/listener/IWorkingSetListenerthis$0RLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;U(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)VCode    ()VLineNumberTableLocalVariableTablethisTLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$5;workingSetAddedq(Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;Lorg/eclipse/jface/util/PropertyChangeEvent;)V Porg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer getCommonViewer)()Lorg/eclipse/ui/navigator/CommonViewer;  %org/eclipse/ui/navigator/CommonViewer !"add'(Ljava/lang/Object;Ljava/lang/Object;)V workingSet_pBLorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSet;event_p,Lorg/eclipse/jface/util/PropertyChangeEvent;workingSetContentChanged )+*-org/eclipse/egf/common/ui/helper/ViewerHelper ,-refresh/(Lorg/eclipse/jface/viewers/StructuredViewer;)VworkingSetLabelChanged 0 12update((Ljava/lang/Object;[Ljava/lang/String;)VworkingSetNameChanged 5 .workingSetRemovedworkingSetModelChanged/(Lorg/eclipse/jface/util/PropertyChangeEvent;)V : ;<getPackageExplorerWorkingSets()Ljava/util/List; >@?java/util/List ABisEmpty()Z D EFaccess$3(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager; HJIGorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager KLupdatePublicWorkingSetsOrder(Ljava/util/List;)VpackageExplorerWorkingSetsLjava/util/List;LocalVariableTypeTable.Ljava/util/List; SourceFile$FactoryComponentProjectExplorer.javaEnclosingMethod UinitializeWorkingSetListener InnerClasses   8 *+ *    W+* + #$%&' U+ * (%') #$%&. W+* +/024 #$%&3 I*+,4 ;< #$%&6 M * ( D E   #$ %&78 '* 9M,=* C,G* (LMOQ&S ''%&MNO MPQRSTV  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 8531 Text-content-md5: 6be3eb6a2fb90dcb1335742e95823a92 Text-content-sha1: ab543c6340930019bee0e4b9f9de43f15bd68800 Content-length: 8590 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1/Porg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorerGorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView TAG_ROOT_MODELjava/lang/String; ConstantValue rootModeVIEW_ID Eorg.eclipse.egf.core.ui.workbench.views.explorer.assetProjectExplorerCONTENT_PROVIDER_IDLorg.eclipse.egf.core.ui.workbench.views.explorer.assetProjectExplorerContent_workingSetListener;Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;_fcWorkingSetManagerILorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager;_selectionChangedListener5Lorg/eclipse/jface/viewers/ISelectionChangedListener;()VCode  LineNumberTableLocalVariableTablethisRLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;getInitialInput'()Lorg/eclipse/core/runtime/IAdaptable; " #$isProjectModeSelected()Z & '( computeInput((Z)Lorg/eclipse/core/runtime/IAdaptable; *,+&org/eclipse/egf/core/ui/EgfUiActivator -. getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; *0 1 #getFactoryComponentInWorkspaceInput 3  *5 6 getWorkingSetsInput8Gorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager : ;initializeWorkingSetListener = >? getViewSite()Lorg/eclipse/ui/IViewSite; ACBorg/eclipse/ui/IViewSite DEgetShell!()Lorg/eclipse/swt/widgets/Shell; GIHorg/eclipse/swt/widgets/Shell JK getDisplay#()Lorg/eclipse/swt/widgets/Display;MRorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$1 LO PU(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)V RTSorg/eclipse/swt/widgets/Display UV asyncExec(Ljava/lang/Runnable;)VisProjectModeSelected_pZinput%Lorg/eclipse/core/runtime/IAdaptable; \^]&org/eclipse/jdt/internal/ui/JavaPlugin -_*()Lorg/eclipse/jdt/internal/ui/JavaPlugin;a;org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart cedjava/lang/Class fggetName()Ljava/lang/String; \i jkgetDialogSettingsSection?(Ljava/lang/String;)Lorg/eclipse/jface/dialogs/IDialogSettings; mon)org/eclipse/jface/dialogs/IDialogSettings pqgetInt(Ljava/lang/String;)IdialogSettingsSection+Lorg/eclipse/jface/dialogs/IDialogSettings;getContentProviderIdgetEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; *x uvhandleAffectedObjects(Ljava/util/Collection;)V Signature(Ljava/util/Collection<*>;)V ~ yz java/util/Collection iterator()Ljava/util/Iterator; java/util/Iterator next()Ljava/lang/Object;%org/eclipse/egf/model/ContractElement&org/eclipse/egf/model/FactoryComponent $hasNext  getCommonViewer)()Lorg/eclipse/ui/navigator/CommonViewer; -org/eclipse/egf/common/ui/helper/ViewerHelper refresh/(Lorg/eclipse/jface/viewers/StructuredViewer;)V  getNavigatorActionService3()Lorg/eclipse/ui/navigator/NavigatorActionService; /org/eclipse/ui/navigator/NavigatorActionService updateActionBarsaffectedObjects_pLjava/util/Collection; forceRefreshLjava/util/Iterator;affectedObjectLjava/lang/Object;LocalVariableTypeTableLjava/util/Collection<*>;Ljava/util/Iterator<*>;createCommonViewerL(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/ui/navigator/CommonViewer;Rorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$2 A ggetId (Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;Ljava/lang/String;Lorg/eclipse/swt/widgets/Composite;I)V   initListeners)(Lorg/eclipse/jface/viewers/TreeViewer;)V %org/eclipse/ui/navigator/CommonViewer getNavigatorContentService5()Lorg/eclipse/ui/navigator/INavigatorContentService;   getMemento()Lorg/eclipse/ui/IMemento; 1org/eclipse/ui/navigator/INavigatorContentService  restoreState(Lorg/eclipse/ui/IMemento;)Vparent_p#Lorg/eclipse/swt/widgets/Composite;viewer'Lorg/eclipse/ui/navigator/CommonViewer; Rorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$3 O   $org/eclipse/jface/viewers/TreeViewer addPostSelectionChangedListener8(Lorg/eclipse/jface/viewers/ISelectionChangedListener;)VRorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$4 O  addPropertyListener%(Lorg/eclipse/ui/IPropertyListener;)Vviewer_p&Lorg/eclipse/jface/viewers/TreeViewer;  Rorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer$5 O  $getFactoryComponentWorkingSetManagerK()Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager; 7 addWorkingSetListener>(Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;)VgetPackageExplorerWorkingSets()Ljava/util/List;0()Ljava/util/List; java/util/Collections  emptyList 0org/eclipse/egf/common/ui/helper/WorkbenchHelper getPackageExplorerView?()Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart; ` getWorkingSetModel;()Lorg/eclipse/jdt/internal/ui/workingsets/WorkingSetModel; 7org/eclipse/jdt/internal/ui/workingsets/WorkingSetModel  getActiveWorkingSets()[Lorg/eclipse/ui/IWorkingSet;    (org/eclipse/egf/common/helper/MiscHelper asList%([Ljava/lang/Object;)Ljava/util/List;activeWorkingSetsLjava/util/List;packageExplorerView=Lorg/eclipse/jdt/internal/ui/packageview/PackageExplorerPart;activeWorkingSetArray[Lorg/eclipse/ui/IWorkingSet;.Ljava/util/List;dispose   7 removeWorkingSetListener updateInput(Z)V  !"setInput(Ljava/lang/Object;)VnewInput %  access$1(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)Lorg/eclipse/egf/core/ui/data/listener/IWorkingSetListener;access$2(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)Lorg/eclipse/jface/viewers/ISelectionChangedListener;access$3(Lorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer;)Lorg/eclipse/egf/core/ui/data/explorer/FactoryComponentWorkingSetManager; SourceFile$FactoryComponentProjectExplorer.java InnerClasses!   /*=  3 **!%`  '(FM )/M7*2*)472*9*2M*<@FLY*NQ,& hikno$r(t-wD FFWXDYZ#$T[`bhL+l   rstg- uv1)w yz{|K*+}=+N-: =- **. )+8<CJ4KKDX*K*t*Y**<+M*,,*¹,( **j&*+*Y*ӵ+*Զ*Y*޶߱%&&;U**Y***VX {LM,,N- L+_`b cdf* _!***2***2no qst v !/*2} U*%M*, WX #D%*$&'%*N()%*԰Y*+%*2T,-.*L Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentWorkingSetSorter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 850 Text-content-md5: 4d34932504051540d3df2c48802a1ff1 Text-content-sha1: fbb9bd1816771363f68e8ca9d00203e68c35296c Content-length: 909 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Qorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentWorkingSetSorter&org/eclipse/jface/viewers/ViewerSorter()VCode  LineNumberTableLocalVariableTablethisSLorg/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentWorkingSetSorter;(Ljava/text/Collator;)V   collator_pLjava/text/Collator;compareI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)Iviewer_p"Lorg/eclipse/jface/viewers/Viewer;e1_pLjava/lang/Object;e2_p SourceFile%FactoryComponentWorkingSetSorter.java!3*   >*+ "#  J + *  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1176 Text-content-md5: 9927f9452f94ca70e03c173663ef3d3a Text-content-sha1: 442ed3a044a57c6e45bdde54e40cbc0a7d784a64 Content-length: 1235 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1&Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$1$org/eclipse/ui/dialogs/PatternFilterthis$0ILorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;L(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)VCode    ()VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$1; isParentMatch7(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;)Zviewer_p"Lorg/eclipse/jface/viewers/Viewer; element_pLjava/lang/Object; isLeafMatch&org/eclipse/egf/model/FactoryComponent  resultZ SourceFile!AbstractFactoryComponentView.javaEnclosingMethod$Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView InnerClasses  8 *+ *  s   @y  f>, *+,> * !"# %  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2$1.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1846 Text-content-md5: 1eae8d94acbb296265627a26696b8e62 Text-content-sha1: c7620560f302db84967c369a119a79cb371c0f32 Content-length: 1905 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?Korg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2$1java/lang/Objectjava/lang/Runnablethis$1KLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2;val$mostRecentCommand(Lorg/eclipse/emf/common/command/Command;v(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2;Lorg/eclipse/emf/common/command/Command;)VCode     ()VLineNumberTableLocalVariableTablethisMLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2$1;run &org/eclipse/emf/common/command/Command getAffectedObjects()Ljava/util/Collection; !#"Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2 $%access$0(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2;)Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView; ')(Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView *+handleAffectedObjects(Ljava/util/Collection;)V '- $.~(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)Lorg/eclipse/ui/views/properties/PropertySheetPage; 0211org/eclipse/ui/views/properties/PropertySheetPage 3refreshaffectedObjectsLjava/util/Collection;LocalVariableTypeTableLjava/util/Collection<*>; SourceFile!AbstractFactoryComponentView.javaEnclosingMethod <=commandStackChanged(Ljava/util/EventObject;)V InnerClasses    =*+*,*    7**L* +&* ,* ,/)67 456  4789:!;>! Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2017 Text-content-md5: 2bb1976f94d5298ba149dfd4dfb4b6a1 Text-content-sha1: 264a855f38d461cdc7a756133d0f1d9a84a886d9 Content-length: 2076 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1JIorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2java/lang/Object3org/eclipse/emf/common/command/CommandStackListenerthis$0ILorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;L(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)VCode    ()VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2;commandStackChanged(Ljava/util/EventObject;)V java/util/EventObject  getSource()Ljava/lang/Object;+org/eclipse/emf/common/command/CommandStack  !"getMostRecentCommand*()Lorg/eclipse/emf/common/command/Command; $&%Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView '( getViewSite()Lorg/eclipse/ui/IViewSite; *,+org/eclipse/ui/IViewSite -.getShell!()Lorg/eclipse/swt/widgets/Shell; 021org/eclipse/swt/widgets/Shell 34 getDisplay#()Lorg/eclipse/swt/widgets/Display;6Korg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2$1 58 9v(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2;Lorg/eclipse/emf/common/command/Command;)V ;=<org/eclipse/swt/widgets/Display >? asyncExec(Ljava/lang/Runnable;)Vevent_PLjava/util/EventObject;mostRecentCommand(Lorg/eclipse/emf/common/command/Command;access$0(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2;)Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView; SourceFile!AbstractFactoryComponentView.javaEnclosingMethod InnerClasses   8 *+ *    o)+M* #)/5Y*,7: ( ))@A BCDE %* FGH$I5 Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$3.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1573 Text-content-md5: f94c39754bd3df4a2513c3c5e60c544f Text-content-sha1: e633b61a300572957c85b1bd0ede6b4d6e514371 Content-length: 1632 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 13Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$36org/eclipse/emf/edit/ui/view/ExtendedPropertySheetPagethis$0ILorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;)VCode    <(Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;)VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$3; $anonymous09Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;setSelectionToViewer(Ljava/util/List;)V Signature(Ljava/util/List<*>;)V Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView (Ljava/util/Collection;)V  !setFocus()V selection_pLjava/util/List;LocalVariableTypeTableLjava/util/List<*>; setActionBars(Lorg/eclipse/ui/IActionBars;)V ) &' actionBars_pLorg/eclipse/ui/IActionBars; SourceFile!AbstractFactoryComponentView.javaEnclosingMethod 01getPropertySheetPage6()Lorg/eclipse/ui/views/properties/IPropertySheetPage; InnerClasses  C *+ *,     ^* +* "#$ "%&' >*+( *+,-./2  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$4.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1407 Text-content-md5: 768022c77629c293258d6fb11361f30e Text-content-sha1: 34158d231cbc0248dd2f693891cee65c1a9cc0f9 Content-length: 1466 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1:Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$4java/lang/Objectjava/lang/Runnablethis$0ILorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;val$theSelectionLjava/util/Collection;b(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;Ljava/util/Collection;)VCode     ()VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$4;run Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView getCommonViewer)()Lorg/eclipse/ui/navigator/CommonViewer;!-org/eclipse/jface/viewers/StructuredSelection #%$java/util/Collection &'toArray()[Ljava/lang/Object; ) *([Ljava/lang/Object;)V ,.-%org/eclipse/ui/navigator/CommonViewer /0 setSelection*(Lorg/eclipse/jface/viewers/ISelection;Z)Vviewer'Lorg/eclipse/ui/navigator/CommonViewer; SourceFile!AbstractFactoryComponentView.javaEnclosingMethod 78setSelectionToViewer(Ljava/util/Collection;)V InnerClasses    =*+*,*  "  b"*L++ Y*"(+&' (!*"1234569  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$5.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1107 Text-content-md5: 45db286a5aed67661288811995805cbd Text-content-sha1: ea5ea88529acaa09d03199cd8ea433b85f77cfb1 Content-length: 1166 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1*Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$5!org/eclipse/swt/events/KeyAdapterthis$0ILorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;L(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)VCode    ()VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$5; keyPressed$(Lorg/eclipse/swt/events/KeyEvent;)V org/eclipse/swt/events/KeyEvent keyCodeI Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView setFocuse!Lorg/eclipse/swt/events/KeyEvent; SourceFile!AbstractFactoryComponentView.javaEnclosingMethod '(createFilterTextC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; InnerClasses  8 *+ *     M+ *  !"#$%&)  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$6.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1734 Text-content-md5: 93a924ddb72efe79f07baea1521b104d Text-content-sha1: 92be26ed4338bfbbb72b21da9f7e0a63c393f92b Content-length: 1793 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1BIorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$6java/lang/Object%org/eclipse/swt/events/ModifyListenerthis$0ILorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;L(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)VCode    ()VLineNumberTableLocalVariableTablethisKLorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$6; modifyText'(Lorg/eclipse/swt/events/ModifyEvent;)V Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView getFilterTextValue()Ljava/lang/String;   access$1^(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;Ljava/lang/String;)V " #$getPatternFilter(()Lorg/eclipse/ui/dialogs/PatternFilter; & '(access$2](Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)Ljava/lang/String; *,+$org/eclipse/ui/dialogs/PatternFilter -. setPattern(Ljava/lang/String;)V 0 12getCommonViewer)()Lorg/eclipse/ui/navigator/CommonViewer; 465-org/eclipse/egf/common/ui/helper/ViewerHelper 78refresh0(Lorg/eclipse/jface/viewers/StructuredViewer;Z)Vevent_p$Lorg/eclipse/swt/events/ModifyEvent; SourceFile!AbstractFactoryComponentView.javaEnclosingMethod ?@createFilterTextC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text; InnerClasses   8 *+ *    k+* * * !* %)* /3*++9:;<=>A  Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 12046 Text-content-md5: 640052351b3bb84ff80186bace31f5a5 Text-content-sha1: c7976e452bd2d931108e85449f32d5489efc29d5 Content-length: 12105 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Gorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView(org/eclipse/ui/navigator/CommonNavigator__loggerLorg/apache/log4j/Logger; TAG_MEMENTOLjava/lang/String; ConstantValue mementoTAG_PATTERN_FILTER patternFilter_mementoLorg/eclipse/ui/IMemento; _viewSettings+Lorg/eclipse/jface/dialogs/IDialogSettings;_propertySheetPage3Lorg/eclipse/ui/views/properties/PropertySheetPage;_commandStackListener5Lorg/eclipse/emf/common/command/CommandStackListener; _filterTextLorg/eclipse/swt/widgets/Text;_patternFilter&Lorg/eclipse/ui/dialogs/PatternFilter;_enteredPatternFilter()VCode "!java/lang/Class #$ getPackage()Ljava/lang/Package; &('java/lang/Package )*getName()Ljava/lang/String; ,.-org/apache/log4j/Logger /0 getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; 2 LineNumberTableLocalVariableTable 7 5 9 :;getDialogSettingsSection-()Lorg/eclipse/jface/dialogs/IDialogSettings; = ?Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$1 >A 5BL(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)V D FIorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$2 EA I  K LMgetCommandStack/()Lorg/eclipse/emf/common/command/CommandStack; OQP+org/eclipse/emf/common/command/CommandStack RSaddCommandStackListener8(Lorg/eclipse/emf/common/command/CommandStackListener;)VthisILorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView; WYX7org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator Z[ getDefault;()Lorg/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator; W] ^;getDialogSettings `bajava/lang/Object cdgetClass()Ljava/lang/Class; ( gih)org/eclipse/jface/dialogs/IDialogSettings jk getSection?(Ljava/lang/String;)Lorg/eclipse/jface/dialogs/IDialogSettings; gm nk addNewSectiondialogSettings sectionNamesectionhandleAffectedObjects(Ljava/util/Collection;)V Signature(Ljava/util/Collection<*>;)V w xssetSelectionToVieweraffectedObjects_pLjava/util/Collection;LocalVariableTypeTableLjava/util/Collection<*>;getEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;  }~ K7org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain getAdapter%(Ljava/lang/Class;)Ljava/lang/Object;2org/eclipse/ui/views/properties/IPropertySheetPage  getPropertySheetPage6()Lorg/eclipse/ui/views/properties/IPropertySheetPage;   adapter_pLjava/lang/Class;resultLjava/lang/Object;getContentProviderId  Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$3 5(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;)V  getContentProvider2()Lorg/eclipse/jface/viewers/ITreeContentProvider;Jorg/eclipse/egf/core/ui/viewers/AbstractAdaptedModelElementContentProvider  getAdapterFactoryContentProviderB()Lorg/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider;java/lang/StringBuilder8AbstractFactoryComponentView.getPropertySheetPage(..) _ 5(Ljava/lang/String;)V-no content provider found for current view!!! append-(Ljava/lang/String;)Ljava/lang/StringBuilder; *toString , error(Ljava/lang/Object;)V 1org/eclipse/ui/views/properties/PropertySheetPage setPropertySourceProvider<(Lorg/eclipse/ui/views/properties/IPropertySourceProvider;)V editingDomain9Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain;contentProvider0Lorg/eclipse/jface/viewers/ITreeContentProvider;propertySourceProvider9Lorg/eclipse/ui/views/properties/IPropertySourceProvider; loggerMessageLjava/lang/StringBuilder;  getCommonViewer)()Lorg/eclipse/ui/navigator/CommonViewer; %org/eclipse/ui/navigator/CommonViewer getNavigatorContentService5()Lorg/eclipse/ui/navigator/INavigatorContentService;  * 1org/eclipse/ui/navigator/INavigatorContentService getContentExtensionByIdI(Ljava/lang/String;)Lorg/eclipse/ui/navigator/INavigatorContentExtension; 3org/eclipse/ui/navigator/INavigatorContentExtensionnavigatorContentService3Lorg/eclipse/ui/navigator/INavigatorContentService; contentExt5Lorg/eclipse/ui/navigator/INavigatorContentExtension; java/util/Collection isEmpty()ZIorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$4 5b(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;Ljava/util/Collection;)V java/lang/Runnable run collection theSelectionrunnableLjava/lang/Runnable;createPartControl&(Lorg/eclipse/swt/widgets/Composite;)V!org/eclipse/swt/widgets/Composite 5'(Lorg/eclipse/swt/widgets/Composite;I)V!org/eclipse/swt/layout/GridLayout 7  setLayout#(Lorg/eclipse/swt/widgets/Layout;)Vorg/eclipse/swt/layout/GridData  5(I)V   setLayoutData   createFilterWidget    getControl#()Lorg/eclipse/swt/widgets/Control; org/eclipse/swt/widgets/Control   addFilter+(Lorg/eclipse/jface/viewers/ViewerFilter;)Vparent_p#Lorg/eclipse/swt/widgets/Composite; compositelayout#Lorg/eclipse/swt/layout/GridLayout; commonViewer'Lorg/eclipse/ui/navigator/CommonViewer; getMemento()Lorg/eclipse/ui/IMemento; # init6(Lorg/eclipse/ui/IViewSite;Lorg/eclipse/ui/IMemento;)V Exceptions( org/eclipse/ui/PartInitException * +,restoreViewSettings4(Lorg/eclipse/ui/IMemento;)Lorg/eclipse/ui/IMemento; . $%site_pLorg/eclipse/ui/IViewSite; memento_p g3 45get&(Ljava/lang/String;)Ljava/lang/String;7java/io/StringReader 6 :<;org/eclipse/ui/XMLMemento =>createReadRoot-(Ljava/io/Reader;)Lorg/eclipse/ui/XMLMemento;@!org/eclipse/ui/WorkbenchExceptionpersistedMementodispose D EsaveViewSettings G H removeFilter OJ KSremoveCommandStackListener OM Nflush P B commandStack-Lorg/eclipse/emf/common/command/CommandStack; T U* getSimpleName :W XYcreateWriteRoot/(Ljava/lang/String;)Lorg/eclipse/ui/XMLMemento; [ \] saveState(Lorg/eclipse/ui/IMemento;)V_java/io/StringWriter ^7 :b cdsave(Ljava/io/Writer;)V ^f gh getBuffer()Ljava/lang/StringBuffer; jkjava/lang/StringBuffer gm noput'(Ljava/lang/String;Ljava/lang/String;)Vqjava/io/IOExceptionrootNameLorg/eclipse/ui/XMLMemento;writerLjava/io/StringWriter; w  y{zorg/eclipse/ui/IMemento |o putString [restorePatternFilter:(Lorg/eclipse/swt/widgets/Text;Lorg/eclipse/ui/IMemento;)V y 5 getString org/eclipse/swt/widgets/Text setText  getPatternFilter(()Lorg/eclipse/ui/dialogs/PatternFilter; $org/eclipse/ui/dialogs/PatternFilter  setPatterntext_pcreateMessageAreaD(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Label;org/eclipse/swt/widgets/Label  *org/eclipse/egf/core/ui/workbench/Messages ,FactoryComponentView_PatternFilterText_Title   getFont!()Lorg/eclipse/swt/graphics/Font;  setFont"(Lorg/eclipse/swt/graphics/Font;)V 7  grabExcessVerticalSpaceZ  grabExcessHorizontalSpace  horizontalAlignmentI  verticalAlignment labelLorg/eclipse/swt/widgets/Label;data!Lorg/eclipse/swt/layout/GridData;createFilterTextC(Lorg/eclipse/swt/widgets/Composite;)Lorg/eclipse/swt/widgets/Text;      !  ~Iorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$5 A  addKeyListener'(Lorg/eclipse/swt/events/KeyListener;)VIorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView$6 A  addModifyListener*(Lorg/eclipse/swt/events/ModifyListener;)Vtext       composite_pgetFilterTextValue  *getTextaccess$0~(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)Lorg/eclipse/ui/views/properties/PropertySheetPage;access$1^(Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;Ljava/lang/String;)Vaccess$2](Lorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView;)Ljava/lang/String; SourceFile!AbstractFactoryComponentView.java InnerClasses!      3%+13 FB45p2*6**8<*>Y*@C*EY*GH*J*HN3oq s$14 2TU:;%V\L*_eM+,fN- +,lN-3#4*%TUopqrstuP*+v3 4TUyz{ y|}~LM2*34 TUfM+ *M *+M,34 TU*]*T*L*Y*+*MN,,N!Y:W1*-*32   '2=EPX44]TU L: 8=p*ƶL+*йM,N-34*TU xstu +M,,Y*,N-3",.4* TU zz{ ||QY+MYN,-,Y*, *, *:Y*C3* 6 789%;*=/?5@GBPC44QTUQ G?5 !/*"3J4 TU$%&'Y**,)"*+*"-3V WX4 TU/01+,)+M,$*< 2N-6Y-89M:,"%?3^`cdf%g'l4*)TU)1' ABu)*C**CF*JL+*HI+L*O3uwyz|$}(~4)TUQRE7*_SL+VM*,Z^Y`N,-a*< -eil:14p3" 464*7TU/r * stu\]Y*v+ *vx*+}34TU1~),+, N-+-*-*-v3" #(4*)TU))1<Y+M,,+YN----,-,3*  !&+05:4*<TU< 2!XY+MYN----,-,+*,*,Y*Ķ,Y*˶,32  #(-5>JV4*XTUX LD L*+W**+ӵձ34TU*2*նٰ34 TU/*C34 TU%*3Z4&*+v3j4%*v3j42>E Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/FactoryComponentViewSorter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1225 Text-content-md5: 43e1b31da4e3275453610cdba51aa376 Text-content-sha1: 2650ffcd91fc859eb17c91ca318abe6317842e6e Content-length: 1284 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1.Eorg/eclipse/egf/core/ui/workbench/views/fc/FactoryComponentViewSorter&org/eclipse/jface/viewers/ViewerSorter()VCode  LineNumberTableLocalVariableTablethisGLorg/eclipse/egf/core/ui/workbench/views/fc/FactoryComponentViewSorter;(Ljava/text/Collator;)V   collator_pLjava/text/Collator;compareI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)I-org/eclipse/egf/model/NamedModelElementWithId   "org/eclipse/egf/core/CoreActivator  getDefault&()Lorg/eclipse/egf/core/CoreActivator;  !"getSortingPriority2(Lorg/eclipse/egf/model/NamedModelElementWithId;)Iviewer_p"Lorg/eclipse/jface/viewers/Viewer; object1_pLjava/lang/Object; object2_presultIvalue1value2 SourceFileFactoryComponentViewSorter.java!3*   >*+ &'  ?6, -*+,-6",6-6d6 /125)657<9 H? ?#$?%&?'&<())*)5+),- Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/InstalledFactoryComponentView.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1348 Text-content-md5: 481844878d941f51f69d8ebd3e596e0d Text-content-sha1: e6403f3733de108f690387518ae821482e6d48da Content-length: 1407 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1-Horg/eclipse/egf/core/ui/workbench/views/fc/InstalledFactoryComponentViewGorg/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentViewVIEW_IDLjava/lang/String; ConstantValue =org.eclipse.egf.core.ui.workbench.views.fc.installedAssetViewCONTENT_PROVIDER_ID Dorg.eclipse.egf.core.ui.workbench.views.fc.installedAssetViewContent()VCode  LineNumberTableLocalVariableTablethisJLorg/eclipse/egf/core/ui/workbench/views/fc/InstalledFactoryComponentView;getContentProviderId()Ljava/lang/String;getInitialInput'()Lorg/eclipse/core/runtime/IAdaptable; &org/eclipse/egf/core/ui/EgfUiActivator  getDefault*()Lorg/eclipse/egf/core/ui/EgfUiActivator; ! "!getFactoryComponentInPlatormInputgetEditingDomain;()Lorg/eclipse/emf/edit/domain/AdapterFactoryEditingDomain; & '$getEditingDomainInReadOnly()Ljava/lang/Object; *  SourceFile"InstalledFactoryComponentView.java!   /* - ' 1 / #$1%7 D(%*)+, Node-path: plugins/org.eclipse.egf.core.ui.workbench/bin/org/eclipse/egf/core/ui/workbench/views/fc/ProductionPlanSorter.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 802 Text-content-md5: 5dd3fd16f89b8029a06840b24861f9c4 Text-content-sha1: 88e79e218f2da326872a6bccc50508f96613413f Content-length: 861 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1?org/eclipse/egf/core/ui/workbench/views/fc/ProductionPlanSorter&org/eclipse/jface/viewers/ViewerSorter()VCode  LineNumberTableLocalVariableTablethisALorg/eclipse/egf/core/ui/workbench/views/fc/ProductionPlanSorter;(Ljava/text/Collator;)V   collator_pLjava/text/Collator;compareI(Lorg/eclipse/jface/viewers/Viewer;Ljava/lang/Object;Ljava/lang/Object;)Iviewer_p"Lorg/eclipse/jface/viewers/Viewer;e1_pLjava/lang/Object;e2_p SourceFileProductionPlanSorter.java!3*   >*+ #$  J , *  Node-path: plugins/org.eclipse.egf.core.ui.workbench/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 639 Text-content-md5: 123704b491227e860606c42e471ab743 Text-content-sha1: 623a1a8c3b9608a69cbfc7d3c196a08ba82ff3d1 Content-length: 684 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ about.html,\ plugin.xml,\ plugin.properties,\ icons/ src.includes = about.html Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/eview16 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/eview16/Thumbs.db Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 3072 Text-content-md5: af52ff6ecba7ab3c60906cff17d698d2 Text-content-sha1: 0f0a324e68d577a915fe1d52bef90421753da9a6 Content-length: 3131 K 13 svn:mime-type V 24 application/octet-stream PROPS-END ࡱ> Root Entry۔17Catalog `  +JFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?nZ|Cj2Mi{%-k M̻^܎žx]Jk+MdU4IzxIexNff,Ĝ"dE{ObעK|+QfMdTy1p c[ᧉfactory_component_explorer.gif Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/eview16/factory_component_explorer.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 325 Text-content-md5: 870ebe548d090f81be5d5b05af518866 Text-content-sha1: 93abd3b9b22b5105294a427425944c3a881529cf Content-length: 384 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a%ovpRrT}qrTnronzZoo^uzrm{ssv|y~q|¥yȤsͬ{!?,bp8$G$ ~90R!wyT&h (:#ʐFD QAP, xYR[?F?HJDOQYVXC]_acfhjlnprtvz|~A; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16 Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/Thumbs.db Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 17408 Text-content-md5: bc94da60064fa8ad08f584f5b0749e7b Text-content-sha1: 9936dac725cdfb04667683a0ae6605c2c892d95b Content-length: 17467 K 13 svn:mime-type V 24 application/octet-stream PROPS-END ࡱ>   Root Entryp\312Catalog 2>  !"#$%&'(*+,-./012345689:;<=>?@ABCDFGHIJKLMNOPQRTUVWXYZ[\]^_`bcdefghijklmnpqrstuvwxyz{|~ &JFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?Sgt 5r-tk y>~pW&F*!U῎6I&mrH2-Kiv!73!D-&u[5jP.di\Fl]2ymL1ukՕty]}ӥ} ]\*~MJr++8EV_``,a>validate.gif" 2JFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? :;Hg$3;7eYy?x8$ Quv?&42Yʭ#ČE%A#g"5 W:Mߍ'GB#4}_6qiH&vj"Ĭ㕡ϐ8'ɯkeo>up^ҏ EJFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdef3Q4 )R57L6EQghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?D5 WpP^F1!UTĀ$ WǺ>$xn[m^kfAyvzh~5vr<]$/~9I4 tkQ '3]oeF,j"Rm]>ፏm*tITMk7 גrBFԖfqU N6wz'E~]u? FJFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?Z:ׂ-E}+L7ťLÕydter<̀(=NS¾:_I{zZmf{c#qo<1 HB-{oǏC<7{{Z;]=wrTLPVHM{1YxwQ]Gy,=10ɇTsF_>UVRN\k~K~:Ty_? @JFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?6x>LRښ2ޱBfXqJwdcӭruc:mq:a|ӨxXKfH'#"",O[.AΛogx}А|l;\|ko Ó{tZԗGur|T¼LU*FOM-m{3Х(F ^z? EJFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?;O]}Xc $4 p<|Sǐe·2{nkoa3ᤷYch5+>|I;s륙+FnmǼabS fWOE=fZ:xLmAedQTݙo.==^hsKwvݿװPuKznt CJFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdef7SO8 aR9oR01 }Pghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?íH]?kj*5"F#q,ͅF7 >'>EHQ,d0>|q'7e dPňu\ }+PIIBf"%D혣df'Jw<wN$Z\o[ &+8b%@kx;u𾕠[xO;Mﯮ8?Z/J/t$ƪs/ʿgF/~!մ[{f%:$XeKۻkmt;JP.ޛldvfflnnew.gif$a>edit.gif:a>execute_factory.gif.a>new_asset.gifJa>new_asset_configuration.gif2a>new_context.gifBa>new_context_element.gifD a>new_contract_element.gif0 a>new_domain.gif> a>new_mapping_model.gifB a>new_pattern_library.gif> a>new_pattern_model.gif<a>new_task_factory.gif Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/edit.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 210 Text-content-md5: e6afc4706ed13e157f0877c817511344 Text-content-sha1: 87df303d3f4120bf96fdc0974989c02c4cfc1da8 Content-length: 269 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a%kϔ~gћOR"Z2a=dCjP!,O $=C$2ڥAdB(D  HZZZZA; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_asset.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 335 Text-content-md5: 25b3763d5326bfec4a00ee718aa19001 Text-content-sha1: 129d951ca0ada34f1a2b6d25fc3505558b956351 Content-length: 394 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a#cf`P@tswpy{|rWu\\xa#g&{l}ommʦu˦u˧u԰{·݃!?,lpHFaDtL9V N?pUH 5'H*icP~EE#E  EEzDA; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_asset_configuration.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 549 Text-content-md5: c52d880c9de8326cdaf4026a3e1a5328 Text-content-sha1: 628fd16355fce5028aac02c0d9a54c1b283fe8ba Content-length: 608 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a@m9t>|C$H6zH)MS{N.R2UpNt5XyrT}qnronzZooT^uzrm#{ss&v|Yy~qV^|¥yȤsͬ{ZR`cd݃!@,@""??> =@6 < ;6 6::669--5/@788-@% @ '$!(02.&,*14) +3#; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_context.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 216 Text-content-md5: e882b29eb243d2d917d6d16dd45e0c50 Text-content-sha1: 9f3eb2237274fab527776fe589047e269140fc8f Content-length: 275 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a3LoG_IbTjVlYmYn[o]qtovfxgyizj{yl}lm#&݃!,U'hZYT|UU? IA | & x @d"Cq"ǰ\0(IQJl`9$'9q)4%; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_contract_element.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 580 Text-content-md5: 0a49bb22f7ef2203cfe14b3362556378 Text-content-sha1: 07981690ffea50938be8867d440bca66cea0e11d Content-length: 639 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89aC(b|o>{p>|p>p=q>!<<<;; 999:55746711132 //0-/. )),)+* %(L8P1@! 0q@i,; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_domain.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 377 Text-content-md5: c86c093118c6cde8456c8bd782484118 Text-content-sha1: 0af31b63714f7b9ef0cd8b018107e7094070df48 Content-length: 436 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89as9EB~?X,fWIl6~MR]dxǜǵqijsɟۺϢ##&磞y݃t!9,pH,"j\`Z9W6`0f2X&P!hޚN̈́D/<272C 8D 'C%D #D$D  -E E""ECA; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_mapping_model.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 368 Text-content-md5: 3b324c637bc97bdeffa82334ae314d0f Text-content-sha1: 597e123f5b2d3a6c304c84d34960521689549487 Content-length: 427 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89as9EB~?X,fWͬӽڒIl6~MR]dxǜĨ2]bo}?ϵ##&磞y݃twrmf!_"ې;!,,@pH, FVXX,°Y G n8Gp4fkh4H$R$@BY[,H$CfMON%D XZ\IHegiItvxzD,&,,''fC(+( D,))CHI,*CA; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_pattern_library.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 366 Text-content-md5: 204447742a58251f74c2746b2ddb148b Text-content-sha1: 5a6287c12a5cc3cb577c8b012a532cf7c793f99b Content-length: 425 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a:q<yO@nTOY2UY!Y"\"`#c%tyrTpXm(q*yWUu*w+z-1bŃ2#iź&`ǠԔΫޝû׸׹߫ۿɡѦ݃!?,pHr!'wL ?&i /l`y!5.Ħ&Nf7_njF[ E$*+!D  PC df(##Ep4)&020& D{41-1C%'/'",C #NODA; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_pattern_model.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 214 Text-content-md5: b56a4e841b2fc2e12f09740b12f122c9 Text-content-sha1: 67cd82211172355030ef0b4fd836ef48ab22f03b Content-length: 273 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a/uty#&ݢߥ݃!,S'diƉn:V*7~Ð& 0AX( '@R$>&QYdEa"JNH.!; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/new_task_factory.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 598 Text-content-md5: 86d2aa32155e1eeca05b39dc33836b54 Text-content-sha1: 94f3fdd8c205e933998f95d781051501c7664ca6 Content-length: 657 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89aA2]tyg}jmstz#&‘ĩǭ|}zzw²uŴsǵq݃!Created by lcelb!,$@$?? @ #==;<<> 1 ": 9(!476758' 3 20/%/&..&--&,,b\ !ÇU@ ŋ; Node-path: plugins/org.eclipse.egf.core.ui.workbench/icons/obj16/validate.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 72 Text-content-md5: 3d27c0ffd096ebcb53d0b9d500007810 Text-content-sha1: 3fb042ebd35e1026ac29ed6d070b128286d89b51 Content-length: 131 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a3!, RHknq]_h*ǠJ; Node-path: plugins/org.eclipse.egf.core.ui.workbench/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1160 Text-content-md5: 4f639b07077605aa9df1781f3e814707 Text-content-sha1: 8a00d117691b4f39c5dbe8b9185c307bb065eab6 Content-length: 1205 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Core UI Workbench (Incubation) providerName=Eclipse Modeling Project # Common messages. egfCategory=EGF # Factory component project explorer view messages. fcProjectExplorerName=Factory Component Explorer fcProjectExplorerContentName=Factory Component Explorer Content # Deployed factory component view messages. installedFcViewName=Factory Components installedFcViewContentName=Factory Components Content # New wizard messages. new.fc.project=Factory Component Project # Perspective messages. egfPerspectiveName=EGF # Actions egfPopupMenu=EGF Tools convert2FactoryComponentTitle=Convert Projects To Factory Components convert2FactoryComponentTooltip=Convert the selected projects to factory components Node-path: plugins/org.eclipse.egf.core.ui.workbench/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 22611 Text-content-md5: c9d9e9009b4e99c0b3d690f230e41274 Text-content-sha1: 818031eda79044970c892af0a27ab71c5fef054b Content-length: 22656 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/EarlyStartup.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1464 Text-content-md5: 1f283aa0703c5b9432f0bee89742505b Text-content-sha1: 6d0b53e1c20c6c5d908a6c2c9034563b78115131 Content-length: 1509 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench; import org.eclipse.ui.IStartup; import org.eclipse.ui.PlatformUI; /** * @author Guillaume Brocard */ public class EarlyStartup implements IStartup { /** * @see org.eclipse.ui.IStartup#earlyStartup() */ public void earlyStartup() { // Make sure the job is done in the UI Thread. PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { /** * @see java.lang.Runnable#run() */ public void run() { // The active page is displayed, let's register some listeners regarding the working sets management. EgfWorkbenchActivator solfaWorkbenchActivator = EgfWorkbenchActivator.getDefault(); solfaWorkbenchActivator.registerPackageExplorerListeners(null); solfaWorkbenchActivator.registerPackageExplorerPartListener(); } }); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/EgfWorkbenchActivator.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 12991 Text-content-md5: 0827ee2ab6ef30784821ad64fa8bdaaa Text-content-sha1: e7feab3c4ce74d6bdd646e50cb591ecf5e3325fe Content-length: 13036 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench; import org.eclipse.egf.common.ui.activator.AbstractUIActivator; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSetManager; import org.eclipse.egf.core.ui.workbench.views.explorer.FactoryComponentProjectExplorer; import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart; import org.eclipse.jdt.internal.ui.workingsets.WorkingSetMessages; import org.eclipse.jdt.internal.ui.workingsets.WorkingSetModel; import org.eclipse.jdt.ui.JavaUI; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.ui.IPartListener2; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPartReference; import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle */ public class EgfWorkbenchActivator extends AbstractUIActivator { /** * Property used by actions when, checked state changes. */ private static final String PROPERTY_CHECKED = "checked"; //$NON-NLS-1$ /** * The shared instance. */ private static EgfWorkbenchActivator __plugin; /** * Maintain registration state regarding the Package Explorer WorkingSetModel. */ private volatile boolean _isAlreadyResgisteredAsPackageExplorerWorkingSetModelListener; /** * Maintain registration state regarding the Package Explorer menu manager. */ private volatile boolean _isAlreadyResgisteredAsMenuManagerListener; /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context) throws Exception { super.start(context); __plugin = this; // Force to load EGF Core UI plug-in EgfUiActivator.getDefault(); } /** * Register a part listener to monitor Package Explorer life cycle. */ public void registerPackageExplorerPartListener() { // Register a part listener to monitor PackageExplorer view events. IWorkbenchPage activeWorkbenchPage = WorkbenchHelper.getActiveWorkbenchPage(); activeWorkbenchPage.addPartListener(new IPartListener2() { /** * @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui.IWorkbenchPartReference) */ @SuppressWarnings("synthetic-access") public void partClosed(IWorkbenchPartReference partRef_p) { if (JavaUI.ID_PACKAGES.equals(partRef_p.getId())) { // Unregister the FactoryComponentWorkingSetManager as listener of the Package Explorer working set model. unregisterPackageExplorerListeners((PackageExplorerPart) partRef_p.getPart(false)); } } /** * @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui.IWorkbenchPartReference) */ public void partActivated(IWorkbenchPartReference partRef_p) { if (JavaUI.ID_PACKAGES.equals(partRef_p.getId())) { // Register the FactoryComponentWorkingSetManager as listener of the Package Explorer working set model. registerPackageExplorerListeners((PackageExplorerPart) partRef_p.getPart(false)); } } /** * @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui.IWorkbenchPartReference) */ public void partInputChanged(IWorkbenchPartReference partRef_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui.IWorkbenchPartReference) */ public void partBroughtToTop(IWorkbenchPartReference partRef_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui.IWorkbenchPartReference) */ public void partDeactivated(IWorkbenchPartReference partRef_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference) */ public void partOpened(IWorkbenchPartReference partRef_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui.IWorkbenchPartReference) */ public void partHidden(IWorkbenchPartReference partRef_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui.IWorkbenchPartReference) */ public void partVisible(IWorkbenchPartReference partRef_p) { // Do nothing. } }); } /** * Register listener on Package Explorer. */ public void registerPackageExplorerListeners(PackageExplorerPart packageExplorerView_p) { PackageExplorerPart packageExplorerView = (null == packageExplorerView_p) ? WorkbenchHelper.getPackageExplorerView() : packageExplorerView_p; // Precondition. if (null == packageExplorerView) { return; } // Register a listener on "Top Level Elements" Package Explorer menu. registerPackageExplorerMenuManagerListener(packageExplorerView); // Register a listener on Package Explorer WorkingSetModel registerPackageExplorerWorkingSetModelListener(packageExplorerView.getWorkingSetModel()); } /** * Register a listener on Package Explorer WorkingSetModel to be notified when the end-user modifies the working sets. * @param workingSetModel_p */ private void registerPackageExplorerWorkingSetModelListener(WorkingSetModel workingSetModel_p) { // Precondition if (_isAlreadyResgisteredAsPackageExplorerWorkingSetModelListener) { return; } WorkingSetModel workingSetModel = workingSetModel_p; // Get it from the view because it is not provided by the caller. if (null == workingSetModel) { workingSetModel = WorkbenchHelper.getPackageExplorerView().getWorkingSetModel(); } // Register listener on working set model if not already done. if (null != workingSetModel) { _isAlreadyResgisteredAsPackageExplorerWorkingSetModelListener = true; FactoryComponentWorkingSetManager workingSetsManager = (FactoryComponentWorkingSetManager) EgfUiActivator.getDefault().getWorkingSetsInput(); workingSetModel_p.addPropertyChangeListener(workingSetsManager); // Force an event to refresh the FactoryComponentWorkingSetManager. workingSetsManager.propertyChange(new PropertyChangeEvent(this, WorkingSetModel.CHANGE_WORKING_SET_MODEL_CONTENT, null, null)); } } /** * Register a listener on Package Explorer menu manager to be notified when the end-user switches between project mode or working set mode. * @param packageExplorerView_p */ private void registerPackageExplorerMenuManagerListener(final PackageExplorerPart packageExplorerView_p) { // Preconditions. if (null == packageExplorerView_p || _isAlreadyResgisteredAsMenuManagerListener) { return; } IMenuManager menuManager = packageExplorerView_p.getViewSite().getActionBars().getMenuManager(); IContributionItem[] items = menuManager.getItems(); for (IContributionItem contributionItem : items) { if (contributionItem instanceof MenuManager) { MenuManager currentMenuManager = (MenuManager) contributionItem; // MenuManager does not have an id, what a pity ! if (WorkingSetMessages.ViewActionGroup_show_label.equals(currentMenuManager.getMenuText())) { // The menu where both actions to switch between working sets & projects is found. IContributionItem[] actions = currentMenuManager.getItems(); for (int i = 0; i < actions.length; i++) { if (actions[i] instanceof ActionContributionItem) { IAction uiAction = ((ActionContributionItem) actions[i]).getAction(); String uiActionLabel = uiAction.getText(); // Action does not have an id, what a pity ! if ((WorkingSetMessages.ViewActionGroup_projects_label.equals(uiActionLabel)) || (WorkingSetMessages.ViewActionGroup_workingSets_label.equals(uiAction.getText()))) { uiAction.addPropertyChangeListener(new IPropertyChangeListener() { /** * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ @SuppressWarnings("synthetic-access") public void propertyChange(PropertyChangeEvent event_p) { String property = event_p.getProperty(); Object newValue = event_p.getNewValue(); if (PROPERTY_CHECKED.equals(property)) { // Handle the action that is now checked. if (((Boolean) newValue).booleanValue()) { // Get the FactoryComponent Explorer if open, and ask it to update its input. IViewPart fcExplorerView = WorkbenchHelper.getActiveWorkbenchPage().findView(FactoryComponentProjectExplorer.VIEW_ID); if (null != fcExplorerView) { IAction currentAction = (IAction) event_p.getSource(); String currentActionLabel = currentAction.getText(); // The property dialog that tells the new mode is not already set, hence use the action name to compute the flag mode : projects or // working sets. boolean isProjectSelected = (WorkingSetMessages.ViewActionGroup_projects_label.equals(currentActionLabel)) ? true : false; // Update the factory component explorer. ((FactoryComponentProjectExplorer) fcExplorerView).updateInput(isProjectSelected); if (!isProjectSelected) { // Run this code in the UI Thread, to let a chance to the Package Explorer to be updated with working sets before accessing its // working set model. fcExplorerView.getSite().getShell().getDisplay().asyncExec(new Runnable() { /** * @see java.lang.Runnable#run() */ public void run() { registerPackageExplorerWorkingSetModelListener(packageExplorerView_p.getWorkingSetModel()); } }); } } } } } }); // Set the flag to avoid multiple registration. _isAlreadyResgisteredAsMenuManagerListener = true; } } } break; } } } } /** * Unregister some listeners from the Package Explorers.
* @param packageExplorerView_p */ private void unregisterPackageExplorerListeners(PackageExplorerPart packageExplorerView_p) { WorkingSetModel workingSetModel = packageExplorerView_p.getWorkingSetModel(); if (null != workingSetModel) { workingSetModel.removePropertyChangeListener((IPropertyChangeListener) EgfUiActivator.getDefault().getWorkingSetsInput()); } // Set the flags to false. _isAlreadyResgisteredAsPackageExplorerWorkingSetModelListener = false; _isAlreadyResgisteredAsMenuManagerListener = false; } /** * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ @Override public void stop(BundleContext context) throws Exception { __plugin = null; super.stop(context); } /** * Returns the shared instance * @return the shared instance */ public static EgfWorkbenchActivator getDefault() { return __plugin; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/IImageKeys.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2458 Text-content-md5: 162cad27f55a02ba6bf87584dec4deae Text-content-sha1: fb090c0fc368dfd835c2c911133cb4ff6601e6ad Content-length: 2503 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench; /** * Defines common images constants. * @author fournier */ public interface IImageKeys { /** * New image id. */ public final static String IMG_NEW = "obj16/new.gif"; //$NON-NLS-1$ /** * Edit image id. */ public final static String IMG_EDIT = "obj16/edit.gif"; //$NON-NLS-1$ /** * Execute image id. */ public final static String IMG_EXECUTE = "obj16/execute_factory.gif"; //$NON-NLS-1$ /** * Validate image id. */ public final static String IMG_VALIDATE = "obj16/validate.gif"; //$NON-NLS-1$ /** * New pattern model id. */ public final static String IMG_NEW_PATTERN_MODEL = "obj16/new_pattern_model.gif"; //$NON-NLS-1$ /** * New pattern library id. */ public final static String IMG_NEW_PATTERN_LIBRARY = "obj16/new_pattern_library.gif"; //$NON-NLS-1$ /** * New domain id. */ public final static String IMG_NEW_DOMAIN = "obj16/new_domain.gif"; //$NON-NLS-1$ /** * New factory component invocation id. */ public final static String IMG_NEW_FACTORY_COMPONENT_INVOCATION = "obj16/new_asset_configuration.gif"; //$NON-NLS-1$ /** * New context id. */ public final static String IMG_NEW_CONTEXT = "obj16/new_context.gif"; //$NON-NLS-1$ /** * New context element id. */ public final static String IMG_NEW_CONTEXT_ELEMENT = "obj16/new_context_element.gif"; //$NON-NLS-1$ /** * New contract element id. */ public final static String IMG_NEW_CONTRACT_ELEMENT = "obj16/new_contract_element.gif"; //$NON-NLS-1$ /** * New task factory id. */ public final static String IMG_NEW_TASK_FACTORY = "obj16/new_task_factory.gif"; //$NON-NLS-1$ /** * New mapping model id. */ public final static String IMG_NEW_MAPPING = "obj16/new_mapping_model.gif"; //$NON-NLS-1$ } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/Messages.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4908 Text-content-md5: b156a1c388ae86a020f7c1f76596a0ff Text-content-sha1: 3c15b6583218bfb2d67559f46479dd6bd60b3e3b Content-length: 4953 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench; import org.eclipse.osgi.util.NLS; /** * I18n translation helper. * @author fournier */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.egf.core.ui.workbench.messages"; //$NON-NLS-1$ public static String ExplorerActionProvider_NewMenuItem_Title; // I18n messages related to open model element objects. public static String OpenModelElementAction_Title; // I18n messages related to edit model element objects. public static String CreateDomainAction_Title; public static String CreateDomainAction_Tooltip; public static String CreateFactoryComponentInvocationAction_Title; public static String CreateFactoryComponentInvocationAction_Tooltip; public static String CreateTaskFactoryHolderAction_Title; public static String CreateTaskFactoryHolderAction_Tooltip; public static String CreateContractElementAction_Title; public static String CreateContractElementAction_Tooltip; public static String CreateContextAction_Title; public static String CreateContextAction_Tooltip; public static String CreateContextElementAction_Title; public static String CreateContextElementAction_Tooltip; public static String CreatePatternLibraryAction_Title; public static String CreatePatternLibraryAction_Tooltip; public static String CreatePatternAction_Title; public static String CreatePatternAction_Tooltip; public static String CreateMappingAction_Title; public static String CreateMappingAction_Tooltip; // I18n messages related to edit model element objects. public static String EditModelElementAction_Title; public static String EditModelElementAction_Tooltip; // I18n messages related to delete model element objects. public static String DeleteAction_Title; public static String DeleteAction_Tooltip; public static String DeleteDomainAction_Message; public static String DeleteFactoryComponentInvocationAction_Message; public static String DeleteTaskFactoryHolderAction_Message; public static String DeleteContractElementAction_Message; public static String DeleteContextAction_Message; public static String DeleteContextElementAction_Message; public static String DeletePatternLibraryAction_Message; public static String CleanPatternLibraryActionConfirmDialog_Message; public static String DeletePatternAction_Message; public static String CleanPatternAction_Title; public static String CleanPatternAction_Tooltip; public static String CleanPatternActionConfirmDialog_Title; public static String CleanPatternActionConfirmDialog_Message; public static String DeleteMappingAction_Message; // I18n messages related to execute (build) a factory component. public static String ExecuteFactoryAction_Title; public static String ExecuteFactoryAction_Tooltip; public static String ExecuteFactoryAction_ValidationErrorDialog_Title; // I18n messages related to produce (build) a pattern element either a pattern model or a pattern library. public static String ProducePatternElementAction_Title; public static String ProducePatternElementAction_Tooltip; // I18n messages related to convert a plug-in in factory component public static String ConvertPlugin2FactoryComponent_Title; public static String ConvertPlugin2FactoryComponent_ErrorDialog_Message; // I18n messages related to validation public static String ValidateElementAction_Title; public static String ValidateElementAction_ValidationReportDialog_Title_Info; public static String ValidateElementAction_ValidationReportDialog_Title_Problem; public static String ValidateElementAction_Tooltip; public static String ValidateElementAction_ValidationReportDialog_Title; public static String ValidateElementAction_NoError_Message; public static String ValidateElementAction_Error_Overall_Message; public static String ValidateElementAction_Error_Detailed_Message; // I18n messages related to factory components views public static String FactoryComponentView_PatternFilterText_Title; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } /** * Constructor. */ private Messages() { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/ConvertPlugin2FactoryComponentHandler.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6299 Text-content-md5: dd324e8b86270d8e764afff45dcdf627 Text-content-sha1: aaa8f8e436759a9d3457692a7f54c9784298c667 Content-length: 6344 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.egf.common.progress.IProgressRunnable; import org.eclipse.egf.common.progress.ProgressReporter; import org.eclipse.egf.core.ui.actions.AbstractUiHandler; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.pde.EgfPdeActivator; /** * Convert a Java project in a Factory Component.
* This is the handler executed by the UI action. * @author Guillaume Brocard */ public class ConvertPlugin2FactoryComponentHandler extends AbstractUiHandler { /** * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ public Object execute(ExecutionEvent executionEvent_p) throws ExecutionException { Object result = null; // First, this method is called only when core.expressions.definition properties are valid. // Get the current selection. List selection = getSelection(executionEvent_p, IJavaProject.class); if (selection.isEmpty()) { return result; } // Loop over the selection to convert all selected plug-in project. for (IJavaProject selectedJavaProject : selection) { IProject project = selectedJavaProject.getProject(); // Get its name. final String projectName = project.getName(); // Get its related plug-in id. IPluginModelBase pluginModelBase = EgfPdeActivator.getDefault().getPluginModelBase(project); String dialogTitle = MessageFormat.format(Messages.ConvertPlugin2FactoryComponent_Title, new Object[] { projectName }); boolean convertToFC = true; if (pluginModelBase == null) { // Case the selected project is a simple java project. // First, convert this project in a plug-in with PDE convert method. convertToFC = EgfPdeActivator.getDefault().convertToPlugin(projectName); } else { // Case the selected project is a plug-in project. String pluginId = pluginModelBase.getPluginBase().getId(); // Check plug-in id and project name are equals. if (projectName.equals(pluginId) == false) { String dialogMessage = MessageFormat.format(Messages.ConvertPlugin2FactoryComponent_ErrorDialog_Message, new Object[] { projectName, pluginId }); MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), dialogTitle, dialogMessage); convertToFC = false; } } // Go for FC style ! if (convertToFC) { IProgressRunnable convertToFcRunnable = new IProgressRunnable() { public String getReportingTitle() { return MessageFormat.format(Messages.ConvertPlugin2FactoryComponent_Title, new Object[] { projectName }); } public boolean run(IProgressMonitor progressMonitor_p) { EgfPdeActivator.getDefault().convertToFactoryComponent(projectName); return true; } }; ProgressReporter.asyncExec(convertToFcRunnable); } } return result; } /** * @see org.eclipse.core.commands.AbstractHandler#isEnabled() */ @Override public boolean isEnabled() { boolean result = true; ISelection selection = getSelection(); if (selection != null) { List projects = getProjects(selection); if (projects.isEmpty() == false) { Iterator iter = projects.iterator(); while (iter.hasNext() && result) { result &= canConvert(iter.next()); } } else { result = false; } } return result; } /** * Check if given project can be converted into a Factory Component. * @param project_p * @return */ private boolean canConvert(IProject project_p) { // TODO: need to check if current project holds nature and builders return EgfPdeActivator.getDefault().getFactoryComponent(project_p) == null; } /** * Get the current selection. * @return can be null if no selection. */ private ISelection getSelection() { ISelection currentSelection = null; IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (activeWorkbenchWindow != null) { currentSelection = activeWorkbenchWindow.getSelectionService().getSelection(); } return currentSelection; } /** * Get a project from the selection. * @param selection_p * @return an empty list if given selection does not contain any project. */ @SuppressWarnings("unchecked") private List getProjects(ISelection selection_p) { List projects = new ArrayList(0); if (selection_p == null) { return projects; } IStructuredSelection selection = (IStructuredSelection) selection_p; Iterator selectedElements = selection.iterator(); while (selectedElements.hasNext()) { Object selectedElement = selectedElements.next(); if (selectedElement instanceof IJavaProject) { projects.add(((IJavaProject) selectedElement).getProject()); } } return projects; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditContextElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1971 Text-content-md5: 60b5ce7d9e9939515576cffb990d461e Text-content-sha1: f503c6ec1e7104a7c70f585f0cff84ca22c97640 Content-length: 2016 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.ContextElementWizard; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit an {@link ContextElement} model element. * @author fournier */ public class EditContextElementAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditContextElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.edit.EditModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new ContextElementWizard(modelElement_p.eContainer(), modelElement_p, isReadOnly()); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return ContextElement.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditContractElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1978 Text-content-md5: 3e4f35f85604aec238bd36bfa12665c4 Text-content-sha1: 379d2c261e52eaac342da835a5bf77bbd81c87a1 Content-length: 2023 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.ContractElementWizard; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit an {@link ContractElement} model element. * @author fournier */ public class EditContractElementAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditContractElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return ContractElement.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.edit.EditModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new ContractElementWizard(modelElement_p.eContainer(), modelElement_p, isReadOnly()); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditDomainAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2378 Text-content-md5: 3a6211ed8ab2c52b254205d1fd173ced Text-content-sha1: 50ef6a37b8384c83879aa6083593fcfaeaf044e0 Content-length: 2423 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.EditDomainWizard; import org.eclipse.egf.model.Domain; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit the domain model element. * @author fournier */ public class EditDomainAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditDomainAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.edit.EditModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new EditDomainWizard(modelElement_p.eContainer(), modelElement_p, isReadOnly()); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Domain.class; } /** * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { // Default enablement. boolean isEnabled = super.isEnabled(); if (isEnabled) { Domain domain = (Domain) getModelElement(); // If the domain is defined, allow this action. isEnabled = ModelHelper.isDomainDefined(domain); } return isEnabled; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2101 Text-content-md5: 0720eecb970b3c75bec384436a07a4d9 Text-content-sha1: c1f25242db90b998549fdda1a7155420b38c58ee Content-length: 2146 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.EditFactoryComponentWizard; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit the Factory Component model element. * @author fournier */ public class EditFactoryComponentAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditFactoryComponentAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return FactoryComponent.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.edit.EditModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { // A factory component does not have any parent. // In that particular case, parent is the factory component itself. return new EditFactoryComponentWizard(modelElement_p, modelElement_p, isReadOnly()); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditFactoryComponentInvocationAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2050 Text-content-md5: 439d914b6b6f367d7cff3a5a4e70184e Text-content-sha1: f02b0eaccfa0547604ec64e4f284e03e6a1feb13 Content-length: 2095 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.FactoryComponentInvocationWizard; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit the {@link FactoryComponentInvocation} model element. * @author fournier */ public class EditFactoryComponentInvocationAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditFactoryComponentInvocationAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return FactoryComponentInvocation.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.edit.EditModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new FactoryComponentInvocationWizard(modelElement_p.eContainer(), modelElement_p, isReadOnly()); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditMappingAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1963 Text-content-md5: 4263c8dba79fdcda579c8c51ca686cc1 Text-content-sha1: df266c238f80828f115a64b1926541633141622e Content-length: 2008 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.MappingWizard; import org.eclipse.egf.model.MappingModel; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit the mapping model element. * @author Guillaume Brocard */ public class EditMappingAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditMappingAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId selectedModelElement_p) { return new MappingWizard(selectedModelElement_p.eContainer(), selectedModelElement_p, isReadOnly()); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return MappingModel.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditModelElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2067 Text-content-md5: d876327524f80502b44b442b7bc923ef Text-content-sha1: 2c7b21d90498f062efea7432fbc994c9135fb5e6 Content-length: 2112 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Base class to implement an action to open a wizard that edits a {@link NamedModelElementWithId} object. * @author fournier */ public abstract class EditModelElementAction extends AbstractModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditModelElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.EditModelElementAction_Title); setToolTipText(Messages.EditModelElementAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_EDIT)); } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { NamedModelElementWithId modelElement = getModelElement(); Wizard wizard = getWizardFor(modelElement); openWizardDialog(wizard); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditPatternLibraryAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2832 Text-content-md5: ae323de8e8cc7219a69935dcc8a1fe26 Text-content-sha1: 38fbb6257e9f653a2f66803eb09c3339f0f4a2b7 Content-length: 2877 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.PatternLibraryWizard; import org.eclipse.egf.core.ui.wizard.RootPatternLibraryWizard; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternViewpoint; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit the {@link PatternLibrary} model element. * @author Guillaume Brocard */ public class EditPatternLibraryAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditPatternLibraryAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { Wizard result = null; // Get the right wizard depending on the model element used as parent. EObject parent = modelElement_p.eContainer(); // If the parent is the pattern viewpoint, given library is a 'root' pattern library. // A 'root' pattern library is a library which has a pattern viewpoint as parent. if (parent instanceof PatternViewpoint) { // Open the appropriate wizard when parent is a pattern viewpoint. result = new RootPatternLibraryWizard(parent, modelElement_p, isReadOnly(), false); } else if (parent instanceof PatternLibrary) { // Open the appropriate wizard when parent is also a pattern library. result = new PatternLibraryWizard(parent, modelElement_p, isReadOnly(), false); } return result; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternLibrary.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/edit/EditTaskFactoryHolderAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1993 Text-content-md5: a0e01222a88571b4d8aff62d9ec90c5e Text-content-sha1: 584625ed02f301d6848ffbefbe4c689324439367 Content-length: 2038 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.edit; import org.eclipse.egf.core.ui.wizard.TaskFactoryHolderWizard; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.TaskFactoryHolder; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to edit the {@link TaskFactoryHolder} model element. * @author fournier */ public class EditTaskFactoryHolderAction extends EditModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public EditTaskFactoryHolderAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return TaskFactoryHolder.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.edit.EditModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new TaskFactoryHolderWizard(modelElement_p.eContainer(), modelElement_p, isReadOnly()); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/AbstractCleanPatternElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4106 Text-content-md5: 6965e69879538953415d8c53956baebc Text-content-sha1: 3b50fbf6cd8d6a2bd729894f716b035add2678ab Content-length: 4151 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.pattern.ecore.PatternHandler; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Base class to implement a clean action for an {@link AbstractPatternElement}. * @author Guillaume Brocard */ public abstract class AbstractCleanPatternElementAction extends AbstractModelElementAction { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(AbstractCleanPatternElementAction.class.getPackage().getName()); /** * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public AbstractCleanPatternElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setId("org.eclipse.egf.core.ui.workbench.action.explorer.clean"); //$NON-NLS-1$ setText(Messages.CleanPatternAction_Title); setToolTipText(Messages.CleanPatternAction_Tooltip); } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { // If a user confirmation is requested, pop-up a dialog. boolean cleanConfirmed = MessageDialog.openQuestion(getShell(), Messages.CleanPatternActionConfirmDialog_Title, getConfirmationMessage()); // Clean selected pattern if confirmation is ok or not requested. if (cleanConfirmed) { doCleanPatternElement(); } } protected abstract String getConfirmationMessage(); /** * Do the clean operation. */ protected abstract void doCleanPatternElement(); /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId selectedModelElement_p) { // Do nothing. return null; } /** * Clean generated structures for given pattern. * @param pattern_p * @param monitor_p if null the clean operation is run asynchronously. */ protected void clean(final PatternModel pattern_p, IProgressMonitor monitor_p) { // Precondition. if (null == pattern_p) { return; } PatternHandler patternHandler = getPatternHandler(pattern_p); patternHandler.cleanGeneratedStructures(); // Acknowledge one work unit is consumed. monitor_p.worked(1); } /** * Return the pattern handler for given pattern. * @return the patternHandler */ protected PatternHandler getPatternHandler(PatternModel pattern_p) { PatternHandler patternHandler = new PatternHandler(); try { patternHandler.load(pattern_p.getPath()); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("AbstractCleanPatternElementAction.getPatternHandler(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } return patternHandler; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3218 Text-content-md5: 81736d450e28a116e8b164fdbdfb6ebb Text-content-sha1: b7019c04498f3d70a51e54f0193dc48502fc8ad4 Content-length: 3263 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.SubMonitor; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.progress.IProgressRunnable; import org.eclipse.egf.common.progress.ProgressReporter; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.PatternModel; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Clean the generated structures for selected pattern. * @author Guillaume Brocard */ public class CleanPatternAction extends AbstractCleanPatternElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CleanPatternAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.AbstractCleanPatternElementAction#doCleanPatternElement() */ @Override protected void doCleanPatternElement() { // Get library. final PatternModel pattern = (PatternModel) getModelElement(); // Execute clean asynchronously. ProgressReporter.asyncExec(new IProgressRunnable() { public String getReportingTitle() { return Messages.CleanPatternAction_Title + ICommonConstants.WHITE_SPACE_CHARACTER + pattern.getName(); } /** * @see org.eclipse.egf.common.progress.IProgressRunnable#run(org.eclipse.core.runtime.IProgressMonitor) */ public boolean run(IProgressMonitor progressMonitor_p) { // Convert given progress monitor. SubMonitor monitor = SubMonitor.convert(progressMonitor_p, 1); try { // Set the remaining work. monitor.setWorkRemaining(1); clean(pattern, monitor); } finally { // Ensure progress bar displays feedback till 100%. monitor.setWorkRemaining(0); } return true; } }); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.AbstractCleanPatternElementAction#getConfirmationMessage() */ @Override protected String getConfirmationMessage() { return Messages.CleanPatternActionConfirmDialog_Message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternModel.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/CleanPatternLibraryAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5725 Text-content-md5: 6f961617950349276a189b77847b2779 Text-content-sha1: 8be6687fad75934796cd9589738422952e89e8c4 Content-length: 5770 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer; import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.SubMonitor; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.progress.IProgressRunnable; import org.eclipse.egf.common.progress.ProgressReporter; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternModel; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Clean the generated structures for contained patterns in selected pattern library. * @author Guillaume Brocard */ public class CleanPatternLibraryAction extends AbstractCleanPatternElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CleanPatternLibraryAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.AbstractCleanPatternElementAction#getConfirmationMessage() */ @Override protected String getConfirmationMessage() { return Messages.CleanPatternLibraryActionConfirmDialog_Message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternLibrary.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.AbstractCleanPatternElementAction#doCleanPatternElement() */ @Override protected void doCleanPatternElement() { // Get library. final PatternLibrary library = (PatternLibrary) getModelElement(); // Execute clean asynchronously. ProgressReporter.asyncExec(new IProgressRunnable() { public String getReportingTitle() { return Messages.CleanPatternAction_Title + ICommonConstants.WHITE_SPACE_CHARACTER + library.getName(); } @SuppressWarnings("synthetic-access") public boolean run(IProgressMonitor progressMonitor_p) { // Get the pattern element count to deal with. int work = library.getPatternElements().size(); // Convert given progress monitor. SubMonitor monitor = SubMonitor.convert(progressMonitor_p, work); // Set the remaining work. monitor.setWorkRemaining(work); try { clean(library, monitor); } finally { // Ensure progress bar displays feedback till 100%. monitor.setWorkRemaining(0); } return true; } }); } /** * Clean all patterns generated structures for given library. * @param library_p * @param monitor_p a progress monitor. If null, clean is done asynchronously. If not, clean uses given monitor to report execution in calling thread. */ private void clean(PatternLibrary library_p, SubMonitor monitor_p) { // Set the current library name as current task. String taskName = Messages.CleanPatternAction_Title + ICommonConstants.WHITE_SPACE_CHARACTER + library_p.getName(); monitor_p.setTaskName(taskName); // Clone the list to prevent from concurrent modifications. List patternElementList = library_p.getPatternElements(); // Iterate over contained patterns and sub libraries to clean up. Iterator patternElements = patternElementList.iterator(); while (patternElements.hasNext()) { AbstractPatternElement currentPatternElement = patternElements.next(); // If current pattern element is a pattern library recurse on it. if (currentPatternElement instanceof PatternLibrary) { PatternLibrary library = (PatternLibrary) currentPatternElement; // Create a new sub monitor for library content that represents one work unit of the parent. SubMonitor subMonitor = monitor_p.newChild(1); // Set the work remaining to deal with the library content. int work = library.getPatternElements().size(); subMonitor.setWorkRemaining(work); // Recurse on current library. try { clean(library, subMonitor); } finally { // Ensure cleaning the current sub library reports progress successfully. subMonitor.setWorkRemaining(0); // Reset task name to parent one's name. monitor_p.setTaskName(taskName); } } // If current pattern element is a pattern, clean it. else if (currentPatternElement instanceof PatternModel) { // Set the current pattern name as sub task. monitor_p.subTask(Messages.CleanPatternAction_Title + ICommonConstants.WHITE_SPACE_CHARACTER + currentPatternElement.getName()); clean((PatternModel) currentPatternElement, monitor_p); } } } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/ExplorerActionProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 13348 Text-content-md5: 28bb8d7e953e7821c13cc57b0c1609c2 Text-content-sha1: 9aa6f547c446dd0016cd44068b9a3daa6f4b5cf4 Content-length: 13393 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer; import java.util.List; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.workbench.action.edit.EditContextElementAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditContractElementAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditDomainAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditFactoryComponentAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditFactoryComponentInvocationAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditMappingAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditPatternLibraryAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditTaskFactoryHolderAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateContextAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateContextElementAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateContractElementAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateDomainAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateFactoryComponentInvocationAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateMappingAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreatePatternAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreatePatternLibraryAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateRootPatternLibraryAction; import org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateTaskFactoryHolderAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteContextAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteContextElementAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteContractElementAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteDomainAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteFactoryComponentInvocationAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteMappingAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeletePatternAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeletePatternLibraryAction; import org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteTaskFactoryHolderAction; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractActionProvider; import org.eclipse.egf.core.ui.workbench.action.navigator.ValidateElementAction; import org.eclipse.egf.core.ui.workbench.action.open.OpenDomainAction; import org.eclipse.egf.core.ui.workbench.action.open.OpenMappingAction; import org.eclipse.egf.core.ui.workbench.action.open.OpenPatternAction; import org.eclipse.egf.core.ui.workbench.views.fc.AbstractFactoryComponentView; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.ui.action.RedoAction; import org.eclipse.emf.edit.ui.action.UndoAction; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IActionBars; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ActionFactory; /** * Provides action for context menu for FactoryComponent Project Explorer view. * @see AbstractFactoryComponentView * @author fournier */ public class ExplorerActionProvider extends AbstractActionProvider { /** * Group that hosts the undo & redo actions. */ private static final String GROUP_UNDO_REDO = "group.undoredo"; //$NON-NLS-1$ /** * Undo global action handler. */ private UndoAction _undoAction; /** * Redo global action handler. */ private RedoAction _redoAction; /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractActionProvider#initActions(org.eclipse.swt.widgets.Shell, * org.eclipse.ui.IWorkbenchPage, org.eclipse.jface.viewers.ISelectionProvider) */ @Override protected void initActions(Shell shell_p, IWorkbenchPage page_p, ISelectionProvider selectionProvider_p) { // Actions provided by this class are used to create or edit model element objects. // Hence, wizards opened by these actions are not in read only. initUndoRedoActions(); initCreationActions(shell_p, selectionProvider_p); initEditActions(shell_p, selectionProvider_p); initOpenActions(shell_p, selectionProvider_p); initDeleteActions(shell_p, selectionProvider_p); initAdditionActions(shell_p, selectionProvider_p); } private void initUndoRedoActions() { // Undo action. ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages(); AdapterFactoryEditingDomain editingDomain = EgfUiActivator.getDefault().getEditingDomain(); _undoAction = new UndoAction(editingDomain); _undoAction.setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)); _undoAction.setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO_DISABLED)); // Redo action. _redoAction = new RedoAction(editingDomain); _redoAction.setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO)); _redoAction.setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO_DISABLED)); } /** * Initialize the actions related to execute an 'open' operation. * @param shell_p * @param selectionProvider_p */ private void initOpenActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // Open group marker actions List openActions = getOpenActions(); // Action to open a domain editor. openActions.add(new OpenDomainAction(shell_p, selectionProvider_p, false)); // Action to open a pattern editor. openActions.add(new OpenPatternAction(shell_p, selectionProvider_p, false)); // Action to open a mapping editor. openActions.add(new OpenMappingAction(shell_p, selectionProvider_p, false)); // Action to produce a pattern element. openActions.add(new ProducePatternElementAction(shell_p, selectionProvider_p, false)); } /** * Initialize the actions related to execute an 'delete' operation. * @param shell_p * @param selectionProvider_p */ private void initDeleteActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // Delete group marker actions List deleteActions = getDeleteActions(); // Delete actions related to a domain. deleteActions.add(new DeleteDomainAction(shell_p, selectionProvider_p, false)); // Delete actions related to a factory component invocation. deleteActions.add(new DeleteFactoryComponentInvocationAction(shell_p, selectionProvider_p, false)); // Delete actions related to a task factory. deleteActions.add(new DeleteTaskFactoryHolderAction(shell_p, selectionProvider_p, false)); // Delete actions related to a contract element. deleteActions.add(new DeleteContractElementAction(shell_p, selectionProvider_p, false)); // Delete actions related to a context. deleteActions.add(new DeleteContextAction(shell_p, selectionProvider_p, false)); deleteActions.add(new DeleteContextElementAction(shell_p, selectionProvider_p, false)); // Delete actions related to a pattern library. deleteActions.add(new DeletePatternLibraryAction(shell_p, selectionProvider_p, false)); deleteActions.add(new DeletePatternAction(shell_p, selectionProvider_p, false)); // Delete actions related to a mapping model. deleteActions.add(new DeleteMappingAction(shell_p, selectionProvider_p, false)); } /** * Initialize the actions related to execute an 'edit' operation. * @param shell_p * @param selectionProvider_p */ private void initEditActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // Edit group marker actions List editActions = getEditActions(); // Edit actions related to a factory component. editActions.add(new EditFactoryComponentAction(shell_p, selectionProvider_p, false)); // Edit actions related to a domain. editActions.add(new EditDomainAction(shell_p, selectionProvider_p, false)); // Edit actions related to a factory component invocation. editActions.add(new EditFactoryComponentInvocationAction(shell_p, selectionProvider_p, false)); editActions.add(new EditTaskFactoryHolderAction(shell_p, selectionProvider_p, false)); // Edit actions related to a contract element. editActions.add(new EditContractElementAction(shell_p, selectionProvider_p, false)); // Edit actions related to a context. editActions.add(new EditContextElementAction(shell_p, selectionProvider_p, false)); // Edit actions related to a pattern library. editActions.add(new EditPatternLibraryAction(shell_p, selectionProvider_p, false)); // Edit actions related to a mapping model. editActions.add(new EditMappingAction(shell_p, selectionProvider_p, false)); } /** * Initialize the actions related to execute a 'creation' operation. * @param shell_p * @param selectionProvider_p */ private void initAdditionActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // Addition group marker actions List additionActions = getAdditionActions(); // Clean actions related to a pattern library. additionActions.add(new CleanPatternLibraryAction(shell_p, selectionProvider_p, false)); additionActions.add(new CleanPatternAction(shell_p, selectionProvider_p, false)); // Validate action. additionActions.add(new ValidateElementAction(shell_p, selectionProvider_p, false)); } /** * Initialize the actions related to execute a 'creation' operation. * @param shell_p * @param selectionProvider_p */ private void initCreationActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // New group marker actions List newActions = getNewActions(); // Creation actions related to a domain. newActions.add(new CreateDomainAction(shell_p, selectionProvider_p, false)); // Creation actions related to an factory component invocation. newActions.add(new CreateFactoryComponentInvocationAction(shell_p, selectionProvider_p, false)); newActions.add(new CreateTaskFactoryHolderAction(shell_p, selectionProvider_p, false)); // Creation actions related to a contract element. newActions.add(new CreateContractElementAction(shell_p, selectionProvider_p, false)); // Creation actions related to a context. newActions.add(new CreateContextAction(shell_p, selectionProvider_p, false)); newActions.add(new CreateContextElementAction(shell_p, selectionProvider_p, false)); // Creation actions related to a pattern library. newActions.add(new CreateRootPatternLibraryAction(shell_p, selectionProvider_p, false)); newActions.add(new CreatePatternLibraryAction(shell_p, selectionProvider_p, false)); // Creation actions related to a pattern. newActions.add(new CreatePatternAction(shell_p, selectionProvider_p, false)); // Creation actions related to a mapping. newActions.add(new CreateMappingAction(shell_p, selectionProvider_p, false)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractActionProvider#fillContextMenu(org.eclipse.jface.action.IMenuManager) */ @Override public void fillContextMenu(IMenuManager menu_p) { super.fillContextMenu(menu_p); // Add Undo & Redo actions. menu_p.appendToGroup(GROUP_UNDO_REDO, _undoAction); menu_p.appendToGroup(GROUP_UNDO_REDO, _redoAction); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractActionProvider#fillActionBars(org.eclipse.ui.IActionBars) */ @Override public void fillActionBars(IActionBars actionBars_p) { super.fillActionBars(actionBars_p); // Register undo as action handler. actionBars_p.setGlobalActionHandler(ActionFactory.UNDO.getId(), _undoAction); // Register redo as action handler. actionBars_p.setGlobalActionHandler(ActionFactory.REDO.getId(), _redoAction); } /** * @see org.eclipse.ui.actions.ActionGroup#updateActionBars() */ @Override public void updateActionBars() { _undoAction.update(); _redoAction.update(); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/ProducePatternElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2629 Text-content-md5: efcf10aa1be7efeca8363b5b095ab1e3 Text-content-sha1: 0d074a61a3da6ce09701ad86c84352faa1bd6448 Content-length: 2674 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action.explorer; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.pattern.PatternActivator; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Implement an action to produce the {@link AbstractPatternElement} selected element. * @author Guillaume Brocard */ public class ProducePatternElementAction extends AbstractModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public ProducePatternElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.ProducePatternElementAction_Title); setToolTipText(Messages.ProducePatternElementAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_EXECUTE)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId selectedModelElement_p) { // Do nothing. return null; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return AbstractPatternElement.class; } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { // Get the pattern element id. String patternElementId = getModelElement().getId(); // Produce the pattern element. PatternActivator.getDefault().producePatterns(patternElementId, true, null); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/AbstractCreatePatternLibraryAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1485 Text-content-md5: 95fc3faaea9536bba984f3280431d65b Text-content-sha1: 7d7138e6ae8b0daf1f261379123c6d9e99cce124 Content-length: 1530 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Base class to implement actions that create a pattern library. * @author Guillaume Brocard */ public abstract class AbstractCreatePatternLibraryAction extends CreateModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ protected AbstractCreatePatternLibraryAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_PATTERN_LIBRARY)); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4674 Text-content-md5: 8a87069e7454c492f76c43e7abd873e7 Text-content-sha1: c6a9b878d954f6c2c1de48b185c0aaab0d1a9a51 Content-length: 4719 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.ui.wizard.ContextElementWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.AbstractFactoryComponentFactory; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ModelFactory; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Create a model element {@link Context} as a child of its parent. * @author fournier */ public class CreateContextAction extends CreateModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateContextAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreateContextAction_Title); setToolTipText(Messages.CreateContextAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_CONTEXT)); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { // Do nothing, creation of a context is not performed through a Wizard. return null; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#isEnabled() */ @Override public boolean isEnabled() { // Default condition check. boolean isEnabled = super.isEnabled(); if (isEnabled) { AbstractFactoryComponentFactory fcFactory = (AbstractFactoryComponentFactory) getModelElement(); if (fcFactory instanceof FactoryComponentInvocation) { // Rule 1 : to create a context the referenced FC must be different from the BootStrap one. if (DataHelper.isBootstrapFactoryComponent(((FactoryComponentInvocation) fcFactory).getFactoryComponentId())) { isEnabled = false; } } if (isEnabled) { // If the selected factory component factory does not already have a context, enable the action; disable otherwise. Context context = fcFactory.getContext(); isEnabled = (null == context) ? true : false; } } return isEnabled; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#run() */ @Override public void run() { AdapterFactoryEditingDomain editingDomain = getEditingDomain(); // Get the model element used as parent : either a ProductionPlan or an FactoryComponentInvocation. NamedModelElementWithId parent = getModelElement(); // Create a new context element. Context context = ModelFactory.eINSTANCE.createContext(); // Create the add command. Command command = AddCommand.create(editingDomain, parent, ModelPackage.Literals.ABSTRACT_FACTORY_COMPONENT_FACTORY__CONTEXT, context); // Finally, execute the command. executeCommand(editingDomain, command); // Launch the context element creation wizard. openWizardDialog(new ContextElementWizard(context, null, isReadOnly())); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return AbstractFactoryComponentFactory.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContextElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2418 Text-content-md5: 0386990071382395e9c408e1f395e0b0 Text-content-sha1: f67e05a48720da1dad869208aa7719cc565aaa24 Content-length: 2463 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.wizard.ContextElementWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.Context; import org.eclipse.egf.model.ContextElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create an {@link ContextElement} model element. * @author fournier */ public class CreateContextElementAction extends CreateModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateContextElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreateContextElementAction_Title); setToolTipText(Messages.CreateContextElementAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_CONTEXT_ELEMENT)); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new ContextElementWizard(modelElement_p, null, isReadOnly()); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Context.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateContractElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2429 Text-content-md5: 18f62ac2b6aca0f6cc7a2c296adf7176 Text-content-sha1: 841e7d1cb3fe2a36b9919b4a58db4356f144472e Content-length: 2474 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.wizard.ContractElementWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.Contract; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create an {@link ContractElement} model element. * @author fournier */ public class CreateContractElementAction extends CreateModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateContractElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreateContractElementAction_Title); setToolTipText(Messages.CreateContractElementAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_CONTRACT_ELEMENT)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Contract.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new ContractElementWizard(modelElement_p, null, isReadOnly()); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateDomainAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3463 Text-content-md5: dbb5bb0b394188556dee1ce8a4868d21 Text-content-sha1: a0a30810f8c4a60fc942a539560f40584ceb7964 Content-length: 3508 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.wizard.NewDomainWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.open.OpenDomainAction; import org.eclipse.egf.model.Domain; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create an {@link Domain} path. * @author fournier */ public class CreateDomainAction extends CreateModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateDomainAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreateDomainAction_Title); setToolTipText(Messages.CreateDomainAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_DOMAIN)); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new NewDomainWizard(modelElement_p.eContainer(), modelElement_p, isReadOnly()); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#run() */ @Override public void run() { super.run(); Domain domain = (Domain) getModelElement(); if (ModelHelper.isDomainDefined(domain)) { // Open the editor on the created domain. OpenDomainAction openDomainAction = new OpenDomainAction(getShell(), getSelectionProvider(), isReadOnly()); // Set the current selection. openDomainAction.setSelectedElement(domain); // Execute the 'open' action. openDomainAction.run(); } } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Domain.class; } /** * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { // Default enablement. boolean isEnabled = super.isEnabled(); if (isEnabled) { Domain domain = (Domain) getModelElement(); // If the domain is not defined, allow this action. isEnabled = !ModelHelper.isDomainDefined(domain); } return isEnabled; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateFactoryComponentInvocationAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2541 Text-content-md5: ff8c739a64fb6a1c3cf484b1defa1092 Text-content-sha1: 0c5c8acfa5b4ad614a8af623b1cf7bfe1abb4b6e Content-length: 2586 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.wizard.FactoryComponentInvocationWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create an {@link FactoryComponentInvocation} model element. * @author fournier */ public class CreateFactoryComponentInvocationAction extends CreateModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateFactoryComponentInvocationAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreateFactoryComponentInvocationAction_Title); setToolTipText(Messages.CreateFactoryComponentInvocationAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_FACTORY_COMPONENT_INVOCATION)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return ProductionPlan.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new FactoryComponentInvocationWizard(modelElement_p, null, isReadOnly()); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateMappingAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4247 Text-content-md5: fa61d3fa2ab962bbb4a1c096d9fa8491 Text-content-sha1: 24f109422e198efb227a8d0b86497bb0030bdcb8 Content-length: 4292 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.wizard.MappingWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.open.OpenMappingAction; import org.eclipse.egf.model.MappingModel; import org.eclipse.egf.model.MappingViewpoint; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.emf.common.util.EList; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create a {@link MappingModel} model element. * @author Guillaume Brocard */ public class CreateMappingAction extends CreateModelElementAction { protected MappingModel _createdMappingModel; /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateMappingAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreateMappingAction_Title); setToolTipText(Messages.CreateMappingAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_MAPPING)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new MappingWizard(modelElement_p, null, isReadOnly()); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#run() */ @Override public void run() { _createdMappingModel = null; NamedModelElementWithId mappingViewpoint = getModelElement(); // Create a mapping model creation listener on the mapping viewpoint to detect the created object. AdapterImpl mappingCreationListener = new AdapterImpl() { /** * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) */ @Override public void notifyChanged(Notification msg_p) { if (msg_p.getEventType() == Notification.ADD) { _createdMappingModel = (MappingModel) msg_p.getNewValue(); } } }; EList mappingViewpointAdapters = mappingViewpoint.eAdapters(); // Add the mapping model creation listener. mappingViewpointAdapters.add(mappingCreationListener); // Execute the standard creation action. super.run(); // If a mapping was created, open it. if (null != _createdMappingModel) { OpenMappingAction openMappincAction = new OpenMappingAction(getShell(), getSelectionProvider(), isReadOnly()); // Set the current selection. openMappincAction.setSelectedElement(_createdMappingModel); // Execute the 'open' action. openMappincAction.run(); } // Remove the mapping model creation listener. mappingViewpointAdapters.remove(mappingCreationListener); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return MappingViewpoint.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateModelElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1768 Text-content-md5: e8eba1d2a2fc349f2840df0989a7acbc Text-content-sha1: 164411d0fe5b5d1d0e52e7f7be574f4d4630e06e Content-length: 1813 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Base class to implement an action to open a wizard that creates a {@link NamedModelElementWithId} object. * @author fournier */ public abstract class CreateModelElementAction extends AbstractModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ protected CreateModelElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW)); } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { NamedModelElementWithId modelElement = getModelElement(); Wizard wizard = getWizardFor(modelElement); openWizardDialog(wizard); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3804 Text-content-md5: f3d9f8cedb0c90ed38fca3d0d001fb33 Text-content-sha1: f54c35de6d4257c8cb2b50dce062db41c8c68e4d Content-length: 3849 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.core.ui.wizard.PatternWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.internal.util.ActionPatternEditorHelper; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.pattern.ui.editor.PatternEditor; import org.eclipse.egf.pattern.ui.editor.PatternEditorHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; /** * Open a wizard to create a {@link PatternModel} model element. * @author Guillaume Brocard */ public class CreatePatternAction extends CreateModelElementAction { /** * Wizard used to create a {@link PatternModel} element. */ private PatternWizard _patternWizard; /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreatePatternAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreatePatternAction_Title); setToolTipText(Messages.CreatePatternAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_PATTERN_MODEL)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { _patternWizard = new PatternWizard(modelElement_p, null, isReadOnly()); return _patternWizard; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternLibrary.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#run() */ @Override public void run() { // Open the pattern creation wizard. super.run(); // Open Pattern editor on created pattern. // Get the created pattern. PatternModel createdPattern = (PatternModel) _patternWizard.getModelElement(); // Created pattern can be null if the end-user canceled the creation operation. if (createdPattern != null) { // Create an editor input regarding the created pattern. IEditorInput editorInput = PatternEditorHelper.getEditorInput(createdPattern, isReadOnly() == false); // Open the editor for created pattern. IEditorPart patternEditor = WorkbenchHelper.openEditor(editorInput, PatternEditor.class.getName(), getShell()); if (patternEditor != null) { // Add the open editor in listener that monitors pattern editor closing event. ActionPatternEditorHelper.addPatternEditorToListener(patternEditor, createdPattern); } } } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreatePatternLibraryAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2209 Text-content-md5: 43675ea0f62dee6e5419de960bbbcec5 Text-content-sha1: b80d28e0090f314bdf629246a2cda5646d918247 Content-length: 2254 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.wizard.PatternLibraryWizard; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create a {@link PatternLibrary} model element as a child of another pattern library. * @author Guillaume Brocard */ public class CreatePatternLibraryAction extends AbstractCreatePatternLibraryAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreatePatternLibraryAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreatePatternLibraryAction_Title); setToolTipText(Messages.CreatePatternLibraryAction_Tooltip); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new PatternLibraryWizard(modelElement_p, null, isReadOnly(), true); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternLibrary.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateRootPatternLibraryAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2352 Text-content-md5: 0574ca9184aee3e3852af679f5706efb Text-content-sha1: 87ff2cb7a92c7644462be2bd8214f9302395d50b Content-length: 2397 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.ui.wizard.RootPatternLibraryWizard; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternViewpoint; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create a {@link PatternLibrary} model element as a 'root' pattern library.
* A 'root' pattern library is a library which has a pattern viewpoint as parent. * @author Guillaume Brocard */ public class CreateRootPatternLibraryAction extends AbstractCreatePatternLibraryAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateRootPatternLibraryAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreatePatternLibraryAction_Title); setToolTipText(Messages.CreatePatternLibraryAction_Tooltip); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternViewpoint.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new RootPatternLibraryWizard(modelElement_p, null, isReadOnly(), true); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/create/CreateTaskFactoryHolderAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3445 Text-content-md5: bdfcb558c3c2f3ce9c8f5a0960b16fc0 Text-content-sha1: 07e1a1c065234b96bdbb580cf728986e2c26c880 Content-length: 3490 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.create; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.ui.wizard.TaskFactoryHolderWizard; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.TaskFactoryHolder; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Open a wizard to create an {@link TaskFactoryHolder} model element. * @author fournier */ public class CreateTaskFactoryHolderAction extends CreateModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public CreateTaskFactoryHolderAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.CreateTaskFactoryHolderAction_Title); setToolTipText(Messages.CreateTaskFactoryHolderAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_NEW_TASK_FACTORY)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return FactoryComponentInvocation.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#isEnabled() */ @Override public boolean isEnabled() { // Default condition check. boolean isEnabled = super.isEnabled(); if (isEnabled) { FactoryComponentInvocation fcInvocation = (FactoryComponentInvocation) getModelElement(); // Rule 1 : to create a task factory the referenced FC must be different from the BootStrap one. if (DataHelper.isBootstrapFactoryComponent(fcInvocation.getFactoryComponentId())) { // Rule 2 : If the selected factory component invocation does not already have a task factory, enable the action; disable otherwise. TaskFactoryHolder taskFactory = fcInvocation.getTaskFactory(); isEnabled = (null == taskFactory) ? true : false; } else { isEnabled = false; } } return isEnabled; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.create.CreateModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { return new TaskFactoryHolderWizard(modelElement_p, null, isReadOnly()); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1867 Text-content-md5: 40b0d5428f62f7654cb4879ab1a1b21e Text-content-sha1: d4bb0a21008fb0cfca1e1784f65567a2e09b08f9 Content-length: 1912 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.Context; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a context. * @author fournier */ public class DeleteContextAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeleteContextAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { String[] message = { Messages.DeleteContextAction_Message, ICommonConstants.EMPTY_STRING }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Context.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContextElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1931 Text-content-md5: 18a7f1a11ba0a34a652ef77e0351923a Text-content-sha1: cfb389750ce8500be8b80220a8017dc3f7c78288 Content-length: 1976 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.egf.core.data.helper.DataHelper; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.ContextElement; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a context element. * @author fournier */ public class DeleteContextElementAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeleteContextElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { String[] message = { Messages.DeleteContextElementAction_Message, DataHelper.getLabel((ContextElement) getModelElement()) }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return ContextElement.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteContractElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1856 Text-content-md5: b0cb784cd16a395056822d96542e1951 Text-content-sha1: dcb59fb1051d11777eea41779075ce8ba72dd8f9 Content-length: 1901 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.ContractElement; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a contract element. * @author fournier */ public class DeleteContractElementAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeleteContractElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { String[] message = { Messages.DeleteContractElementAction_Message, getModelElement().getName() }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return ContractElement.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteDomainAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5116 Text-content-md5: 174a2bc78ee693f57ae49a0dd67287ea Text-content-sha1: a6b57655ce6a3a18bcd78991f41068a56336b373 Content-length: 5161 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.core.ui.preferences.IPreferenceConstants; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.Domain; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.edit.command.SetModelElementCommand; import org.eclipse.egf.model.edit.command.plugin.domain.RemoveDomainWrapperCommand; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a domain. * @author fournier */ public class DeleteDomainAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeleteDomainAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { Domain domain = (Domain) getModelElement(); String[] message = { Messages.DeleteDomainAction_Message, domain.getPath() }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Domain.class; } /** * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { // Default enablement. boolean isEnabled = super.isEnabled(); if (isEnabled) { Domain domain = (Domain) getModelElement(); // If the domain is defined, allow this action. isEnabled = ModelHelper.isDomainDefined(domain); } return isEnabled; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#closeEditor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected boolean closeEditor(NamedModelElementWithId modelElement_p) { // Get the hosting project for given model element. IProject hostingProject = ModelHelper.getProject(modelElement_p); // Get the domain file. String domainAsEcore = ((Domain) modelElement_p).getPath(); IFile domainFile = hostingProject.getFile(domainAsEcore); // Close the potential open Ecore editor on the domain as ecore file. boolean result = closeFileEditor(domainFile, IPreferenceConstants.ECORE_EDITOR_ID); // Close the potential open Topcased editor on the domain as ecore diagram file. IPath domainDiagramPath = new Path(domainAsEcore).removeFileExtension().addFileExtension(ICommonConstants.ECORE_DIAGRAM_FILE_EXTENSION); // Get the ecore diagram file. IFile domainDiagramFile = hostingProject.getFile(domainDiagramPath.toString()); result |= closeFileEditor(domainDiagramFile, IPreferenceConstants.GRAPHICAL_ECORE_EDITOR_ID); return result; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#doDeleteModelElement() */ @Override protected void doDeleteModelElement() { // Close the equivalent editor if any. closeEditor(getModelElement()); // Get the editing domain. AdapterFactoryEditingDomain editingDomain = getEditingDomain(); // Get the domain. Domain domain = (Domain) getModelElement(); // Get the feature related to the path on Domain model element. EStructuralFeature feature = ModelPackage.Literals.DOMAIN__PATH; // Create a command to set to null the path. SetModelElementCommand deleteCommand = new SetModelElementCommand(editingDomain, domain, feature, null); // Update the plug-in file. deleteCommand.setPluginChangeCommand(new RemoveDomainWrapperCommand(editingDomain, domain, feature, domain.getPath())); // Execute the command. executeCommand(editingDomain, deleteCommand); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteFactoryComponentInvocationAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1919 Text-content-md5: f3c4debbaea59280ca8fc05d9372ccc9 Text-content-sha1: 688eee0af76d7460ab01a9ce06c82701435990b8 Content-length: 1964 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a factory component invocation. * @author fournier */ public class DeleteFactoryComponentInvocationAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeleteFactoryComponentInvocationAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { String[] message = { Messages.DeleteFactoryComponentInvocationAction_Message, getModelElement().getName() }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return FactoryComponentInvocation.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteMappingAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2705 Text-content-md5: 286f5738e82826babfd57cd5b7a35f0f Text-content-sha1: de979f0831fdb19673956cea83a3a354b6088b27 Content-length: 2750 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.mapping.ui.editor.EGFMappingEditor; import org.eclipse.egf.model.MappingModel; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a mapping. * @author Guillaume Brocard */ public class DeleteMappingAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeleteMappingAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { MappingModel mapping = (MappingModel) getModelElement(); String[] message = { Messages.DeleteMappingAction_Message, mapping.getPath() }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return MappingModel.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#closeEditor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected boolean closeEditor(NamedModelElementWithId modelElement_p) { // Get the hosting project for given model element. IProject hostingProject = ModelHelper.getProject(modelElement_p); // Get the mapping file. IFile mappingFile = hostingProject.getFile(((MappingModel) modelElement_p).getPath()); return closeFileEditor(mappingFile, EGFMappingEditor.ID); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteModelElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 8275 Text-content-md5: a32273360271ed8a89950e3fc9985599 Text-content-sha1: fcf0e5249e48ed4c5e4c66c5dacdadd72397164c Content-length: 8320 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.core.resources.IFile; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.common.ui.helper.DialogHelper; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.emf.common.command.AbstractCommand; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.edit.command.DeleteCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.provider.IItemLabelProvider; import org.eclipse.emf.edit.ui.util.EditUIUtil; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.actions.ActionFactory; /** * Base class to implement an action that deletes a model element object. * @author fournier */ public abstract class DeleteModelElementAction extends AbstractModelElementAction { /** * Whether or not a dialog is pop-up to ask an user confirmation. */ private boolean _isUserConfirmationRequested; /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ protected DeleteModelElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); _isUserConfirmationRequested = true; setId(ActionFactory.DELETE.getId()); setActionDefinitionId("org.eclipse.ui.edit.delete"); //$NON-NLS-1$ ISharedImages sharedImages = getSharedImages(); setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE)); setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED)); setText(Messages.DeleteAction_Title); setToolTipText(Messages.DeleteAction_Tooltip); } /** * Set whether or not a user confirmation is requested when running. * @param userConfirmation_p */ public void setUserConfirmationRequested(boolean userConfirmation_p) { _isUserConfirmationRequested = userConfirmation_p; } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { boolean deleteConfirmed = true; if (_isUserConfirmationRequested) { String[] arguments = getConfirmDeleteMessage(); deleteConfirmed = DialogHelper.openDeleteConfirmationDialog(getShell(), arguments); } if (deleteConfirmed) { doDeleteModelElement(); } } /** * Performs the model element delete and call the closeEditor method. */ protected void doDeleteModelElement() { // Get the model element to delete. NamedModelElementWithId modelElement = getModelElement(); // Close the related editor and discard unsaved changes if open. boolean canDelete = closeEditor(modelElement); if (canDelete) { executeDeleteCommand(modelElement); } } /** * Execute the EMF delete command. * @param modelElement_p */ private void executeDeleteCommand(NamedModelElementWithId modelElement_p) { AdapterFactoryEditingDomain editingDomain = getEditingDomain(); // Create the delete command. Command command = DeleteCommand.create(editingDomain, modelElement_p); updateLabel(command, editingDomain.getAdapterFactory(), modelElement_p); // Finally, execute the command. executeCommand(editingDomain, command); } /** * Update the label for specified command with given element. * @param command_p * @param adapterFactory_p * @param element_p */ private void updateLabel(Command command_p, AdapterFactory adapterFactory_p, NamedModelElementWithId element_p) { // Preconditions. if ((null == command_p) || (null == adapterFactory_p) || (null == element_p)) { return; } // Get a label provider. IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory_p.adapt(element_p, IItemLabelProvider.class); if (null != labelProvider) { // Compute the updated label. String elementText = labelProvider.getText(element_p); if ((null != elementText) && (elementText.length() > 0)) { StringBuilder updatedLabel = new StringBuilder(command_p.getLabel()).append(ICommonConstants.WHITE_SPACE_CHARACTER) .append(element_p.eClass().getName()).append(ICommonConstants.WHITE_SPACE_CHARACTER).append(elementText); // Update the command label. ((AbstractCommand) command_p).setLabel(updatedLabel.toString()); } } } /** * Get the message used when displaying confirm delete dialog to the end-user. * @return */ protected abstract String[] getConfirmDeleteMessage(); /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { // Do nothing. return null; } /** * Close the editor related to given model element if any.
* Default implementation does nothing. * @param modelElement_p * @return true means the editor is correctly closed and given model element can be safely deleted.
* Default implementation returns true. */ protected boolean closeEditor(NamedModelElementWithId modelElement_p) { // Do nothing. return true; } /** * Close the editor for given model element file (if an editor is open). * @param modelElementFile_p a file that an editor is open for. * @param editorId_p the id of the editor responsible to open given model element. * @return true if successfully performed. */ protected boolean closeFileEditor(IFile modelElementFile_p, String editorId_p) { boolean result = true; // Get the path for given model element file. String modelElementPath = modelElementFile_p.getFullPath().toString(); // Get all open editors for given id. IEditorReference[] allOpenMappingEditors = WorkbenchHelper.getAllOpenEditors(editorId_p); IEditorPart modelElementEditor = null; // Loop over the open ones, to seek for an editor opened on given model element. for (int i = 0; i < allOpenMappingEditors.length && (null == modelElementEditor); i++) { IEditorReference currentEditorRefernce = allOpenMappingEditors[i]; // Get the editor for the current editor reference. IEditorPart currentEditor = currentEditorRefernce.getEditor(false); // Get the editor input. IEditorInput editorInput = currentEditor.getEditorInput(); URI resourceURI = EditUIUtil.getURI(editorInput); String currentEditorInputPath = resourceURI.toPlatformString(true); if (modelElementPath.equals(currentEditorInputPath)) { modelElementEditor = currentEditor; } } // If found, close it. if (null != modelElementEditor) { result = WorkbenchHelper.closeEditor(modelElementEditor, false); } return result; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5264 Text-content-md5: cc20a823cc4c3bed6746672dc726033a Text-content-sha1: 522730228dbea7f7b10016ad4fe5fc3de8770f8f Content-length: 5309 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.apache.log4j.Logger; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.egf.common.helper.ProjectHelper; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.pattern.ecore.PatternHandler; import org.eclipse.egf.pattern.ui.editor.PatternEditorHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorPart; /** * Implements an action to delete a pattern. * @author Guillaume Brocard */ public class DeletePatternAction extends DeleteModelElementAction { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(DeletePatternAction.class.getPackage().getName()); /** * Whether or not the project containing the selected pattern should be refreshed when the pattern is deleted. */ private boolean _refreshProject; /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeletePatternAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); _refreshProject = true; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { String[] message = { Messages.DeletePatternAction_Message, getModelElement().getName() }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternModel.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#closeEditor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected boolean closeEditor(NamedModelElementWithId modelElement_p) { // Get an pattern editor opened on the selected pattern. IEditorPart patternEditorPart = PatternEditorHelper.isPatternEditorOpen(getPatternModel()); boolean canDeletePattern = true; // Close the editor and discard changes. if (null != patternEditorPart) { // Close the editor and discard unsaved changes. canDeletePattern = WorkbenchHelper.closeEditor(patternEditorPart, false); } return canDeletePattern; } /** * Get the selected pattern element. * @return */ private PatternModel getPatternModel() { return (PatternModel) getModelElement(); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#doDeleteModelElement() */ @Override protected void doDeleteModelElement() { PatternModel pattern = getPatternModel(); // Get the hosting project before removing the pattern for refresh purpose. IProject project = null; if (_refreshProject) { project = ModelHelper.getProject(pattern); } // Do delete model element please. super.doDeleteModelElement(); // Perform additional stuffs. PatternHandler patternHandler = getPatternHandler(pattern); patternHandler.delete(); if (_refreshProject) { // Refresh the project ProjectHelper.refreshProject(project, IResource.DEPTH_INFINITE, new NullProgressMonitor()); } } /** * Get pattern handler for given pattern. * @param pattern_p */ protected PatternHandler getPatternHandler(PatternModel pattern_p) { PatternHandler patternHandler = null; // Precondition. if (null == pattern_p) { return patternHandler; } try { patternHandler = new PatternHandler(); patternHandler.load(pattern_p.getPath()); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("DeletePatternAction.delete(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } return patternHandler; } /** * Set whether or not the project is refresh when selected pattern is deleted. * @param refresh_p */ public void setRefreshProject(boolean refresh_p) { _refreshProject = refresh_p; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeletePatternLibraryAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4831 Text-content-md5: c116f354859d03c1419f488f76cb3e86 Text-content-sha1: 64cbbb9c735ca7bc8c48043c40e4187da41d78ee Content-length: 4876 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import java.util.ArrayList; import java.util.Iterator; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.egf.common.helper.ProjectHelper; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.PatternLibrary; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a pattern library. * @author Guillaume Brocard */ public class DeletePatternLibraryAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeletePatternLibraryAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { String[] message = { Messages.DeletePatternLibraryAction_Message, getModelElement().getName() }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternLibrary.class; } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#doDeleteModelElement() */ @Override protected void doDeleteModelElement() { PatternLibrary patternLibrary = getPatternLibrary(); // Get the hosting project before removing the pattern. IProject project = ModelHelper.getProject(patternLibrary); // Before removing the selected library, remove all contained patterns and pattern libraries. deleteSubLibraries(patternLibrary); // Delete the selected library in plug-in file. super.doDeleteModelElement(); // Refresh the project ProjectHelper.refreshProject(project, IResource.DEPTH_INFINITE, new NullProgressMonitor()); } /** * Delete sub libraries for specified library. * @param library_p */ private void deleteSubLibraries(PatternLibrary library_p) { // Clone the list to prevent from concurrent modifications. ArrayList patternElementList = new ArrayList(library_p.getPatternElements()); // Iterate over contained patterns and sub libraries to delete. Iterator patternElements = patternElementList.iterator(); while (patternElements.hasNext()) { AbstractPatternElement currentPatternElement = patternElements.next(); // If current pattern element is a pattern library recurse on it. if (currentPatternElement instanceof PatternLibrary) { // Don't delete a sub pattern library itself because deleting parent library also delete libraries as children in plug-in file. deleteSubLibraries((PatternLibrary) currentPatternElement); } // If current pattern element is a pattern, close the open pattern editor if any and delete it. else if (currentPatternElement instanceof PatternModel) { deletePattern((PatternModel) currentPatternElement); } } } /** * Delete given pattern. * @param pattern_p */ private void deletePattern(PatternModel pattern_p) { DeletePatternAction deletePatternAction = new DeletePatternAction(getShell(), getSelectionProvider(), isReadOnly()); deletePatternAction.setSelectedElement(pattern_p); deletePatternAction.setUserConfirmationRequested(false); deletePatternAction.setRefreshProject(false); deletePatternAction.run(); } /** * Get the pattern library. * @return */ private PatternLibrary getPatternLibrary() { return (PatternLibrary) getModelElement(); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/explorer/delete/DeleteTaskFactoryHolderAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1929 Text-content-md5: c5ca4d7ba873075a5cee9f72294f8e89 Text-content-sha1: 112fb15c33ca3a37fe79d21cdd08d00de2ace57e Content-length: 1974 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.explorer.delete; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.TaskFactoryHolder; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Implements an action to delete a task factory holder. * @author fournier */ public class DeleteTaskFactoryHolderAction extends DeleteModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public DeleteTaskFactoryHolderAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.explorer.delete.DeleteModelElementAction#getConfirmDeleteMessage() */ @Override protected String[] getConfirmDeleteMessage() { String[] message = { Messages.DeleteTaskFactoryHolderAction_Message, ICommonConstants.EMPTY_STRING }; return message; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return TaskFactoryHolder.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/fc/AbstractFactoryExecutionAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3685 Text-content-md5: e7bb7d62dd21a21f5acdf53ea07f1d07 Text-content-sha1: 9da883ae8f8545d6f5d8c2a8dfeec795dfebc524 Content-length: 3730 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.fc; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.preferences.IPreferenceConstants; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction; import org.eclipse.egf.core.ui.workbench.action.navigator.ValidateElementAction; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Base class to implement an UI action that runs a FC. * @author Guillaume Brocard */ public abstract class AbstractFactoryExecutionAction extends AbstractModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public AbstractFactoryExecutionAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setText(Messages.ExecuteFactoryAction_Title); setToolTipText(Messages.ExecuteFactoryAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_EXECUTE)); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId selectedModelElement_p) { // Do nothing. return null; } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { // Should I run the FC ? boolean readyToExecute = true; // Should I validate the FC before run it. // Get it from the preference store. IPreferenceStore preferenceStore = EgfUiActivator.getDefault().getPreferenceStore(); boolean validationRequested = preferenceStore.getBoolean(IPreferenceConstants.FC_EXECUTION_MODE); if (validationRequested) { ValidateElementAction validateAction = new ValidateElementAction(getShell(), getSelectionProvider(), isReadOnly(), false); validateAction.setErrorDialogTitle(Messages.ExecuteFactoryAction_ValidationErrorDialog_Title); validateAction.setSelectedElement(getModelElement()); validateAction.run(); readyToExecute = validateAction.isValid(); } // If ready, run it. if (readyToExecute) { // Get the id of the factory component that contains this factory. String fcId = ModelHelper.getFactoryComponentContainer(getModelElement()).getId(); // Execute the factory means generate the related factory component. CoreActivator.getDefault().generateFactoryComponent(fcId, null, true); } } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1449 Text-content-md5: 522b7176245c94c7e5ba2c0297a040ff Text-content-sha1: f96f05a5843985bc05c31963ff2d6a2342ffb569 Content-length: 1494 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.fc; import org.eclipse.egf.model.Factory; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Execute the factory for current factory component. * @author Guillaume Brocard */ public class ExecuteFactoryAction extends AbstractFactoryExecutionAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public ExecuteFactoryAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Factory.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/fc/ExecuteFactoryComponentAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1468 Text-content-md5: 23e2b8f7f5b0681c8b49b79cb6d5178b Text-content-sha1: dedc57f72246d5e63729e3f46bb0ebeeaa6002ef Content-length: 1513 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.fc; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; /** * Execute selected factory component. * @author Guillaume Brocard */ public class ExecuteFactoryComponentAction extends AbstractFactoryExecutionAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public ExecuteFactoryComponentAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return FactoryComponent.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/fc/InstalledFactoryComponentActionProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5435 Text-content-md5: 3e848c875b3e7a6fddc5de9f01801e4b Text-content-sha1: 67e2cb1c34f7780da5a3b91bde93d40c6feb1784 Content-length: 5480 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.fc; import java.util.List; import org.eclipse.egf.core.ui.workbench.action.edit.EditFactoryComponentAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditFactoryComponentInvocationAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditContextElementAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditContractElementAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditDomainAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditMappingAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditPatternLibraryAction; import org.eclipse.egf.core.ui.workbench.action.edit.EditTaskFactoryHolderAction; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractActionProvider; import org.eclipse.egf.core.ui.workbench.action.navigator.ValidateElementAction; import org.eclipse.egf.core.ui.workbench.action.open.OpenDomainAction; import org.eclipse.egf.core.ui.workbench.action.open.OpenPatternAction; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchPage; /** * Provides action for context menu for Installed Factory Components view. * @author Guillaume Brocard */ public class InstalledFactoryComponentActionProvider extends AbstractActionProvider { /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractActionProvider#initActions(org.eclipse.swt.widgets.Shell, * org.eclipse.ui.IWorkbenchPage, org.eclipse.jface.viewers.ISelectionProvider) */ @Override protected void initActions(Shell shell_p, IWorkbenchPage page_p, ISelectionProvider selectionProvider_p) { // Actions provided by this class are used to edit (without changes) model element objects. // Hence, wizards opened by these actions are not in read only. initOpenActions(shell_p, selectionProvider_p); initEditActions(shell_p, selectionProvider_p); initAdditionActions(shell_p, selectionProvider_p); } /** * Initialize the actions related to execute an 'edit' operation. * @param shell_p * @param selectionProvider_p */ private void initEditActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // Edit group marker actions // Edit actions related to a factory component. List editActions = getEditActions(); editActions.add(new EditFactoryComponentAction(shell_p, selectionProvider_p, true)); // Edit actions related to a domain. editActions.add(new EditDomainAction(shell_p, selectionProvider_p, true)); // Edit actions related to a factory component invocation. editActions.add(new EditFactoryComponentInvocationAction(shell_p, selectionProvider_p, true)); editActions.add(new EditTaskFactoryHolderAction(shell_p, selectionProvider_p, true)); // Edit actions related to a contract element. editActions.add(new EditContractElementAction(shell_p, selectionProvider_p, true)); // Edit actions related to a context. editActions.add(new EditContextElementAction(shell_p, selectionProvider_p, true)); // Edit actions related to a pattern library. editActions.add(new EditPatternLibraryAction(shell_p, selectionProvider_p, true)); // Edit actions related to a mapping model. editActions.add(new EditMappingAction(shell_p, selectionProvider_p, true)); } /** * Initialize the actions related to execute an 'open' operation. * @param shell_p * @param selectionProvider_p */ private void initOpenActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // Open group marker actions List openActions = getOpenActions(); // Action to open a domain editor. openActions.add(new OpenDomainAction(shell_p, selectionProvider_p, true)); // Action to open a pattern editor. openActions.add(new OpenPatternAction(shell_p, selectionProvider_p, true)); } /** * Initialize the actions related to execute a 'creation' operation. * @param shell_p * @param selectionProvider_p */ private void initAdditionActions(Shell shell_p, ISelectionProvider selectionProvider_p) { // Addition group marker actions List additionActions = getAdditionActions(); // Action to execute (ie build) an FactoryComponent from a factory component factory. additionActions.add(new ExecuteFactoryAction(shell_p, selectionProvider_p, true)); // Action to execute (ie build) an FactoryComponent from a factory component itself. additionActions.add(new ExecuteFactoryComponentAction(shell_p, selectionProvider_p, true)); // Validate action. additionActions.add(new ValidateElementAction(shell_p, selectionProvider_p, true)); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/navigator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/navigator/AbstractActionProvider.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 8192 Text-content-md5: 7eeac3151472087fd47ddfbd26595485 Text-content-sha1: 38017dc918d68532519ab50c7f7fbe767b2fe440 Content-length: 8237 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2007, 2009 La Carotte Et Le Baton. * 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: * La Carotte Et Le Baton - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action.navigator; import java.util.ArrayList; import java.util.List; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.navigator.CommonActionProvider; import org.eclipse.ui.navigator.ICommonActionExtensionSite; import org.eclipse.ui.navigator.ICommonMenuConstants; import org.eclipse.ui.navigator.ICommonViewerSite; import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite; /** * Base class to implement action provider for MDSoFa views based on the common navigator framework. * @author Guillaume Brocard */ public abstract class AbstractActionProvider extends CommonActionProvider { /** * Group that hosts the delete actions. */ private static final String GROUP_DELETE = "group.delete"; //$NON-NLS-1$ /** * Id of the sub menu manager for 'new' sub menu. */ private static final String GROUP_NEW_SUB_MENU_ID = "group.new.subMenu"; //$NON-NLS-1$ /** * List of action located in the group marker 'group.new' */ private List _newActions; /** * List of action located in the group marker 'group.open' */ private List _openActions; /** * List of action located in the group marker 'group.edit' */ private List _editActions; /** * List of action located in the group marker 'group.delete' */ private List _deleteActions; /** * List of action located in the group marker 'additions' */ private List _additionActions; /** * Constructor. */ public AbstractActionProvider() { _newActions = new ArrayList(0); _openActions = new ArrayList(0); _editActions = new ArrayList(0); _deleteActions = new ArrayList(0); _additionActions = new ArrayList(0); } /** * @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite) */ @Override public void init(ICommonActionExtensionSite site_p) { super.init(site_p); ICommonViewerSite commonViewerSite = site_p.getViewSite(); if (commonViewerSite instanceof ICommonViewerWorkbenchSite) { ICommonViewerWorkbenchSite workbenchSite = (ICommonViewerWorkbenchSite) commonViewerSite; IWorkbenchPage page = workbenchSite.getPage(); ISelectionProvider selectionProvider = workbenchSite.getSelectionProvider(); Shell shell = workbenchSite.getShell(); initActions(shell, page, selectionProvider); } } /** * Initialization actions * @param shell_p * @param page_p * @param selectionProvider_p */ protected abstract void initActions(Shell shell_p, IWorkbenchPage page_p, ISelectionProvider selectionProvider_p); /** * @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars) */ @Override public void fillActionBars(IActionBars actionBars_p) { fillActionsBars(actionBars_p, _newActions); fillActionsBars(actionBars_p, _openActions); fillActionsBars(actionBars_p, _editActions); fillActionsBars(actionBars_p, _deleteActions); fillActionsBars(actionBars_p, _additionActions); } /** * Fill action bars. * @param actionBars_p * @param actions_p */ protected void fillActionsBars(IActionBars actionBars_p, List actions_p) { for (IAction action : actions_p) { // Default value for selection compatible boolean is true boolean isSelectionCompatible = true; if (action instanceof AbstractNavigatorAction) { // In this case, check really if the action is compatible with current selection. isSelectionCompatible = ((AbstractNavigatorAction) action).isSelectionCompatible(); } // Enable global action handler if the action fulfills both conditions. if (isSelectionCompatible && action.isEnabled()) { actionBars_p.setGlobalActionHandler(action.getId(), action); } } } /** * @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager) */ @Override public void fillContextMenu(IMenuManager menu_p) { // Fill actions located in GROUP_NEW IMenuManager subMenu = createNewSubMenuManager(); menu_p.insertAfter(ICommonMenuConstants.GROUP_NEW, subMenu); // Fill actions located in GROUP_EDIT fillContextMenu(menu_p, _editActions, ICommonMenuConstants.GROUP_EDIT); // Fill actions located in GROUP_OPEN fillContextMenu(menu_p, _openActions, ICommonMenuConstants.GROUP_OPEN); // Fill actions located in GROUP_DELETE fillContextMenu(menu_p, _deleteActions, GROUP_DELETE); // Fill actions located in ADDITIONS fillContextMenu(menu_p, _additionActions, ICommonMenuConstants.GROUP_ADDITIONS); } /** * Create new sub Menu manager. * @return */ protected IMenuManager createNewSubMenuManager() { IMenuManager subMenuManager = new MenuManager(Messages.ExplorerActionProvider_NewMenuItem_Title, GROUP_NEW_SUB_MENU_ID); fillContextMenu(subMenuManager, _newActions, null); return subMenuManager; } /** * Fill context menu group * @param menu_p * @param actions_p * @param groupId_p */ protected void fillContextMenu(IMenuManager menu_p, List actions_p, String groupId_p) { for (IAction action : actions_p) { // Default value for selection compatible boolean is true boolean isSelectionCompatible = true; if (action instanceof AbstractNavigatorAction) { // In this case, check really if the action is compatible with current selection. isSelectionCompatible = ((AbstractNavigatorAction) action).isSelectionCompatible(); } // Append it to group if this action is compatible with current selection. if (isSelectionCompatible) { // Override the action contribution item to force the context menu to be refreshed even if the selected object has not changed. ActionContributionItem item = new ActionContributionItem(action) { @Override public boolean isDirty() { return true; } @Override public boolean isDynamic() { return true; } }; // Append the action to a group if provided... if (groupId_p != null) { menu_p.appendToGroup(groupId_p, item); } else { menu_p.add(item); } } } } /** * Return the 'New' action list. * @return a not null list. */ protected List getNewActions() { return _newActions; } /** * Return the 'Open' action list. * @return a not null list. */ protected List getOpenActions() { return _openActions; } /** * Return the 'Edit' action list. * @return a not null list. */ protected List getEditActions() { return _editActions; } /** * Return the 'Delete' action list. * @return a not null list. */ protected List getDeleteActions() { return _deleteActions; } /** * Return the 'additions' action list. * @return a not null list. */ protected List getAdditionActions() { return _additionActions; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/navigator/AbstractModelElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4230 Text-content-md5: 0be479080fa45e70670d385ee9bfe3f1 Text-content-sha1: 5f18c17327d3e9b8dec496b50508a2e54c463be5 Content-length: 4275 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action.navigator; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.provider.FactoryComponentEditPlugin; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.plugin.AbstractUIPlugin; /** * Base class to implement action dealing with a model element. * @author fournier */ public abstract class AbstractModelElementAction extends AbstractNavigatorAction { /** * Managed model element. */ private NamedModelElementWithId _modelElement; /** * Is the open wizard by this action in read only mode ? */ private boolean _isReadOnly; /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p whether or not the open wizard is in read only. */ protected AbstractModelElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p); // Set action id based on class name. setId(getClass().getName()); _isReadOnly = readOnlyMode_p; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#setSelectedElement(java.lang.Object) */ @Override public void setSelectedElement(Object object_p) { if (object_p instanceof NamedModelElementWithId) { _modelElement = (NamedModelElementWithId) object_p; } } /** * Get the editing model element. * @return the modelElement */ public NamedModelElementWithId getModelElement() { return _modelElement; } /** * Execute the command. * @param editingDomain_p * @param command_p */ protected void executeCommand(AdapterFactoryEditingDomain editingDomain_p, Command command_p) { // Execute the command. editingDomain_p.getCommandStack().execute(command_p); } /** * Get the editing domain. * @return */ protected AdapterFactoryEditingDomain getEditingDomain() { // Get the editing domain. AdapterFactoryEditingDomain editingDomain = isReadOnly() ? EgfUiActivator.getDefault().getEditingDomainInReadOnly() : EgfUiActivator.getDefault().getEditingDomain(); return editingDomain; } /** * Compute an image descriptor for a model element.
* The file related to the image must be related to {@link FactoryComponentEditPlugin}. * @return an {@link ImageDescriptor} or null if not found. */ protected ImageDescriptor computeImageDescriptorForModelElement(String pluginRelatedImagePath_p) { return AbstractUIPlugin.imageDescriptorFromPlugin(FactoryComponentEditPlugin.getPlugin().getSymbolicName(), pluginRelatedImagePath_p); } /** * Whether or not the open wizard is in read only ? * @return the isReadOnly */ protected boolean isReadOnly() { return _isReadOnly; } /** * Get the wizard that handles with given model element. * @param selectedModelElement_p the selected element that triggers this action. * @return a not null {@link Wizard} instance. */ protected abstract Wizard getWizardFor(NamedModelElementWithId selectedModelElement_p); /** * Open a wizard dialog for given wizard. * @param wizard_p */ protected void openWizardDialog(Wizard wizard_p) { WizardDialog dialog = new WizardDialog(getShell(), wizard_p); dialog.open(); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/navigator/AbstractNavigatorAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3545 Text-content-md5: 000429d3844ad1f5ff75e60c969b8861 Text-content-sha1: 1c91c69a15265faf676b5d577d99953dde752b48 Content-length: 3590 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2007, 2009 La Carotte Et Le Baton. * 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: * La Carotte Et Le Baton - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action.navigator; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.navigator.CommonNavigator; /** * Base class to implement action located in the context menu of a tree viewer based on the {@link CommonNavigator}. * @author fournier */ public abstract class AbstractNavigatorAction extends Action { /** * Selection provider. */ private ISelectionProvider _provider; /** * Shell. */ private Shell _shell; /** * Constructor.. * @param selectionProvider_p */ protected AbstractNavigatorAction(ISelectionProvider selectionProvider_p) { _provider = selectionProvider_p; } /** * Constructor. * @param shell_p * @param selectionProvider_p */ protected AbstractNavigatorAction(Shell shell_p, ISelectionProvider selectionProvider_p) { this(selectionProvider_p); _shell = shell_p; } /** * Get the current selected object * @param objectType_p the object type that the selection must be an instance of */ protected Object getSelection(Class objectType_p) { Object selectedObject = null; // Get selected objects if any. IStructuredSelection selectedObjects = (IStructuredSelection) _provider.getSelection(); // If not empty, get the first selected object. if (!selectedObjects.isEmpty()) { Object firstElement = selectedObjects.getFirstElement(); if (selectedObjects.size() == 1 && objectType_p.isInstance(firstElement)) { selectedObject = firstElement; } } return selectedObject; } /** * Get the shell * @return the shell or null if not set with the constructor. */ protected Shell getShell() { return _shell; } /** * Returns whether this action is compatible with current selection. * @return */ public boolean isSelectionCompatible() { boolean isEnabled = false; // Check selected element has a type that matches the expected one. Object element = getSelection(getModelElementClass()); if (element != null) { setSelectedElement(element); isEnabled = true; } return isEnabled; } /** * Get the model element class for which this action is enabled for. * @return */ protected abstract Class getModelElementClass(); /** * Set given object as the selected object. * @param object_p */ protected abstract void setSelectedElement(Object object_p); /** * Get the shared images. * @return */ protected ISharedImages getSharedImages() { ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages(); return sharedImages; } /** * Get the selection provider. * @return the provider */ protected ISelectionProvider getSelectionProvider() { return _provider; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/navigator/ValidateElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 7193 Text-content-md5: c814781e5b1abd1986d03c39dc5bb5a3 Text-content-sha1: 64a2dfa2b6ddf03fb4d8d7e31b26afbd4defbdd2 Content-length: 7238 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.navigator; import org.eclipse.egf.common.helper.StringHelper; import org.eclipse.egf.core.ui.workbench.IImageKeys; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.PatternModel; import org.eclipse.emf.common.ui.dialogs.DiagnosticDialog; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.ecore.util.Diagnostician; import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; /** * Implement an action to validate the {@link NamedModelElementWithId} selected element. * @author Guillaume Brocard */ public class ValidateElementAction extends AbstractModelElementAction { /** * Whether or not the validation is on error. */ private boolean _isValidationOnError; /** * Should I report to the end-user when validation is successful. */ private boolean _reportSuccessfulValidation; /** * Error dialog title used when reporting validation errors. */ private String _errorDialogTitle; /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public ValidateElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setId("org.eclipse.egf.core.ui.workbench.action.navigator.validate"); //$NON-NLS-1$ setText(Messages.ValidateElementAction_Title); setToolTipText(Messages.ValidateElementAction_Tooltip); setImageDescriptor(EgfWorkbenchActivator.getDefault().getImageDescriptor(IImageKeys.IMG_VALIDATE)); _reportSuccessfulValidation = true; } /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p * @param reportSuccessfulValidation_p */ public ValidateElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p, boolean reportSuccessfulValidation_p) { this(shell_p, selectionProvider_p, readOnlyMode_p); _reportSuccessfulValidation = reportSuccessfulValidation_p; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId selectedModelElement_p) { // Do nothing. return null; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return NamedModelElementWithId.class; } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { NamedModelElementWithId modelElement = getModelElement(); Object[] data = new Object[] { modelElement }; // Format the message according to selected element. String elementName = modelElement.getName(); // If element name is null, use the eClass name instead. elementName = (null != elementName) ? elementName : modelElement.eClass().getName(); String formattedMessage = StringHelper.formatMessage(Messages.ValidateElementAction_Error_Detailed_Message, new String[] { elementName }); DiagnosticChain diagnosticChain = new BasicDiagnostic(EObjectValidator.DIAGNOSTIC_SOURCE, 0, formattedMessage, data); // Validate the selected model element. Diagnostician diagnostician = new Diagnostician(); // Invoke validation. Diagnostic diagnostic = diagnostician.validate(modelElement); // If on error, display message. _isValidationOnError = (Diagnostic.ERROR == diagnostic.getSeverity()); if (_isValidationOnError) { diagnosticChain.addAll(diagnostic); // Format the title according to report errors. String formattedTitle = getErrorDialogTitle(); DiagnosticDialog.open(getShell(), formattedTitle, Messages.ValidateElementAction_Error_Overall_Message, (Diagnostic) diagnosticChain); } else { if (_reportSuccessfulValidation) { // Format the title according to report a successful validation. String formattedTitle = StringHelper.formatMessage(Messages.ValidateElementAction_ValidationReportDialog_Title, new String[] { Messages.ValidateElementAction_ValidationReportDialog_Title_Info }); MessageDialog.openInformation(getShell(), formattedTitle, Messages.ValidateElementAction_NoError_Message); } } } /** * Return the error title to use when reporting validation errors. * @return a not null string. */ protected String getErrorDialogTitle() { return (null == _errorDialogTitle) ? getDefaultErrorDialogTitle() : _errorDialogTitle; } /** * Return the default error dialog title.
{@link #getErrorDialogTitle()} * @return */ protected String getDefaultErrorDialogTitle() { String formattedTitle = StringHelper.formatMessage(Messages.ValidateElementAction_ValidationReportDialog_Title, new String[] { Messages.ValidateElementAction_ValidationReportDialog_Title_Problem }); return formattedTitle; } /** * Return whether or not the validation is successful.
* Must be called after {@link #run()} method. * @return the isValid */ public boolean isValid() { return !_isValidationOnError; } /** * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { boolean result = super.isEnabled(); NamedModelElementWithId modelElement = getModelElement(); // Pattern models are validated at design time in the Pattern editor. if (modelElement instanceof PatternModel) { result = false; } return result; } /** * Set the error dialog title with the specified value. * @param errorDialogTitle_p the errorDialogTitle to set */ public void setErrorDialogTitle(String errorDialogTitle_p) { _errorDialogTitle = errorDialogTitle_p; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/open Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/open/OpenDomainAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 10044 Text-content-md5: f82a12c8c2279ee7b2cacb17c9b4cd97 Text-content-sha1: 3bd4f4700d781144484cc81faf5b8af813633733 Content-length: 10089 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.open; import java.lang.reflect.InvocationTargetException; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.egf.common.constant.ICommonConstants; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.preferences.IPreferenceConstants; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.Domain; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.edit.helper.FactoryComponentHelper; import org.eclipse.emf.common.ui.URIEditorInput; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorUtil; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.WorkspaceModifyOperation; import org.eclipse.ui.part.FileEditorInput; /** * Implement an action that opens a domain editor for a domain model content. * @author Guillaume Brocard */ public class OpenDomainAction extends OpenModelElementAction { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(OpenDomainAction.class.getPackage().getName()); /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public OpenDomainAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#getEditorId() */ @Override protected String getEditorId() { String editorId = null; // If the action is in read only, we are opening a domain for a deployed factory component. // In this context, only the EMF standard editor is available. if (isReadOnly()) { editorId = IPreferenceConstants.ECORE_EDITOR_ID; } else { // Get it from the preference store. IPreferenceStore preferenceStore = EgfUiActivator.getDefault().getPreferenceStore(); editorId = preferenceStore.getString(IPreferenceConstants.DOMAIN_EDITOR_ID); } return editorId; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return Domain.class; } /** * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { // Default enablement. boolean isEnabled = super.isEnabled(); if (isEnabled) { Domain domain = getDomain(); // If the domain is defined, allow this action. isEnabled = ModelHelper.isDomainDefined(domain); } return isEnabled; } /** * Return the domain URI for current model element. * @return null if not found. */ protected URI getDomainURI(Domain domain_p) { // Get the plug-in id that hosts this domain. FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(domain_p); // Create the related URI. URI domainUri = FactoryComponentHelper.getDomainURI(fcContainer.getId()); return domainUri; } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#getEditorInput() */ @Override protected IEditorInput getEditorInput() { IEditorInput result = null; Domain domain = getDomain(); URI domainUri = getDomainURI(domain); if (null != domainUri) { // If the action is in read only, we are opening a domain for a deployed factory component. // In this context, only the EMF standard editor is available. if (isReadOnly()) { // The domain is located in the target platform. result = new URIEditorInput(domainUri); } else { // The domain is located in the workspace. result = handleEditorInputForDomainLocatedInWorkspace(domain, domainUri); } } return result; } private IEditorInput handleEditorInputForDomainLocatedInWorkspace(Domain domain_p, URI domainUri_p) { IEditorInput result = null; // Get the editor used to open the domain. String editorId = getEditorId(); // Is it the standard EMF one ? if (IPreferenceConstants.ECORE_EDITOR_ID.equals(editorId)) { // Create the editor input handled by the Ecore editor. result = new URIEditorInput(domainUri_p); } // Is it the Graphical one ? else if (IPreferenceConstants.GRAPHICAL_ECORE_EDITOR_ID.equals(editorId)) { // Check if an Ecore diagram file exists. IPath ecoreDiagramPath = new Path(domain_p.getPath()); // Remove the ecore file extension. ecoreDiagramPath = ecoreDiagramPath.removeFileExtension(); // Add the ecoredi file extension ecoreDiagramPath = ecoreDiagramPath.addFileExtension(ICommonConstants.ECORE_DIAGRAM_FILE_EXTENSION); // Get the project that hosts this mapping model. IProject project = ModelHelper.getProject(domain_p); if (null != project) { // Get the ecore diagram file. IFile ecoreDiagramFile = project.getFile(ecoreDiagramPath); if (null != ecoreDiagramFile) { if (ecoreDiagramFile.exists()) { // Create the editor input handled by the Graphical editor. result = new FileEditorInput(ecoreDiagramFile); } else { // Create the diagram and open directly. createAndOpenEcoreDiagram(domainUri_p, URI.createPlatformResourceURI(ecoreDiagramFile.getFullPath().toString(), true)); // Force to return a null IEditor input. result = null; } } } } return result; } /** * Create the Ecore diagram and open it. * @param domainUri_p * @param diagramUri_p */ private void createAndOpenEcoreDiagram(final URI domainUri_p, final URI diagramUri_p) { WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { /** * @see org.eclipse.ui.actions.WorkspaceModifyOperation#execute(org.eclipse.core.runtime.IProgressMonitor) */ @SuppressWarnings("synthetic-access") @Override protected void execute(final IProgressMonitor monitor_p) throws CoreException, InvocationTargetException, InterruptedException { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { try { // Get the root object used to initialize the diagram. EObject diagramEObject = getDiagramEObject(domainUri_p); // Create the diagram. Resource diagram = EcoreDiagramEditorUtil.createDiagramOnly(diagramUri_p, domainUri_p, diagramEObject, true /* initialized the diagram */, monitor_p); // Try to open the diagram EcoreDiagramEditorUtil.openDiagram(diagram); } catch (PartInitException exception_p) { StringBuilder loggerMessage = new StringBuilder(".run(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } }); } }; try { PlatformUI.getWorkbench().getProgressService().run(true /* fork */, false /* not cancelable */, operation); } catch (InvocationTargetException exception_p) { StringBuilder loggerMessage = new StringBuilder("OpenGraphicalDomainAction.run(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } catch (InterruptedException exception_p) { StringBuilder loggerMessage = new StringBuilder("OpenGraphicalDomainAction.run(..) _ "); //$NON-NLS-1$ __logger.warn(loggerMessage.toString(), exception_p); } } /** * Get the diagram root object. * @return */ private EObject getDiagramEObject(URI domainUri_p) { EObject result = null; // Create a resource set to open the domain resource ResourceSet resourceSet = new ResourceSetImpl(); Resource domain = resourceSet.getResource(domainUri_p, true); // Get the model root object. result = domain.getContents().get(0); return result; } // /** // * Get diagram id. // * @param diagramDescriptors_p // * @return null if not found. // */ // private String getDiagramId(DiagramDescriptor[] diagramDescriptors_p) { // String editorId = null; // if (diagramDescriptors_p.length > 0) { // editorId = diagramDescriptors_p[0].getId(); // } // return editorId; // } /** * Return the domain. * @return */ private Domain getDomain() { Domain domain = (Domain) getModelElement(); return domain; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/open/OpenMappingAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2959 Text-content-md5: bb8f70984d5060f8c2d8b9986f87ed40 Text-content-sha1: 34e7d0892f14586bd7b6a09cfa7256bf20b666fb Content-length: 3004 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.open; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.Path; import org.eclipse.egf.mapping.ui.editor.EGFMappingEditor; import org.eclipse.egf.model.MappingModel; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.part.FileEditorInput; /** * Implement an action that opens a mapping editor for a mapping model content. * @author Guillaume Brocard */ public class OpenMappingAction extends OpenModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public OpenMappingAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#getEditorId() */ @Override protected String getEditorId() { return EGFMappingEditor.ID; } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#shouldSaveEditorAfterOpening() */ @Override protected boolean shouldSaveEditorAfterOpening() { return true; } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#getEditorInput() */ @Override protected IEditorInput getEditorInput() { IEditorInput result = null; // Get the mapping model. MappingModel mappingModel = (MappingModel) getModelElement(); // Get the project that hosts this mapping model. IProject project = ModelHelper.getProject(mappingModel); if (null != project) { // Get the mapping file. IFile mappingFile = project.getFile(new Path(mappingModel.getPath())); if (null != mappingFile) { // Create the editor input handled by the Mapping editor. result = new FileEditorInput(mappingFile); } } return result; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return MappingModel.class; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/open/OpenModelElementAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3642 Text-content-md5: df1f800e5a81bff1138b66081f122c25 Text-content-sha1: 41c3cf9bf6f557153a160124982097087feaed38 Content-length: 3687 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.action.open; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; /** * Base class to implement an action that opens an editor. * @author fournier */ public abstract class OpenModelElementAction extends AbstractModelElementAction { /** * The 'open' retargetable action id. */ public static final String OPEN_ACTION_ID = "org.eclipse.ui.navigator.Open"; //$NON-NLS-1$ /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public OpenModelElementAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); setId(OPEN_ACTION_ID); setText(Messages.OpenModelElementAction_Title); } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractModelElementAction#getWizardFor(org.eclipse.egf.model.NamedModelElementWithId) */ @Override protected Wizard getWizardFor(NamedModelElementWithId modelElement_p) { // Do nothing. return null; } /** * @see org.eclipse.jface.action.Action#run() */ @Override public void run() { IEditorInput editorInput = getEditorInput(); String editorId = getEditorId(); // To open the related editor, the editor input and the id must be defined. if ((null != editorInput) && (null != editorId)) { final IEditorPart openEditor = doOpenEditor(editorInput, editorId); if (shouldSaveEditorAfterOpening()) { // Due to workspace operation conflicts, the save operation is run in a new asyncExec. getShell().getDisplay().asyncExec(new Runnable() { public void run() { WorkbenchHelper.saveEditor(openEditor); } }); } } } /** * Return whether or not the open editor has to be saved after opening.
* Default implementation returns false. * @return true means save it please. */ protected boolean shouldSaveEditorAfterOpening() { return false; } /** * Do open related editor for specified parameters. * @param editorInput_p * @param editorId_p */ protected IEditorPart doOpenEditor(IEditorInput editorInput_p, String editorId_p) { return WorkbenchHelper.openEditor(editorInput_p, editorId_p, getShell()); } /** * Return the id of the editor to be opened. * @return */ protected abstract String getEditorId(); /** * Return the input used by the open editor. * @return */ protected abstract IEditorInput getEditorInput(); } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/action/open/OpenPatternAction.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3281 Text-content-md5: 39764cbacdeb633a778b6cec4edb849e Text-content-sha1: 7a07ad33bfd15b35e6b4cb323e26e3d21744aca8 Content-length: 3326 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.core.ui.workbench.action.open; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.core.ui.workbench.internal.util.ActionPatternEditorHelper; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.pattern.ui.editor.PatternEditor; import org.eclipse.egf.pattern.ui.editor.PatternEditorHelper; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; /** * Implement an action that opens a pattern editor for selected {@link PatternModel} element. * @author Guillaume Brocard */ public class OpenPatternAction extends OpenModelElementAction { /** * Constructor. * @param shell_p * @param selectionProvider_p * @param readOnlyMode_p */ public OpenPatternAction(Shell shell_p, ISelectionProvider selectionProvider_p, boolean readOnlyMode_p) { super(shell_p, selectionProvider_p, readOnlyMode_p); } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#getEditorId() */ @Override protected String getEditorId() { return PatternEditor.class.getName(); } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#getEditorInput() */ @Override protected IEditorInput getEditorInput() { // Get the editor input for the selected pattern. return PatternEditorHelper.getEditorInput(getPatternModel(), isReadOnly() == false); } /** * @see org.eclipse.egf.core.ui.workbench.action.open.OpenModelElementAction#run() */ @Override public void run() { // Open a pattern editor. IEditorPart patternEditor = WorkbenchHelper.openEditor(getEditorInput(), getEditorId(), getShell()); if (patternEditor != null) { // Add the open editor in listener that monitors pattern editor closing event. ActionPatternEditorHelper.addPatternEditorToListener(patternEditor, getPatternModel()); } } /** * @see org.eclipse.jface.action.Action#isEnabled() */ @Override public boolean isEnabled() { // Default enablement. boolean isEnabled = super.isEnabled(); if (isEnabled) { PatternModel pattern = getPatternModel(); // Path must be not null. String path = pattern.getPath(); isEnabled &= path != null ? true : false; } return isEnabled; } /** * @see org.eclipse.egf.core.ui.workbench.action.navigator.AbstractNavigatorAction#getModelElementClass() */ @Override protected Class getModelElementClass() { return PatternModel.class; } /** * Get the selected pattern element. * @return */ private PatternModel getPatternModel() { return (PatternModel) getModelElement(); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/drop Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/drop/DelegatingCommonDropAdapter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6548 Text-content-md5: 0c836076eb525569ef9ca05fc1a8fc56 Text-content-sha1: 7d540ffe1722c5e9f52e71fcadffcf744a31372f Content-length: 6593 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.internal.drop; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.dnd.TransferData; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Item; import org.eclipse.ui.navigator.CommonDropAdapter; import org.eclipse.ui.navigator.INavigatorContentService; import org.eclipse.ui.part.PluginDropAdapter; /** *

* This class is a clone of the one provided by org.eclipse.ui.navigator plug-in but due to restrictions on DND, we have to re-implement it to workaround bug * #150688.
* This class exists to override CommonDropAdapter#determineLocation(org.eclipse.swt.dnd.DropTargetEvent) method. Hence, this method is getting to behave * normally again regarding DND feedbacks.
* Since {@link CommonDropAdapter} is a final class, this one delegates to it to get CommonDropAdapter services. */ public class DelegatingCommonDropAdapter extends PluginDropAdapter { private CommonDropAdapter _commonDropAdapter; /** * Create a DropAdapter that handles a drop based on the given content service and selection provider. * @param contentService_p The content service this Drop Adapter is associated with * @param structuredViewer_p The viewer this DropAdapter is associated with. */ public DelegatingCommonDropAdapter(INavigatorContentService contentService_p, StructuredViewer structuredViewer_p) { super(structuredViewer_p); _commonDropAdapter = new CommonDropAdapter(contentService_p, structuredViewer_p); } /** * {@link CommonDropAdapter#drop(DropTargetEvent)} */ @Override public void drop(DropTargetEvent event_p) { int location = determineLocation(event_p); switch (location) { case LOCATION_BEFORE: event_p.feedback = DND.FEEDBACK_INSERT_BEFORE; break; case LOCATION_AFTER: event_p.feedback = DND.FEEDBACK_INSERT_AFTER; } _commonDropAdapter.drop(event_p); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#getFeedbackEnabled() */ @Override public boolean getFeedbackEnabled() { return _commonDropAdapter.getFeedbackEnabled(); } /** * @see org.eclipse.ui.part.PluginDropAdapter#performDrop(java.lang.Object) */ @Override public boolean performDrop(Object data_p) { return _commonDropAdapter.performDrop(data_p); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#setFeedbackEnabled(boolean) */ @Override public void setFeedbackEnabled(boolean value_p) { _commonDropAdapter.setFeedbackEnabled(value_p); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#setScrollExpandEnabled(boolean) */ @Override public void setScrollExpandEnabled(boolean value_p) { super.setScrollExpandEnabled(value_p); _commonDropAdapter.setScrollExpandEnabled(value_p); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#setSelectionFeedbackEnabled(boolean) */ @Override public void setSelectionFeedbackEnabled(boolean value_p) { _commonDropAdapter.setSelectionFeedbackEnabled(value_p); } /** * {@link CommonDropAdapter#getSupportedDropTransfers()} * @return */ public Transfer[] getSupportedDropTransfers() { return _commonDropAdapter.getSupportedDropTransfers(); } /** * {@link CommonDropAdapter#dragEnter(DropTargetEvent)} */ @Override public void dragEnter(DropTargetEvent event_p) { _commonDropAdapter.dragEnter(event_p); } /** * {@link CommonDropAdapter#dragLeave(DropTargetEvent)} */ @Override public void dragLeave(DropTargetEvent event_p) { _commonDropAdapter.dragLeave(event_p); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOperationChanged(org.eclipse.swt.dnd.DropTargetEvent) */ @Override public void dragOperationChanged(DropTargetEvent event_p) { _commonDropAdapter.dragOperationChanged(event_p); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOver(org.eclipse.swt.dnd.DropTargetEvent) */ @Override public void dragOver(DropTargetEvent event_p) { // Force to have auto scroll & expand disabled. setScrollExpandEnabled(false); // Call CommonDropAdapter to make sure DND works for patterns or libraries. _commonDropAdapter.dragOver(event_p); // Call super method to workaround the feedback issue coming from CommonDropAdapter for factory component invocation order. super.dragOver(event_p); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#dropAccept(org.eclipse.swt.dnd.DropTargetEvent) */ @Override public void dropAccept(DropTargetEvent event_p) { _commonDropAdapter.dropAccept(event_p); } /** * {@link CommonDropAdapter#validateDrop(Object, int, TransferData)} */ @Override public boolean validateDrop(Object dropTarget_p, int dropOperation_p, TransferData transferData_p) { return _commonDropAdapter.validateDrop(dropTarget_p, dropOperation_p, transferData_p); } /** * */ @Override public Rectangle getBounds(Item item) { return _commonDropAdapter.getBounds(item); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#getCurrentLocation() */ @Override public int getCurrentLocation() { return _commonDropAdapter.getCurrentLocation(); } /** * @see org.eclipse.jface.viewers.ViewerDropAdapter#getCurrentOperation() */ @Override public int getCurrentOperation() { return _commonDropAdapter.getCurrentOperation(); } /** * /** * @see org.eclipse.ui.part.PluginDropAdapter#getCurrentTransfer() */ @Override public TransferData getCurrentTransfer() { return _commonDropAdapter.getCurrentTransfer(); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/drop/FactoryComponentInvocationDropAdapterAssistant.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9183 Text-content-md5: e3f84eebd66487fb7dfc0707ab3ba31c Text-content-sha1: 37865748b652be15a771519f629fbe16eee31421 Content-length: 9228 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.internal.drop; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.FactoryComponentInvocation; import org.eclipse.egf.model.ModelPackage; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.ProductionPlan; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.pde.EgfPdeActivator; import org.eclipse.egf.pde.plugin.command.IPluginChangesCommand; import org.eclipse.egf.pde.plugin.extension.IProductionPlanExtensionFactory; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.TransferData; import org.eclipse.ui.navigator.CommonDropAdapter; import org.eclipse.ui.navigator.CommonDropAdapterAssistant; import org.eclipse.ui.views.navigator.LocalSelectionTransfer; /** * Drop assistant for factory component invocation.
* Handles moving factory component invocations within the production plan.
* @author Guillaume Brocard */ public class FactoryComponentInvocationDropAdapterAssistant extends CommonDropAdapterAssistant { /** * @see org.eclipse.ui.navigator.CommonDropAdapterAssistant#handleDrop(org.eclipse.ui.navigator.CommonDropAdapter, org.eclipse.swt.dnd.DropTargetEvent, * java.lang.Object) */ @Override public IStatus handleDrop(CommonDropAdapter dropAdapter_p, DropTargetEvent dropTargetEvent_p, Object target_p) { IStatus result = Status.CANCEL_STATUS; // Get selected moving factory component invocations. List movingFcInvocations = handleSelection(); // Get the factory component invocation where the selected factory component invocations should be dropped. Object data = dropTargetEvent_p.item.getData(); if (data instanceof FactoryComponentInvocation) { FactoryComponentInvocation fcInvocationAtDropLocation = (FactoryComponentInvocation) data; FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(fcInvocationAtDropLocation); ProductionPlan productionPlan = ModelHelper.getProductionPlan(fcContainer); // Clone the model list, this one will be used to compute the new order later. List allFcInvocations = new ArrayList(productionPlan.getFactoryComponentInvocations()); // FactoryComponent configuration at drop location must not be in moving ones. if (!movingFcInvocations.contains(fcInvocationAtDropLocation)) { computeNewFcInvocationOrder(movingFcInvocations, dropTargetEvent_p.feedback, fcInvocationAtDropLocation, allFcInvocations); // Move factory component invocations. moveFcInvocations(productionPlan, allFcInvocations, fcContainer); result = Status.OK_STATUS; } } return result; } /** * @param allFcInvocations_p * @param feedback_p * @param fcInvocationAtDropLocation_p */ private void computeNewFcInvocationOrder(List movingFcInvocations_p, int feedback_p, FactoryComponentInvocation fcInvocationAtDropLocation_p, List allFcInvocations_p) { // Remove all moving factory component invocations first. allFcInvocations_p.removeAll(movingFcInvocations_p); // Get the position of the factory component at drop position. int acAtDropPosition = allFcInvocations_p.indexOf(fcInvocationAtDropLocation_p); int newPosition = -1; if (feedback_p == DND.FEEDBACK_INSERT_AFTER) { newPosition = acAtDropPosition + 1; } else if (feedback_p == DND.FEEDBACK_INSERT_BEFORE) { if (acAtDropPosition == 0) { newPosition = 0; } else { newPosition = acAtDropPosition; } } allFcInvocations_p.addAll(newPosition, movingFcInvocations_p); } /** * @param productionPlan_p * @param allfcInvocations_p * @param fcContainer_p */ private void moveFcInvocations(ProductionPlan productionPlan_p, List allfcInvocations_p, FactoryComponent fcContainer_p) { EgfPdeActivator solfaPdeActivator = EgfPdeActivator.getDefault(); IProductionPlanExtensionFactory productionPlanExtensionFactory = solfaPdeActivator.getProductionPlanExtensionHelper(); String productionPlanId = productionPlan_p.getId(); // Loop over the all factory component invocations to update the production plan extension in plug-in file. List unsetCommands = new ArrayList(1); List setCommands = new ArrayList(1); for (FactoryComponentInvocation fcInvocation : allfcInvocations_p) { // Unset the factory component invocation from its previous location. unsetCommands.add(productionPlanExtensionFactory.unsetFactoryComponentInvocation(productionPlanId, fcInvocation.getId())); // Set it again at the new location. setCommands.add(productionPlanExtensionFactory.setFactoryComponentInvocation(productionPlanId, fcInvocation.getId())); } // Get the bundle id. String pluginId = solfaPdeActivator.getPluginIdForFactoryComponent(fcContainer_p.getId()); // Build the command list with all unset commands + all set commands. List commands = new ArrayList(unsetCommands); commands.addAll(setCommands); // Perform the changes. solfaPdeActivator.getPluginChangesCommandRunner().performChangesOnPlugin(pluginId, commands); // Set the new factory component invocation order as the new list of the production plan. productionPlan_p.eSet(ModelPackage.Literals.PRODUCTION_PLAN__FACTORY_COMPONENT_INVOCATIONS, allfcInvocations_p); } /** * @see org.eclipse.ui.navigator.CommonDropAdapterAssistant#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData) */ @Override public IStatus validateDrop(Object target_p, int operation_p, TransferData transferType_p) { IStatus result = null; // Only, the move operation is taken into account. List selectedFcInvocations = handleSelection(); switch (operation_p) { case DND.DROP_MOVE: // Check the selection is the expected one. result = (null != selectedFcInvocations) ? Status.OK_STATUS : Status.CANCEL_STATUS; break; case DND.DROP_DEFAULT: case DND.DROP_COPY: default: result = Status.CANCEL_STATUS; break; } return result; } /** * Handle current selection. * @return The list of valid selected elements, null if the selected elements are not valid ones, or none is selected. */ @SuppressWarnings("unchecked") private List handleSelection() { List result = null; ISelection selection = LocalSelectionTransfer.getInstance().getSelection(); // Not a structured selection. if (!(selection instanceof IStructuredSelection)) { return result; } // Get selected elements. List selectedElements = ((IStructuredSelection) selection).toList(); // No selected element, stop here. if ((null == selectedElements) || selectedElements.isEmpty()) { return result; } // Make sure all selected elements are of FactoryComponentInvocation type and are contained by the same factory component. FactoryComponent fcContainer = null; boolean isInterrupted = false; for (Iterator iterator = selectedElements.iterator(); iterator.hasNext() && !isInterrupted;) { Object object = iterator.next(); if (!(object instanceof FactoryComponentInvocation)) { isInterrupted = true; } if (null == fcContainer) { // Handle first loop case. fcContainer = ModelHelper.getFactoryComponentContainer((NamedModelElementWithId) object); } else if (!fcContainer.equals(ModelHelper.getFactoryComponentContainer((NamedModelElementWithId) object))) { isInterrupted = true; } } // Retain selected factory component invocations. return result = (!isInterrupted) ? (List) selectedElements : null; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/drop/PatternLibraryDropAdapterAssistant.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6295 Text-content-md5: 9599eebcebfe9b463c7bb3f461c29802 Text-content-sha1: 1a21bc25fb475505a78d05c70cd033b6079ec73c Content-length: 6340 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.internal.drop; import java.util.List; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.egf.model.AbstractPatternElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.pattern.refactoring.move.MoveInfo; import org.eclipse.egf.pattern.refactoring.move.MoveProcessor; import org.eclipse.egf.pattern.refactoring.move.MoveRefactoring; import org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ltk.core.refactoring.CheckConditionsOperation; import org.eclipse.ltk.core.refactoring.CreateChangeOperation; import org.eclipse.ltk.core.refactoring.PerformChangeOperation; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.TransferData; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.navigator.CommonDropAdapter; import org.eclipse.ui.navigator.CommonDropAdapterAssistant; import org.eclipse.ui.views.navigator.LocalSelectionTransfer; /** * Drop assistant for pattern libraries.
* Handles that a set of patterns (including a single one) or an entire library can be moved to a receiving one.
* Delegates to the pattern refactoring mechanism to do so. * @author Guillaume Brocard */ public class PatternLibraryDropAdapterAssistant extends CommonDropAdapterAssistant { /** * Currently in use move refactoring. */ private MoveRefactoring _moveRefactoring; /** * @see org.eclipse.ui.navigator.CommonDropAdapterAssistant#handleDrop(org.eclipse.ui.navigator.CommonDropAdapter, org.eclipse.swt.dnd.DropTargetEvent, * java.lang.Object) */ @Override public IStatus handleDrop(CommonDropAdapter dropAdapter_p, DropTargetEvent dropTargetEvent_p, Object target_p) { // Create change operation. CreateChangeOperation changeOperation = new CreateChangeOperation(_moveRefactoring); // Create perform operation. PerformChangeOperation performOperation = new PerformChangeOperation(changeOperation); // Create resulting status. IStatus resultingStatus = Status.CANCEL_STATUS; // Execute operation. WorkbenchRunnableAdapter runnableAdapter = new WorkbenchRunnableAdapter(performOperation, ResourcesPlugin.getWorkspace().getRoot()); try { PlatformUI.getWorkbench().getProgressService().run(false, false, runnableAdapter); resultingStatus = Status.OK_STATUS; } catch (Exception e_p) { // Already stated as canceled. } _moveRefactoring = null; return resultingStatus; } /** * @see org.eclipse.ui.navigator.CommonDropAdapterAssistant#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData) */ @Override public IStatus validateDrop(Object target_p, int operation_p, TransferData transferType_p) { List selectedPatternElements = handleSelection(); // Create resulting status. IStatus resultingStatus = Status.CANCEL_STATUS; // Precondition. if (null == selectedPatternElements) { return resultingStatus; } // Create move information. MoveInfo moveInfo = new MoveInfo(); // Since this drop adapter is registered for PatternLibrary and PatternViewpoint types only, there should be no problem here. NamedModelElementWithId target = (NamedModelElementWithId) target_p; moveInfo.setDestinationElement(target); moveInfo.addElementsToMove(selectedPatternElements); // Create move processor. MoveProcessor processor = new MoveProcessor(moveInfo); // Create refactoring. _moveRefactoring = new MoveRefactoring(processor); // Create check conditions operation. CheckConditionsOperation checkOperation = new CheckConditionsOperation(_moveRefactoring, CheckConditionsOperation.ALL_CONDITIONS); // Execute operation. WorkbenchRunnableAdapter runnableAdapter = new WorkbenchRunnableAdapter(checkOperation, ResourcesPlugin.getWorkspace().getRoot()); try { runnableAdapter.run(new NullProgressMonitor()); RefactoringStatus status = checkOperation.getStatus(); if (status.isOK()) { resultingStatus = Status.OK_STATUS; } } catch (Exception e_p) { // Already stated as canceled. } return resultingStatus; } /** * Handle current selection. * @return The list of valid selected elements, null if the selected elements are not valid ones, or none is selected. */ @SuppressWarnings("unchecked") private List handleSelection() { List result = null; ISelection selection = LocalSelectionTransfer.getInstance().getSelection(); // Not a structured selection. if (!(selection instanceof IStructuredSelection)) { return result; } // Get selected elements. List selectedElements = ((IStructuredSelection) selection).toList(); // No selected element, stop here. if ((null == selectedElements) || selectedElements.isEmpty()) { return result; } // Make sure all selected elements are of pattern element type. for (Object object : selectedElements) { if (!(object instanceof AbstractPatternElement)) { return result; } } // Retain selected pattern elements. result = (List) selectedElements; return result; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/navigator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/navigator/PatternLinkHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2409 Text-content-md5: b8f0621cc8fdfd20f38da1bd7f4527cf Text-content-sha1: 1b565d409924be1be2d38a115769489a41054e71 Content-length: 2454 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.internal.navigator; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.pattern.ui.editor.PatternEditorHelper; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.navigator.ILinkHelper; /** * Link helper to link a pattern editor with its pattern model in the FC views. * @author Guillaume Brocard */ public class PatternLinkHelper implements ILinkHelper { /** * @see org.eclipse.ui.navigator.ILinkHelper#activateEditor(org.eclipse.ui.IWorkbenchPage, org.eclipse.jface.viewers.IStructuredSelection) */ public void activateEditor(IWorkbenchPage page_p, IStructuredSelection selection_p) { // Preconditions. if ((null == page_p) || (null == selection_p) || (selection_p.isEmpty())) { return; } Object element = selection_p.getFirstElement(); if (element instanceof PatternModel) { IEditorPart part = PatternEditorHelper.isPatternEditorOpen((PatternModel) element); if (null != part) { page_p.activate(part); } } } /** * @see org.eclipse.ui.navigator.ILinkHelper#findSelection(org.eclipse.ui.IEditorInput) */ public IStructuredSelection findSelection(IEditorInput anInput_p) { IStructuredSelection result = StructuredSelection.EMPTY; // Preconditions. if (null == anInput_p) { return result; } // Try to get its pattern model. PatternModel patternModel = (PatternModel) anInput_p.getAdapter(PatternModel.class); if (null != patternModel) { result = new StructuredSelection(patternModel); } return result; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/util Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/util/ActionPatternEditorHelper.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1897 Text-content-md5: 416a6dcffa1babb08f2747bbb9541d4a Text-content-sha1: 826035d4fe8f0c7b523820aafb31c91a76390e8f Content-length: 1942 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.internal.util; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.pattern.ui.editor.PatternEditorHelper; import org.eclipse.ui.IEditorPart; /** * A pattern editor helper dedicated to actions.
* For a more general helper, see {@link PatternEditorHelper}. * @author Guillaume Brocard */ public class ActionPatternEditorHelper { /** * The unique pattern editor listener used to monitor closing event for all open pattern editors. */ private static ClosePatternEditorListener _patternEditorListener; /** * Add given pattern editor part and its pattern model to the listener that listens to pattern editor closing event. * @param patternEditorPart_p * @param pattern_p */ public static void addPatternEditorToListener(IEditorPart patternEditorPart_p, PatternModel pattern_p) { // Lazy pattern creation. if (null == _patternEditorListener) { // Create it. _patternEditorListener = new ClosePatternEditorListener(); // Add it to the active workbench page. WorkbenchHelper.addPartListener(_patternEditorListener); } _patternEditorListener.addPatternEditorToMonitor(patternEditorPart_p, pattern_p); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/internal/util/ClosePatternEditorListener.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3054 Text-content-md5: b81b9f7a0d257d3997b270c8721edf90 Text-content-sha1: 765aa5a2a4672feb59a8eb3ca638be26655ad2fe Content-length: 3099 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.internal.util; import java.util.HashMap; import java.util.Map; import org.eclipse.egf.model.PatternModel; import org.eclipse.egf.model.internal.data.ModelElement; import org.eclipse.egf.pattern.ui.editor.PatternEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IPartListener; import org.eclipse.ui.IWorkbenchPart; /** * Class for listening for pattern editor closing event. * @author Guillaume Brocard */ class ClosePatternEditorListener implements IPartListener { /** * Monitored open pattern editors. */ private Map _handledPatternEditors; /** * Add given pattern editor and its pattern model in the list of pattern editors to monitor. * @param patternEditorPart_p * @param pattern_p */ public void addPatternEditorToMonitor(IEditorPart patternEditorPart_p, PatternModel pattern_p) { // Lazy creation pattern. if (null == _handledPatternEditors) { _handledPatternEditors = new HashMap(1); } _handledPatternEditors.put(patternEditorPart_p, pattern_p); } /** * @see org.eclipse.ui.IPartListener#partClosed(org.eclipse.ui.IWorkbenchPart) */ public void partClosed(IWorkbenchPart part_p) { // Check if given part is one of our monitored pattern editors : // Try to remove the given part, and get the underlying pattern model. PatternModel pattern = _handledPatternEditors.remove(part_p); if (null != pattern) { // Given part is one of our pattern editors. // Reset the editor input on retrieved pattern model. ((ModelElement) pattern).setAdapter(PatternEditorInput.class, null); } } /** * @see org.eclipse.ui.IPartListener#partActivated(org.eclipse.ui.IWorkbenchPart) */ public void partActivated(IWorkbenchPart part_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener#partBroughtToTop(org.eclipse.ui.IWorkbenchPart) */ public void partBroughtToTop(IWorkbenchPart part_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener#partDeactivated(org.eclipse.ui.IWorkbenchPart) */ public void partDeactivated(IWorkbenchPart part_p) { // Do nothing. } /** * @see org.eclipse.ui.IPartListener#partOpened(org.eclipse.ui.IWorkbenchPart) */ public void partOpened(IWorkbenchPart part_p) { // Do nothing. } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/messages.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4204 Text-content-md5: 21630313718301ee67fefd9477fc80cc Text-content-sha1: e825f7c89215f63000e759306220d143e237da61 Content-length: 4249 K 13 svn:mime-type V 10 text/plain PROPS-END ############################################################################### # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ############################################################################### OpenModelElementAction_Title=Open... ExplorerActionProvider_NewMenuItem_Title=New # Common Actions EditModelElementAction_Title=Edit... EditModelElementAction_Tooltip=Open a wizard to edit the selected element. DeleteAction_Title=Delete DeleteAction_Tooltip=Delete the selected element. ExecuteFactoryAction_Title=Execute ExecuteFactoryAction_Tooltip=Execute the factory. ExecuteFactoryAction_ValidationErrorDialog_Title=Factory Component Execution Problems ProducePatternElementAction_Title=Produce ProducePatternElementAction_Tooltip=Produce the selected pattern element. # Factory component invocation action messages CreateFactoryComponentInvocationAction_Title=Factory Component Invocation CreateFactoryComponentInvocationAction_Tooltip=Create a new factory component invocation. DeleteFactoryComponentInvocationAction_Message=factory component invocation CreateTaskFactoryHolderAction_Title=Task Factory CreateTaskFactoryHolderAction_Tooltip=Create a new task factory. DeleteTaskFactoryHolderAction_Message=task factory # Contract element messages CreateContractElementAction_Title=Contract element CreateContractElementAction_Tooltip=Create a new contract element. DeleteContractElementAction_Message=contract element # Domain element messages CreateDomainAction_Title=Domain CreateDomainAction_Tooltip=Create a new domain (ecore file). DeleteDomainAction_Message=domain # Context element messages CreateContextAction_Title=Context CreateContextAction_Tooltip=Create a new context. DeleteContextAction_Message=context # ContextElement messages CreateContextElementAction_Title=Context element CreateContextElementAction_Tooltip=Create a new context element. DeleteContextElementAction_Message=context element # Pattern Library messages CreatePatternLibraryAction_Title=Pattern Library CreatePatternLibraryAction_Tooltip=Create a new pattern library. DeletePatternLibraryAction_Message=pattern library CleanPatternLibraryActionConfirmDialog_Message=Are you sure you want to clean all patterns generated structures for selected library? # Pattern messages CreatePatternAction_Title=Pattern CreatePatternAction_Tooltip=Create a new pattern. DeletePatternAction_Message=pattern CleanPatternAction_Title=Clean CleanPatternAction_Tooltip=Clean selected pattern element generated structures. CleanPatternActionConfirmDialog_Title=Confirm clean CleanPatternActionConfirmDialog_Message=Are you sure you want to clean pattern generated structures? # Mapping messages CreateMappingAction_Title=Mapping CreateMappingAction_Tooltip=Create a new mapping. DeleteMappingAction_Message=mapping # Convert Plug-in in a Factory Component ConvertPlugin2FactoryComponent_Title=Convert {0} project to a Factory Component ConvertPlugin2FactoryComponent_ErrorDialog_Message=This plug-in project has a name ''{0}'' different from its plug-in id ''{1}''.\nFactory components must have a plug-in id equals to the project name. # Validation messages ValidateElementAction_Title=Validate ValidateElementAction_Tooltip=Validate selected element. ValidateElementAction_ValidationReportDialog_Title=Validation {0} ValidateElementAction_ValidationReportDialog_Title_Info=Information ValidateElementAction_ValidationReportDialog_Title_Problem=Problems ValidateElementAction_NoError_Message=Validation completed successfully. ValidateElementAction_Error_Overall_Message=Problems encountered during validation. ValidateElementAction_Error_Detailed_Message=Diagnosis of selected element ''{0}'' # Factory component views messages FactoryComponentView_PatternFilterText_Title=Enter FC name or pattern (*, ?): Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/perspective Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/perspective/EgfPerspective.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 5419 Text-content-md5: 573a29d198732f32f47f5389c1c4691a Text-content-sha1: 72c481ab89d6cbc7c8a64a49dda5d60aedbdb44f Content-length: 5464 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.perspective; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.egf.core.ui.workbench.views.explorer.FactoryComponentProjectExplorer; import org.eclipse.egf.core.ui.workbench.views.fc.InstalledFactoryComponentView; import org.eclipse.jdt.ui.JavaUI; import org.eclipse.ui.IFolderLayout; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IPerspectiveFactory; import org.eclipse.ui.progress.IProgressConstants; public class EgfPerspective implements IPerspectiveFactory { /** * Identifier to the MDSoFA perspective. */ public static final String PERSPECTIVE_ID = "org.eclipse.egf.core.ui.workbench.perspective"; //$NON-NLS-1$ /** * Tag for the bottom center editor folder. */ private static final String BOTTOM_CENTER_EDITOR = "bottom"; //$NON-NLS-1$ /** * Tag for the top left folder. */ private static final String TOP_LEFT = "topLeft"; //$NON-NLS-1$ /** * Tag for the bottom left folder. */ private static final String BOTTOM_LEFT = "bottomLeft"; //$NON-NLS-1$ /** * @see org.eclipse.ui.IPerspectiveFactory#createInitialLayout(org.eclipse.ui.IPageLayout) */ public void createInitialLayout(IPageLayout layout_p) { String editorArea = layout_p.getEditorArea(); // Top left folder. IFolderLayout topLeftFolder = layout_p.createFolder(TOP_LEFT, IPageLayout.LEFT, 0.25f, editorArea); topLeftFolder.addView(JavaUI.ID_PACKAGES); topLeftFolder.addView(JavaUI.ID_TYPE_HIERARCHY); topLeftFolder.addPlaceholder(IPageLayout.ID_RES_NAV); // Bottom left folder. IFolderLayout bottomLeftFolderFolder = layout_p.createFolder(BOTTOM_LEFT, IPageLayout.BOTTOM, 0.5f, TOP_LEFT); bottomLeftFolderFolder.addView(IPageLayout.ID_OUTLINE); bottomLeftFolderFolder.addView(IPageLayout.ID_PROP_SHEET); // Bottom center folder. IFolderLayout bottomCenterFolder = layout_p.createFolder(BOTTOM_CENTER_EDITOR, IPageLayout.BOTTOM, 0.66f, editorArea); // MDSofa Views. bottomCenterFolder.addView(FactoryComponentProjectExplorer.VIEW_ID); bottomCenterFolder.addView(InstalledFactoryComponentView.VIEW_ID); // Classic views. bottomCenterFolder.addView(IPageLayout.ID_PROBLEM_VIEW); bottomCenterFolder.addView(JavaUI.ID_JAVADOC_VIEW); bottomCenterFolder.addPlaceholder(IPageLayout.ID_BOOKMARKS); bottomCenterFolder.addPlaceholder(IProgressConstants.PROGRESS_VIEW_ID); // Views - java & MDSoFa layout_p.addShowViewShortcut(JavaUI.ID_PACKAGES); layout_p.addShowViewShortcut(JavaUI.ID_TYPE_HIERARCHY); layout_p.addShowViewShortcut(FactoryComponentProjectExplorer.VIEW_ID); layout_p.addShowViewShortcut(InstalledFactoryComponentView.VIEW_ID); // views - standard workbench layout_p.addShowViewShortcut(IPageLayout.ID_OUTLINE); layout_p.addShowViewShortcut(IPageLayout.ID_PROBLEM_VIEW); layout_p.addShowViewShortcut(IPageLayout.ID_RES_NAV); layout_p.addShowViewShortcut(IPageLayout.ID_TASK_LIST); layout_p.addShowViewShortcut(IProgressConstants.PROGRESS_VIEW_ID); // New actions - Java & MDSoFa project creation wizard layout_p.addNewWizardShortcut("org.eclipse.egf.core.ui.workbench.NewAssetProjectWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.JavaProjectWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.NewPackageCreationWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.NewClassCreationWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.NewEnumCreationWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard"); //$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.ui.wizards.new.folder");//$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.ui.wizards.new.file");//$NON-NLS-1$ layout_p.addNewWizardShortcut("org.eclipse.ui.editors.wizards.UntitledTextFileWizard");//$NON-NLS-1$ // Action sets. layout_p.addActionSet(IDebugUIConstants.LAUNCH_ACTION_SET); layout_p.addActionSet(JavaUI.ID_ACTION_SET); layout_p.addActionSet(JavaUI.ID_ELEMENT_CREATION_ACTION_SET); layout_p.addActionSet(IPageLayout.ID_NAVIGATE_ACTION_SET); // Add perspectives shortcuts. layout_p.addPerspectiveShortcut(PERSPECTIVE_ID); layout_p.addPerspectiveShortcut(JavaUI.ID_PERSPECTIVE); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/explorer Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentProjectExplorer.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 17494 Text-content-md5: 30b3c9545b654e93450853a97c84dac7 Text-content-sha1: 4d11850b4a72e46372f87bfd42c932e5451ee70c Content-length: 17539 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.views.explorer; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.egf.common.helper.MiscHelper; import org.eclipse.egf.common.ui.helper.ViewerHelper; import org.eclipse.egf.common.ui.helper.WorkbenchHelper; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet; import org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSetManager; import org.eclipse.egf.core.ui.data.listener.IWorkingSetListener; import org.eclipse.egf.core.ui.workbench.internal.drop.DelegatingCommonDropAdapter; import org.eclipse.egf.core.ui.workbench.views.fc.AbstractFactoryComponentView; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.egf.model.ContractElement; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.egf.model.data.helper.ModelHelper; import org.eclipse.egf.model.internal.data.ModelElement; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.jdt.internal.ui.JavaPlugin; import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IPropertyListener; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.navigator.CommonDragAdapter; import org.eclipse.ui.navigator.CommonNavigator; import org.eclipse.ui.navigator.CommonViewer; import org.eclipse.ui.navigator.INavigatorContentService; /** * This class provides the IViewPart for the Factory Component project explorer view in the Eclipse workbench.
* This view display all factory components under development in the end-user workspace. * @author Guillaume Brocard */ public class FactoryComponentProjectExplorer extends AbstractFactoryComponentView { private static final String TAG_ROOT_MODE = "rootMode"; //$NON-NLS-1$ /** * Identifier of the factory component project explorer view (declared in related plugin.xml). */ public static final String VIEW_ID = "org.eclipse.egf.core.ui.workbench.views.explorer.assetProjectExplorer"; //$NON-NLS-1$ /** * Identifier of the factory component project explorer view content provider (declared in related plugin.xml). */ private static final String CONTENT_PROVIDER_ID = "org.eclipse.egf.core.ui.workbench.views.explorer.assetProjectExplorerContent"; //$NON-NLS-1$ /** * Working set listener used to be notified when changes occurs to workspace working sets. */ private IWorkingSetListener _workingSetListener; /** * The factory component working set manager.
* Only, not null when the working set mode is active at view opening time. */ private FactoryComponentWorkingSetManager _fcWorkingSetManager; /** * Selection listener used to notify the package explorer to select the project that contains the new selection. */ private ISelectionChangedListener _selectionChangedListener; /** * @see org.eclipse.ui.navigator.CommonNavigator#getInitialInput() */ @Override protected IAdaptable getInitialInput() { return computeInput(isProjectModeSelected()); } /** * Compute the common viewer input depending on specified display mode. * @return a not null adaptable object. */ protected IAdaptable computeInput(boolean isProjectModeSelected_p) { IAdaptable input = null; if (isProjectModeSelected_p) { // Displays all factory components at the same level. input = EgfUiActivator.getDefault().getFactoryComponentInWorkspaceInput(); } else { // Get the factory component working set manager. if (null == _fcWorkingSetManager) { _fcWorkingSetManager = (FactoryComponentWorkingSetManager) EgfUiActivator.getDefault().getWorkingSetsInput(); } // Initialize listener to monitor JDT working sets. initializeWorkingSetListener(); // Use it as initial input. input = _fcWorkingSetManager; // Update the factory component working set manager from Package Explorer in an asynchExec way to make sure FactoryComponentWorkingSetManager got its children before the update // operation. getViewSite().getShell().getDisplay().asyncExec(new Runnable() { /** * @see java.lang.Runnable#run() */ @SuppressWarnings("synthetic-access") public void run() { _workingSetListener.workingSetModelChanged(null); } }); } return input; } /** * Whether or not the view should present the FC directly or beneath working sets. * @return true means FCs are presented directly without working sets. */ private boolean isProjectModeSelected() { IDialogSettings dialogSettingsSection = JavaPlugin.getDefault().getDialogSettingsSection(PackageExplorerPart.class.getName()); return (PackageExplorerPart.PROJECTS_AS_ROOTS == dialogSettingsSection.getInt(TAG_ROOT_MODE)); } /** * @see org.eclipse.egf.core.ui.workbench.views.fc.AbstractFactoryComponentView#getContentProviderId() */ @Override protected String getContentProviderId() { return CONTENT_PROVIDER_ID; } /** * @see org.eclipse.egf.core.ui.workbench.views.fc.AbstractFactoryComponentView#getEditingDomain() */ @Override protected AdapterFactoryEditingDomain getEditingDomain() { return EgfUiActivator.getDefault().getEditingDomain(); } /** * @see org.eclipse.egf.core.ui.workbench.views.fc.AbstractFactoryComponentView#handleAffectedObjects(java.util.Collection) */ @Override protected void handleAffectedObjects(Collection affectedObjects_p) { super.handleAffectedObjects(affectedObjects_p); // Force a viewer refresh for modification on ContractElement model element. // Indeed, context elements can reference a contract element that the name is changed. // Context elements matching a contract element use the contract element name as label. // Hence, force a refresh to update context element. boolean forceRefresh = false; for (Iterator iterator = affectedObjects_p.iterator(); iterator.hasNext() && !forceRefresh;) { Object affectedObject = iterator.next(); if ((affectedObject instanceof ContractElement) || (affectedObject instanceof FactoryComponent)) { forceRefresh = true; } } if (forceRefresh) { ViewerHelper.refresh(getCommonViewer()); } // update Undo & Redo actions state. getNavigatorActionService().updateActionBars(); } /** * @see org.eclipse.ui.navigator.CommonNavigator#createCommonViewer(org.eclipse.swt.widgets.Composite) */ @Override protected CommonViewer createCommonViewer(Composite parent_p) { // To workaround DND feedbacks issues(bug #150688), we override the common viewer. CommonViewer viewer = new CommonViewer(getViewSite().getId(), parent_p, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL) { /** * @see org.eclipse.ui.navigator.CommonViewer#initDragAndDrop() */ @Override protected void initDragAndDrop() { /* Handle Drag and Drop */ int operations = DND.DROP_COPY | DND.DROP_MOVE; INavigatorContentService contentService = getNavigatorContentService(); CommonDragAdapter dragAdapter = new CommonDragAdapter(contentService, this); addDragSupport(operations, dragAdapter.getSupportedDragTransfers(), dragAdapter); DelegatingCommonDropAdapter dropAdapter = new DelegatingCommonDropAdapter(contentService, this); addDropSupport(operations, dropAdapter.getSupportedDropTransfers(), dropAdapter); } }; initListeners(viewer); viewer.getNavigatorContentService().restoreState(getMemento()); return viewer; } /** * @see org.eclipse.ui.navigator.CommonNavigator#initListeners(org.eclipse.jface.viewers.TreeViewer) */ @Override protected void initListeners(TreeViewer viewer_p) { super.initListeners(viewer_p); _selectionChangedListener = new ISelectionChangedListener() { /** * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event_p) { // Preconditions if ((null == event_p) || !isLinkingEnabled()) { return; } // Get the selection from event. ISelection selection = event_p.getSelection(); // Ensure something is selected. if (!selection.isEmpty()) { IStructuredSelection structuredSelection = (IStructuredSelection) selection; // Get the first selected element. Object element = structuredSelection.getFirstElement(); // If it is a model element, let's continue. if (element instanceof NamedModelElementWithId) { NamedModelElementWithId namedModelElement = (NamedModelElementWithId) element; // Get its factory component container. FactoryComponent fcContainer = ModelHelper.getFactoryComponentContainer(namedModelElement); // Get the hosting project. IProject hostingProject = (IProject) ((ModelElement) fcContainer).getAdapter(IProject.class); if (null != hostingProject) { PackageExplorerPart packageExplorerView = WorkbenchHelper.getPackageExplorerView(); // Ask the package explorer to select and reveal hosting project. if (null != packageExplorerView) { packageExplorerView.selectAndReveal(hostingProject); } } } } } }; viewer_p.addPostSelectionChangedListener(_selectionChangedListener); // Add a property change listener to be notified when isLinkingEnabled property changes. addPropertyListener(new IPropertyListener() { /** * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int) */ @SuppressWarnings("synthetic-access") public void propertyChanged(Object source_p, int propId_p) { switch (propId_p) { case CommonNavigator.IS_LINKING_ENABLED_PROPERTY: CommonViewer commonViewer = getCommonViewer(); // Ensure common viewer is created. if (null != commonViewer) { Control tree = commonViewer.getControl(); // Ensure tree is not disposed. if ((null != tree) && !tree.isDisposed()) { _selectionChangedListener.selectionChanged(new SelectionChangedEvent(commonViewer, commonViewer.getSelection())); } } } } }); } /** * Initialize and register listeners to monitor working set. */ protected void initializeWorkingSetListener() { if (null == _workingSetListener) { _workingSetListener = new IWorkingSetListener() { /** * @see org.eclipse.egf.core.ui.data.listener.IWorkingSetListener#workingSetAdded(org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet, * org.eclipse.jface.util.PropertyChangeEvent) */ public void workingSetAdded(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p) { if (null != workingSet_p) { getCommonViewer().add(null, workingSet_p); } } /** * @see org.eclipse.egf.core.ui.data.listener.IWorkingSetListener#workingSetContentChanged(org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet, * org.eclipse.jface.util.PropertyChangeEvent) */ public void workingSetContentChanged(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p) { if (null != workingSet_p) { // Refresh due to structural changes. ViewerHelper.refresh(getCommonViewer()); } } /** * @see org.eclipse.egf.core.ui.data.listener.IWorkingSetListener#workingSetLabelChanged(org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet, * org.eclipse.jface.util.PropertyChangeEvent) */ public void workingSetLabelChanged(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p) { if (null != workingSet_p) { // Update element's presentation. getCommonViewer().update(workingSet_p, null); } } /** * @see org.eclipse.egf.core.ui.data.listener.IWorkingSetListener#workingSetNameChanged(org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet, * org.eclipse.jface.util.PropertyChangeEvent) */ public void workingSetNameChanged(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p) { workingSetLabelChanged(workingSet_p, event_p); } /** * @see org.eclipse.egf.core.ui.data.listener.IWorkingSetListener#workingSetRemoved(org.eclipse.egf.core.ui.data.explorer.FactoryComponentWorkingSet, * org.eclipse.jface.util.PropertyChangeEvent) */ public void workingSetRemoved(FactoryComponentWorkingSet workingSet_p, PropertyChangeEvent event_p) { // A working set is removed, the contained projects are now handled by another one, hence refresh the tree viewer from the root. ViewerHelper.refresh(getCommonViewer()); } /** * @see org.eclipse.egf.core.ui.data.listener.IWorkingSetListener#workingSetModelChanged(org.eclipse.jface.util.PropertyChangeEvent) */ @SuppressWarnings("synthetic-access") public void workingSetModelChanged(PropertyChangeEvent event_p) { List packageExplorerWorkingSets = getPackageExplorerWorkingSets(); if (!packageExplorerWorkingSets.isEmpty()) { // Update the factory component working set manager. _fcWorkingSetManager.updatePublicWorkingSetsOrder(packageExplorerWorkingSets); // Refresh the viewer. ViewerHelper.refresh(getCommonViewer()); } } }; // Register the creates listener. getFactoryComponentWorkingSetManager().addWorkingSetListener(_workingSetListener); } } /** * Return the active working sets from the Package Explorer. * @return Empty list if the Package Explorer is unreachable. */ protected List getPackageExplorerWorkingSets() { List activeWorkingSets = Collections.emptyList(); PackageExplorerPart packageExplorerView = WorkbenchHelper.getPackageExplorerView(); // Ask the package explorer the new active working sets order. if (null != packageExplorerView) { IWorkingSet[] activeWorkingSetArray = packageExplorerView.getWorkingSetModel().getActiveWorkingSets(); activeWorkingSets = MiscHelper.asList(activeWorkingSetArray); } return activeWorkingSets; } /** * @see org.eclipse.ui.navigator.CommonNavigator#dispose() */ @Override public void dispose() { super.dispose(); if (null != _workingSetListener) { // Remove from the working set manager as listener. _fcWorkingSetManager.removeWorkingSetListener(_workingSetListener); // Dispose references. _workingSetListener = null; _fcWorkingSetManager = null; } } /** * Get the factory component working set manager. * @return null if the viewer displays directly the FCs. */ protected FactoryComponentWorkingSetManager getFactoryComponentWorkingSetManager() { return _fcWorkingSetManager; } /** * Ask this view to refresh its content input. */ public void updateInput(boolean isProjectModeSelected_p) { // Compute the new input. Do not use the getInitial method because it is based on a property that is not already set when we are called. Object newInput = computeInput(isProjectModeSelected_p); // Set it. getCommonViewer().setInput(newInput); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/explorer/FactoryComponentWorkingSetSorter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1412 Text-content-md5: 1a09d01c6dd7af7447b8ceeecc48faa8 Text-content-sha1: 74ab17ffffa8372010144583d6109c2788cd7bfd Content-length: 1457 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.views.explorer; import java.text.Collator; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; /** * @author Guillaume Brocard */ public class FactoryComponentWorkingSetSorter extends ViewerSorter { /** * Constructor. */ public FactoryComponentWorkingSetSorter() { // Do nothing. } /** * Constructor. * @param collator_p */ public FactoryComponentWorkingSetSorter(Collator collator_p) { super(collator_p); } /** * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public int compare(Viewer viewer_p, Object e1_p, Object e2_p) { // Do not sort given objects. return 0; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/fc Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/fc/AbstractFactoryComponentView.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 19315 Text-content-md5: 1e52cebc211a29950dac9252aa5f397c Text-content-sha1: 2f81f17599ce54e60cb3b0d5a9fa0ea709d2b7b8 Content-length: 19360 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.views.fc; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.util.Collection; import java.util.EventObject; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.egf.common.ui.helper.ViewerHelper; import org.eclipse.egf.core.ui.viewers.AbstractAdaptedModelElementContentProvider; import org.eclipse.egf.core.ui.workbench.EgfWorkbenchActivator; import org.eclipse.egf.core.ui.workbench.Messages; import org.eclipse.egf.model.FactoryComponent; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.CommandStack; import org.eclipse.emf.common.command.CommandStackListener; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IMemento; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.WorkbenchException; import org.eclipse.ui.XMLMemento; import org.eclipse.ui.dialogs.PatternFilter; import org.eclipse.ui.navigator.CommonNavigator; import org.eclipse.ui.navigator.CommonViewer; import org.eclipse.ui.navigator.INavigatorContentExtension; import org.eclipse.ui.navigator.INavigatorContentService; import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.ui.views.properties.IPropertySourceProvider; import org.eclipse.ui.views.properties.PropertySheetPage; /** * Base class to implement {@link IViewPart} that display model element objects. * @author fournier */ public abstract class AbstractFactoryComponentView extends CommonNavigator { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(AbstractFactoryComponentView.class.getPackage().getName()); /** * Memento persistence tag. */ private static final String TAG_MEMENTO = "memento"; //$NON-NLS-1$ /** * Pattern filter persistence tag. */ private static final String TAG_PATTERN_FILTER = "patternFilter"; //$NON-NLS-1$ /** * View memento. */ private IMemento _memento; /** * Dialog settings for this view. */ private IDialogSettings _viewSettings; /** * This is the property sheet page. */ private PropertySheetPage _propertySheetPage; /** * This command stack listener is used to refresh the property sheet page and the tree viewer when a command is performed. */ private CommandStackListener _commandStackListener; /** * Text field where the end-user enters a pattern to filter displayed FCs. */ private Text _filterText; /** * Pattern filter used to apply pattern entered by the end-user on the common viewer. */ private PatternFilter _patternFilter; /** * Holds the entered pattern filter. Necessary to be able to persist it when text widget is disposed. */ private String _enteredPatternFilter; /** * Constructor. */ protected AbstractFactoryComponentView() { // Get the dialog settings section for this view. _viewSettings = getDialogSettingsSection(); // Create a pattern filter. _patternFilter = new PatternFilter() { /** * @see org.eclipse.ui.dialogs.PatternFilter#isParentMatch(org.eclipse.jface.viewers.Viewer, java.lang.Object) */ @Override protected boolean isParentMatch(Viewer viewer_p, Object element_p) { return false; } /** * @see org.eclipse.ui.dialogs.PatternFilter#isLeafMatch(org.eclipse.jface.viewers.Viewer, java.lang.Object) */ @Override protected boolean isLeafMatch(Viewer viewer_p, Object element_p) { boolean result = true; // Apply pattern matching for factory components only. if (element_p instanceof FactoryComponent) { result = super.isLeafMatch(viewer_p, element_p); } return result; } }; // Create a listener to update the selection and the property sheet page. _commandStackListener = new CommandStackListener() { public void commandStackChanged(final EventObject event_P) { final Command mostRecentCommand = ((CommandStack) event_P.getSource()).getMostRecentCommand(); getViewSite().getShell().getDisplay().asyncExec(new Runnable() { @SuppressWarnings("synthetic-access") public void run() { // Try to select the affected objects. if (null != mostRecentCommand) { Collection affectedObjects = mostRecentCommand.getAffectedObjects(); // Handle affected Objects. handleAffectedObjects(affectedObjects); } // Refresh the property sheet page if (null != _propertySheetPage) { _propertySheetPage.refresh(); } } }); } }; // Register this command stack listener. getCommandStack().addCommandStackListener(_commandStackListener); } /** * Get dialog settings for this view. * @return */ private IDialogSettings getDialogSettingsSection() { IDialogSettings dialogSettings = EgfWorkbenchActivator.getDefault().getDialogSettings(); String sectionName = getClass().getName(); // Get the dialog setting for this view. IDialogSettings section = dialogSettings.getSection(sectionName); if (null == section) { section = dialogSettings.addNewSection(sectionName); } return section; } /** * Handle affected objects.
* Default behavior is to set selection to viewer for given affected objects. * @param affectedObjects_p */ protected void handleAffectedObjects(Collection affectedObjects_p) { // Set the selection on affected objects. setSelectionToViewer(affectedObjects_p); } /** * Return the adapter factory editing domain for this view. * @return a not null instance. */ protected abstract AdapterFactoryEditingDomain getEditingDomain(); /** * Return the command stack for this view. * @return a not null instance. */ protected CommandStack getCommandStack() { return getEditingDomain().getCommandStack(); } /** * @see org.eclipse.ui.navigator.CommonNavigator#getAdapter(java.lang.Class) */ @SuppressWarnings("unchecked") @Override public Object getAdapter(Class adapter_p) { Object result = null; // Handles the property sheet view. if (adapter_p == IPropertySheetPage.class) { result = getPropertySheetPage(); } else { result = super.getAdapter(adapter_p); } return result; } /** * Return the content provider identifier. * @return */ protected abstract String getContentProviderId(); /** * This accesses a cached version of the property sheet. */ public IPropertySheetPage getPropertySheetPage() { if (_propertySheetPage == null) { AdapterFactoryEditingDomain editingDomain = getEditingDomain(); _propertySheetPage = new ExtendedPropertySheetPage(editingDomain) { /** * @see org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage#setSelectionToViewer(java.util.List) */ @Override public void setSelectionToViewer(List selection_p) { AbstractFactoryComponentView.this.setSelectionToViewer(selection_p); AbstractFactoryComponentView.this.setFocus(); } /** * @see org.eclipse.ui.views.properties.PropertySheetPage#setActionBars(org.eclipse.ui.IActionBars) */ @Override public void setActionBars(IActionBars actionBars_p) { super.setActionBars(actionBars_p); // TODO hookGlobalActions(actionBars_p); } }; // Get the EMF adapter content provider from the view content provider. ITreeContentProvider contentProvider = getContentProvider(); IPropertySourceProvider propertySourceProvider = null; if (contentProvider instanceof AbstractAdaptedModelElementContentProvider) { propertySourceProvider = ((AbstractAdaptedModelElementContentProvider) contentProvider).getAdapterFactoryContentProvider(); } else { StringBuilder loggerMessage = new StringBuilder("AbstractFactoryComponentView.getPropertySheetPage(..) _ "); //$NON-NLS-1$ loggerMessage.append("no content provider found for current view!!!"); //$NON-NLS-1$ __logger.error(loggerMessage.toString()); } // Set it. _propertySheetPage.setPropertySourceProvider(propertySourceProvider); } return _propertySheetPage; } /** * Return the content provider used by this view. * @return */ protected ITreeContentProvider getContentProvider() { // Get the navigator content service. INavigatorContentService navigatorContentService = getCommonViewer().getNavigatorContentService(); // Get the content extension by id INavigatorContentExtension contentExt = navigatorContentService.getContentExtensionById(getContentProviderId()); ITreeContentProvider contentProvider = contentExt.getContentProvider(); return contentProvider; } /** * This sets the selection into whichever viewer is active. */ public void setSelectionToViewer(Collection collection) { final Collection theSelection = collection; // Make sure it's okay. // if (theSelection != null && !theSelection.isEmpty()) { // I don't know if this should be run this deferred // because we might have to give the editor a chance to process the viewer update events // and hence to update the views first. // // Runnable runnable = new Runnable() { public void run() { // Try to select the items in the current content viewer of the editor. // CommonViewer viewer = getCommonViewer(); if (viewer != null) { viewer.setSelection(new StructuredSelection(theSelection.toArray()), true); } } }; runnable.run(); } } /** * @see org.eclipse.ui.navigator.CommonNavigator#createPartControl(org.eclipse.swt.widgets.Composite) */ @Override public void createPartControl(Composite parent_p) { // Create a composite that hosts the view content. Composite composite = new Composite(parent_p, SWT.NONE); GridLayout layout = new GridLayout(); composite.setLayout(layout); composite.setLayoutData(new GridData(GridData.FILL_BOTH)); // Add a widget to enter patterns to filter the viewer. createFilterWidget(composite); // Create the content provided by the common navigator. super.createPartControl(composite); // Set a layout data for the common tree viewer. CommonViewer commonViewer = getCommonViewer(); commonViewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH)); // Add a viewer filter driven by the filter text. commonViewer.addFilter(_patternFilter); } /** * Return the memento for this view. * @return null can be returned, if it is the first time the view is open. */ protected IMemento getMemento() { return _memento; } /** * @see org.eclipse.ui.navigator.CommonNavigator#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento) */ @Override public void init(IViewSite site_p, IMemento memento_p) throws PartInitException { // Specified memento could be null : // 1) if the view was not shown when the previous workbench session exited. // 2) the view is open by the end-user whereas the workbench is already loaded. // Parent class does not a provide an accessor on memento field. _memento = restoreViewSettings(memento_p); super.init(site_p, _memento); } /** * Restore view settings. */ private IMemento restoreViewSettings(IMemento memento_p) { IMemento memento = memento_p; // Specified memento is null, let's get it from view settings persistence. if (null == memento) { // Indeed, if the view was not shown when the previous workbench session exited, no memento is provided. // The only chance to restore current state is to get the memento from its persisted representation in view settings (if any). String persistedMemento = _viewSettings.get(TAG_MEMENTO); if (null != persistedMemento) { try { memento = XMLMemento.createReadRoot(new StringReader(persistedMemento)); } catch (WorkbenchException exception_p) { // Don't do anything. Simply don't restore the settings } } } return memento; } /** * @see org.eclipse.ui.navigator.CommonNavigator#dispose() */ @Override public void dispose() { // Save view settings. saveViewSettings(); // Remove filters. getCommonViewer().removeFilter(_patternFilter); // Unregister the command stack listener. CommandStack commandStack = getCommandStack(); commandStack.removeCommandStackListener(_commandStackListener); // Flush the command stack. commandStack.flush(); super.dispose(); } /** * Save the dialog settings for this view. */ private void saveViewSettings() { String rootName = getClass().getSimpleName(); // Create a new memento. XMLMemento memento = XMLMemento.createWriteRoot(rootName); // Save current state in it. // Notice, that the saveState() method is also called by the workbench when exiting before the dispose() method. // Nevertheless, we keep this call here, to make sure current state is stored within a running workbench session where the saveState() method is not called. saveState(memento); StringWriter writer = new StringWriter(); try { memento.save(writer); _viewSettings.put(TAG_MEMENTO, writer.getBuffer().toString()); } catch (IOException exception_p) { // Don't do anything. Simply don't store the settings } } /** * @see org.eclipse.ui.navigator.CommonNavigator#saveState(org.eclipse.ui.IMemento) */ @Override public void saveState(IMemento memento_p) { // Save the entered pattern filter (if any). if (null != _enteredPatternFilter) { memento_p.putString(TAG_PATTERN_FILTER, _enteredPatternFilter); } super.saveState(memento_p); } /** * Restore the pattern filter * @param text_p * @param memento_p */ private void restorePatternFilter(Text text_p, IMemento memento_p) { // Preconditions if ((null == memento_p) || (null == text_p)) { return; } String patternFilter = memento_p.getString(TAG_PATTERN_FILTER); if (null != patternFilter) { text_p.setText(patternFilter); // Restore the pattern previously entered by the end-user. getPatternFilter().setPattern(patternFilter); _enteredPatternFilter = patternFilter; } } /** * Creates the message text widget and sets layout data. * @param parent_p the parent composite of the message area. */ protected Label createMessageArea(Composite parent_p) { Label label = new Label(parent_p, SWT.NONE); label.setText(Messages.FactoryComponentView_PatternFilterText_Title); label.setFont(parent_p.getFont()); GridData data = new GridData(); data.grabExcessVerticalSpace = false; data.grabExcessHorizontalSpace = true; data.horizontalAlignment = GridData.FILL; data.verticalAlignment = GridData.BEGINNING; label.setLayoutData(data); return label; } /** * Creates the text widget where filter is entered and sets layout data. * @param composite the parent composite of the message area. */ protected Text createFilterText(Composite parent_p) { Text text = new Text(parent_p, SWT.BORDER); GridData data = new GridData(); data.grabExcessVerticalSpace = false; data.grabExcessHorizontalSpace = true; data.horizontalAlignment = GridData.FILL; data.verticalAlignment = GridData.BEGINNING; text.setLayoutData(data); text.setFont(parent_p.getFont()); // Restore previously entered pattern filter. restorePatternFilter(text, getMemento()); // Add a listener to allow the end-user to select something in the tree viewer from the filter text with the down arrow. text.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.ARROW_DOWN) { setFocus(); } } }); // Add a listener to notify the viewer filter. text.addModifyListener(new ModifyListener() { /** * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) */ @SuppressWarnings("synthetic-access") public void modifyText(ModifyEvent event_p) { _enteredPatternFilter = getFilterTextValue(); // Set the new pattern entered by the end-user. getPatternFilter().setPattern(_enteredPatternFilter); // Refresh the common viewer to take into account the new pattern filter. ViewerHelper.refresh(getCommonViewer(), false); } }); return text; } /** * Create the filter widget. * @param composite_p */ protected void createFilterWidget(Composite composite_p) { // Create a field to enter filter value. createMessageArea(composite_p); _filterText = createFilterText(composite_p); } /** * Return the filter text value. * @return the filterText */ protected String getFilterTextValue() { return _filterText.getText(); } /** * Return the pattern filter. * @return the patternFilter */ protected PatternFilter getPatternFilter() { return _patternFilter; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/fc/FactoryComponentViewSorter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2090 Text-content-md5: 240d41094affd1fad399b6d282b48ae7 Text-content-sha1: e3066a0b98214ecb5e575e7e79879a169be09744 Content-length: 2135 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.views.fc; import java.text.Collator; import org.eclipse.egf.core.CoreActivator; import org.eclipse.egf.model.NamedModelElementWithId; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; /** * Implements a sorting strategy to display named model elements in the right order in a tree viewer. * @author fournier */ public class FactoryComponentViewSorter extends ViewerSorter { /** * Constructor. */ public FactoryComponentViewSorter() { // Do nothing. } /** * Constructor. * @param collator_p */ public FactoryComponentViewSorter(Collator collator_p) { super(collator_p); } /** * Constructor. * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public int compare(Viewer viewer_p, Object object1_p, Object object2_p) { int result = 0; // Preconditions if (!(object1_p instanceof NamedModelElementWithId) || !(object2_p instanceof NamedModelElementWithId)) { result = super.compare(viewer_p, object1_p, object2_p); } else { // getSortingPriority int value1 = CoreActivator.getDefault().getSortingPriority((NamedModelElementWithId) object1_p); int value2 = CoreActivator.getDefault().getSortingPriority((NamedModelElementWithId) object2_p); result = value1 - value2; } return result; } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/fc/InstalledFactoryComponentView.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2338 Text-content-md5: 93fc596e967c630b605301fb8f384687 Text-content-sha1: 32f24407ced096714128d76f210575b2a5608b2a Content-length: 2383 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.views.fc; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.egf.core.ui.EgfUiActivator; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; /** * This class provides the IViewPart for the deployed factory components view in the Eclipse workbench.
* This view display all deployed factory components : ie installed in the running Eclipse platform as plug-ins. * @author Guillaume Brocard */ public class InstalledFactoryComponentView extends AbstractFactoryComponentView { /** * Identifier of the installed factory components view (declared in related plugin.xml). */ public static final String VIEW_ID = "org.eclipse.egf.core.ui.workbench.views.fc.installedAssetView"; //$NON-NLS-1$ /** * Identifier of the installed factory components view content provider (declared in related plugin.xml). */ private static final String CONTENT_PROVIDER_ID = "org.eclipse.egf.core.ui.workbench.views.fc.installedAssetViewContent"; //$NON-NLS-1$ /** * @see org.eclipse.egf.core.ui.workbench.views.fc.AbstractFactoryComponentView#getContentProviderId() */ @Override protected String getContentProviderId() { return CONTENT_PROVIDER_ID; } /** * @see org.eclipse.ui.navigator.CommonNavigator#getInitialInput() */ @Override protected IAdaptable getInitialInput() { return EgfUiActivator.getDefault().getFactoryComponentInPlatormInput(); } /** * @see org.eclipse.egf.core.ui.workbench.views.fc.AbstractFactoryComponentView#getEditingDomain() */ @Override protected AdapterFactoryEditingDomain getEditingDomain() { return EgfUiActivator.getDefault().getEditingDomainInReadOnly(); } } Node-path: plugins/org.eclipse.egf.core.ui.workbench/src/org/eclipse/egf/core/ui/workbench/views/fc/ProductionPlanSorter.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1442 Text-content-md5: e10bbceb69bb09f8d718e5bae84360f8 Text-content-sha1: 614b89058ac2bdb61c69382e860523fc763f18d6 Content-length: 1487 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.core.ui.workbench.views.fc; import java.text.Collator; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; /** * Implements a sorting strategy to display Production Plan children. * @author Guillaume Brocard */ public class ProductionPlanSorter extends ViewerSorter { /** * Constructor. */ public ProductionPlanSorter() { // Do nothing. } /** * Constructor. * @param collator_p */ public ProductionPlanSorter(Collator collator_p) { super(collator_p); } /** * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public int compare(Viewer viewer_p, Object e1_p, Object e2_p) { // Do not sort given objects. return 0; } } Node-path: plugins/org.eclipse.egf.doc.user/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 513 Text-content-md5: 1ab9decd1fd54d051d6a71b4da899ef0 Text-content-sha1: c86ba08e3ecdcc8670eb4e061fd0f4cf4f5e86bd Content-length: 558 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.doc.user org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature Node-path: plugins/org.eclipse.egf.doc.user/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.doc.user/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 290 Text-content-md5: f5095433173cad08db56085b490b1113 Text-content-sha1: a2bebea7e2862ce5ad0295ea90d8b8b2056a334e Content-length: 335 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.doc.user; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Require-Bundle: org.eclipse.help Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.doc.user/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.doc.user/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 721 Text-content-md5: 4cbbd37d7307b87c1f40d55f82708357 Text-content-sha1: 8545229040c377883189dd6ef24cc48cff82731b Content-length: 766 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.xml,\ plugin.properties,\ html/,\ toc.xml,\ topics_FactoryComponents.xml,\ topics_GettingStarted.xml,\ topics_Reference.xml Node-path: plugins/org.eclipse.egf.doc.user/html Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.doc.user/html/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1935 Text-content-md5: ad279c763097fb138cf1c6b3a167be90 Text-content-sha1: 3b02a534454e570d4af803b4c41c3de12021f52e Content-length: 1980 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

February 2, 2009

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.doc.user/html/book.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 254 Text-content-md5: 044743f4e6bee9e9ddbd78ecdaf7f1ec Text-content-sha1: 9ae8a6b754c054e5effae4f0a54d96c82b070204 Content-length: 264 PROPS-END @import "../PRODUCT_PLUGIN/book.css"; span.control { font-weight: bold; } span.name { font-style: italic; } span.code { font-family: monospace; } p.nav_footer { font-weight: bold; } p.nav_footer a { font-weight: bold; font-style: italic; } Node-path: plugins/org.eclipse.egf.doc.user/html/notices.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 664 Text-content-md5: 9319804f5e7f663bb90c4bf5da2cdf67 Text-content-sha1: 0eca6d0aa1cf3673dcffe218d729b39d7df49f77 Content-length: 709 K 13 svn:mime-type V 10 text/plain PROPS-END Legal Notices

Notices

The material in this guide is Copyright (c) 2009 Thales Corporate Services S.A.S.

Terms and conditions regarding the use of this guide.

Node-path: plugins/org.eclipse.egf.doc.user/html/whatsNew Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.doc.user/html/whatsNew/egf_whatsnew.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 732 Text-content-md5: 009144472dfa5661592abc5ea3e2ba57 Text-content-sha1: 0f76b6e03419635387dfbe70b415047f395febc9 Content-length: 777 K 13 svn:mime-type V 10 text/plain PROPS-END What's New in EGF 1.0.0

What's New in EGF 1.0.x

Here are descriptions of some of the more interesting or significant changes made to the EGF tools for the 1.0.x release. Node-path: plugins/org.eclipse.egf.doc.user/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 485 Text-content-md5: adbd962e29dba59a540a78261d39f425 Text-content-sha1: 3f62074910123a9fb872c77d752c1a8da2e91196 Content-length: 530 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF Guide (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.doc.user/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 889 Text-content-md5: 1ae076a1e6939de6047a253320c76c70 Text-content-sha1: 764c263ccd83a7f7b79d97fe6fee8946da1c8c97 Content-length: 934 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.doc.user/toc.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1226 Text-content-md5: b1bacb5fb3b905dfb030f0fc2284fc46 Text-content-sha1: f7757b522236011739debe2273850d072e2d9c6c Content-length: 1271 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.doc.user/topics_FactoryComponents.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 773 Text-content-md5: ab21c22b301c14491da4a194c8ba8642 Text-content-sha1: 7d590bdce2f3735f729d2dcf212d74a3fa603d21 Content-length: 818 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.doc.user/topics_GettingStarted.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 663 Text-content-md5: bada8fd721eaa4853209972313185bf9 Text-content-sha1: c95177d52450464d1b40166d99408cde1441fad6 Content-length: 708 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.doc.user/topics_Reference.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1345 Text-content-md5: 4910e37cb0c9812837287cd80a6c12b1 Text-content-sha1: e3fc5fab7b1d4ff6e9fcfefff9dd1439662de3e8 Content-length: 1390 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 374 Text-content-md5: 911717b9d08ea50d6c596c1f43830080 Text-content-sha1: 00e1f1bc150986effc780aa7408f83a5747113fd Content-length: 419 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 697 Text-content-md5: e74d63560d8b8226d80d5d1cf4d9c6e5 Text-content-sha1: 9102ad084e8c6a8f9cbb8f8ea0f5957608b2c56d Content-length: 742 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.emf.generator.common org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.emf.generator.common/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: 866f36672e4194f189611d8b1286a903 Text-content-sha1: 3981317f5eb13b1b2cbd7dbe5823ae4dd2c7009e Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:58 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.emf.generator.common/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 560 Text-content-md5: e4c0be9fff2d422a7354b48cb3d8bb42 Text-content-sha1: f56c32b53ad326c6b7a7d8403126ee40c373f552 Content-length: 605 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.emf.generator.common; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.core.ui;visibility:=reexport, org.eclipse.egf.fc.generator.java;visibility:=reexport Export-Package: org.eclipse.egf.emf.generator.common.actions, org.eclipse.egf.emf.generator.common.task Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.emf.generator.common/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.emf.generator.common/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf/emf/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf/emf/generator/common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf/emf/generator/common/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf/emf/generator/common/actions/AbstractEmfGenerateCodeOperation.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2535 Text-content-md5: cf96936eb724aa03101613a7069e718d Text-content-sha1: 03c1da45fe640a2a69a4929255202a8e3a844c53 Content-length: 2594 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1[Morg/eclipse/egf/emf/generator/common/actions/AbstractEmfGenerateCodeOperation=org/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation()VCode  LineNumberTableLocalVariableTablethisOLorg/eclipse/egf/emf/generator/common/actions/AbstractEmfGenerateCodeOperation; doExecute.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z Exceptions&org/eclipse/core/runtime/CoreException+java/lang/reflect/InvocationTargetExceptionjava/lang/InterruptedException   getModelPath()Ljava/lang/String;  getGeneratorAdapterFactoryC()Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory; "!(org/eclipse/egf/common/helper/FileHelper #$getFileFullUri5(Ljava/lang/String;)Lorg/eclipse/emf/common/util/URI;&org/eclipse/core/runtime/Path %( )(Ljava/lang/String;)V +-,'org/eclipse/egf/pde/emf/PdeEmfActivator ./ getDefault+()Lorg/eclipse/egf/pde/emf/PdeEmfActivator; +1 23getAllEmfExtensionDescriptors()Ljava/util/Collection; 5 67loadExistingGenModeli(Lorg/eclipse/core/runtime/IPath;Ljava/util/Collection;)Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel;94org/eclipse/egf/common/generator/EmfProjectGenerator ; <=getProjectType3()Lorg/eclipse/egf/common/generator/EmfProjectType; 8? @u(Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;Lorg/eclipse/egf/common/generator/EmfProjectType;)V BDC(org/eclipse/emf/common/util/BasicMonitor EF toMonitorR(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/emf/common/util/Monitor; 8H IJgenerateY(Lorg/eclipse/emf/common/util/Monitor;Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel;)Z monitor_p+Lorg/eclipse/core/runtime/IProgressMonitor;resultZ modelPathLjava/lang/String;generatorAdapterFactoryALorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;genModelFileFullUri!Lorg/eclipse/emf/common/util/URI;genModel1Lorg/eclipse/emf/codegen/ecore/genmodel/GenModel; generator6Lorg/eclipse/egf/common/generator/EmfProjectGenerator; SourceFile%AbstractEmfGenerateCodeOperation.java!/* "  R=*N*:-:*%Y-'*04:8Y*:>:+AG= 2 )*+ .014.5365:D;P< RR RKLPMNKOP EQR?ST.$UVDWX<=YZ Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf/emf/generator/common/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/bin/org/eclipse/egf/emf/generator/common/task/AbstractEmfGeneratorTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 2996 Text-content-md5: f5020a2521329633a8355b9148d0884b Text-content-sha1: c644ebd53c4ca33e526f0fd16afc1bf0d5b5575e Content-length: 3055 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Borg/eclipse/egf/emf/generator/common/task/AbstractEmfGeneratorTask&org/eclipse/egf/core/task/AbstractTask__loggerLorg/apache/log4j/Logger;ECORE_MODEL_PATHLjava/lang/String; ConstantValue modelRelativePathGENERATOR_ADAPTER_FACTORYgeneratorAdapterFactoryMERGE_RULES_RELATIVE_PATHmergeRulesPath()VCode java/lang/Class  getPackage()Ljava/lang/Package; java/lang/Package  getName()Ljava/lang/String; "$#org/apache/log4j/Logger %& getLogger-(Ljava/lang/String;)Lorg/apache/log4j/Logger; ( LineNumberTableLocalVariableTable - +thisDLorg/eclipse/egf/emf/generator/common/task/AbstractEmfGeneratorTask; doExecute.(Lorg/eclipse/core/runtime/IProgressMonitor;)Z 3 45getEmfGenerateCodeOperationA()Lorg/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation; 7 8  getModelPath :<;=org/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation => setModelPath(Ljava/lang/String;)V @ ABgetGeneratorAdapterFactoryS()Lorg/eclipse/egf/fc/generator/java/model/AbstractGenModelGeneratorAdapterFactory; D E getMergeRulesRelativePath GIHOorg/eclipse/egf/fc/generator/java/model/AbstractGenModelGeneratorAdapterFactory J>setMergeRulesRelativePath :L MNsetGeneratorAdapterFactoryD(Lorg/eclipse/emf/codegen/ecore/generator/GeneratorAdapterFactory;)V :P QRrun.(Lorg/eclipse/core/runtime/IProgressMonitor;)VTjava/lang/StringBuilderV)AbstractEmfGeneratorTask.doExecute(..) _ SX +>ZFailed to generate EMF code S\ ]^append-(Ljava/lang/String;)Ljava/lang/StringBuilder;` for model: Sb c toString "e fgwarn*(Ljava/lang/Object;Ljava/lang/Throwable;)V :i jk getResult()Zmjava/lang/ExceptionprogressMonitor_p+Lorg/eclipse/core/runtime/IProgressMonitor; operation?Lorg/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation;QLorg/eclipse/egf/fc/generator/java/model/AbstractGenModelGeneratorAdapterFactory; exception_pLjava/lang/Exception; loggerMessageLjava/lang/StringBuilder; x yzgetContextElementValue&(Ljava/lang/String;)Ljava/lang/Object;|java/lang/String SourceFileAbstractEmfGeneratorTask.java!      3!') *+/*,)* ./01c*2M,*69*?N*C: -F,-K,+O1:SYUW:Y[_[*6[W'ad,h(-0l)6 68 9:<=#?(A0B2C=DQE^G*Hc./cno^pqQrK2,st=!uv458 4 * w{)U*  ./AB4 * wG)]*  ./E 4 *w{)e*  ./}~ Node-path: plugins/org.eclipse.egf.emf.generator.common/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 585 Text-content-md5: 63ddca531cfab0ae10c3b517a2ed8466 Text-content-sha1: a5f6563407545337cfbea4e05e0eb70960df9e90 Content-length: 630 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ about.html,\ plugin.properties src.includes = about.html Node-path: plugins/org.eclipse.egf.emf.generator.common/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 500 Text-content-md5: a0bec16af5bf64eb68c3fdcbd86a8612 Text-content-sha1: 9b6355a6974fb4ff3f1c7a03aa6170182cdd1b86 Content-length: 545 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF EMF Common Generator (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.emf.generator.common/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf/emf/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf/emf/generator/common Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf/emf/generator/common/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf/emf/generator/common/actions/AbstractEmfGenerateCodeOperation.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 2875 Text-content-md5: 380f37f97d066a3dc8b4aa3c709b913a Text-content-sha1: 09ea867651f121166d0c1650cb457d83760fbcf0 Content-length: 2920 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.emf.generator.common.actions; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.egf.common.generator.EmfProjectGenerator; import org.eclipse.egf.common.generator.EmfProjectType; import org.eclipse.egf.common.helper.FileHelper; import org.eclipse.egf.core.ui.actions.AbstractGenerateCodeOperation; import org.eclipse.egf.pde.emf.PdeEmfActivator; import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory; import org.eclipse.emf.codegen.ecore.genmodel.GenModel; import org.eclipse.emf.common.util.BasicMonitor; import org.eclipse.emf.common.util.URI; /** * This operation provides a template to perform EMF code generation that modifies the workspace content.
* For instance EMF Edit and EMF Editor generate operations can be based on this class. * @author Guillaume Brocard */ public abstract class AbstractEmfGenerateCodeOperation extends AbstractGenerateCodeOperation { /** * @see org.eclipse.egf.core.ui.actions.AbstractGenerateCodeOperation#doExecute(org.eclipse.core.runtime.IProgressMonitor) */ @Override protected boolean doExecute(IProgressMonitor monitor_p) throws CoreException, InvocationTargetException, InterruptedException { boolean result = false; String modelPath = getModelPath(); GeneratorAdapterFactory generatorAdapterFactory = getGeneratorAdapterFactory(); // Preconditions. // Get genModel file full URI. URI genModelFileFullUri = FileHelper.getFileFullUri(modelPath); // Unable to get it, return. if (genModelFileFullUri == null) { return result; } // Load the genModel. GenModel genModel = loadExistingGenModel(new Path(modelPath), PdeEmfActivator.getDefault().getAllEmfExtensionDescriptors()); if (genModel == null) { return result; } // All conditions are fulfilled. // Generate EMF Edit project for given genModel. EmfProjectGenerator generator = new EmfProjectGenerator(generatorAdapterFactory, getProjectType()); result = generator.generate(BasicMonitor.toMonitor(monitor_p), genModel); return result; } /** * Return the project type representing the generation type to perform. * @return */ protected abstract EmfProjectType getProjectType(); } Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf/emf/generator/common/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.common/src/org/eclipse/egf/emf/generator/common/task/AbstractEmfGeneratorTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3970 Text-content-md5: 2c178d93acda3ee3510781181fdadd4f Text-content-sha1: 198235d2230f827e8985f6ef6ae61af26c746c31 Content-length: 4015 K 13 svn:mime-type V 10 text/plain PROPS-END /** * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation */ package org.eclipse.egf.emf.generator.common.task; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.egf.common.helper.FileHelper; import org.eclipse.egf.core.task.AbstractTask; import org.eclipse.egf.core.ui.actions.AbstractGenerateCodeOperation; import org.eclipse.egf.fc.generator.java.model.AbstractGenModelGeneratorAdapterFactory; /** * Base class to implement tasks that perform code generation based on EMF generators such as Edit, Editor... * @author Guillaume Brocard */ public abstract class AbstractEmfGeneratorTask extends AbstractTask { /** * Log4j reference logger. */ private static final Logger __logger = Logger.getLogger(AbstractEmfGeneratorTask.class.getPackage().getName()); /** * Define a constant according to contract defined by EMF generator edit factory component. */ private static final String ECORE_MODEL_PATH = "modelRelativePath"; //$NON-NLS-1$ /** * Define a constant according to contract defined by EMF generator edit factory component. */ private static final String GENERATOR_ADAPTER_FACTORY = "generatorAdapterFactory"; //$NON-NLS-1$ /** * Define a constant according to contract defined by java generator factory component.
* That allows to define its own merge rules. */ private static final String MERGE_RULES_RELATIVE_PATH = "mergeRulesPath"; //$NON-NLS-1$ /** * @see org.eclipse.egf.core.task.AbstractTask#doExecute(org.eclipse.core.runtime.IProgressMonitor) */ @Override protected boolean doExecute(IProgressMonitor progressMonitor_p) { // Get the EMF generate code operation to run. AbstractGenerateCodeOperation operation = getEmfGenerateCodeOperation(); // Set the project folder. operation.setModelPath(getModelPath()); AbstractGenModelGeneratorAdapterFactory generatorAdapterFactory = getGeneratorAdapterFactory(); String mergeRulesPath = getMergeRulesRelativePath(); // Set the EMF Merge rules file (if any). if (null != mergeRulesPath) { generatorAdapterFactory.setMergeRulesRelativePath(mergeRulesPath); } operation.setGeneratorAdapterFactory(generatorAdapterFactory); try { operation.run(progressMonitor_p); } catch (Exception exception_p) { StringBuilder loggerMessage = new StringBuilder("AbstractEmfGeneratorTask.doExecute(..) _ "); //$NON-NLS-1$ loggerMessage.append("Failed to generate EMF code").append(" for model:").append(getModelPath()); //$NON-NLS-1$ //$NON-NLS-2$ __logger.warn(loggerMessage.toString(), exception_p); } return operation.getResult(); } /** * Get the {@link AbstractGenerateCodeOperation} instance to execute. * @return */ protected abstract AbstractGenerateCodeOperation getEmfGenerateCodeOperation(); /** * Return the Ecore model path * @return */ private String getModelPath() { return (String) getContextElementValue(ECORE_MODEL_PATH); } /** * Get the generator adapter factory. * @return */ private AbstractGenModelGeneratorAdapterFactory getGeneratorAdapterFactory() { return (AbstractGenModelGeneratorAdapterFactory) getContextElementValue(GENERATOR_ADAPTER_FACTORY); } /** * Get the merge rules file relative path as defined by {@link FileHelper}. * @return */ private String getMergeRulesRelativePath() { return (String) getContextElementValue(MERGE_RULES_RELATIVE_PATH); } } Node-path: plugins/org.eclipse.egf.emf.generator.edit/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 374 Text-content-md5: 911717b9d08ea50d6c596c1f43830080 Text-content-sha1: 00e1f1bc150986effc780aa7408f83a5747113fd Content-length: 419 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 695 Text-content-md5: 0f012b20e5a08cae7c8b4255c82123dd Text-content-sha1: 448e6c5f399ed99e1e912a91f42f4e056eec1e9c Content-length: 740 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.emf.generator.edit org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.emf.generator.edit/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: 5fa9e1c1ee80e2a856494b27a16c1e06 Text-content-sha1: 9e9af03dbd45ca4d1163493243c156aa5293af14 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:59 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.emf.generator.edit/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 386 Text-content-md5: 7fe651b587d44fe0fc6859ba7cbb8779 Text-content-sha1: 19b2bee0a8ffe5f61e7c7e1f0a11bf742398d152 Content-length: 431 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.emf.generator.edit; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.emf.generator.common Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.emf.generator.edit/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit/internal/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit/internal/actions/GenerateEditCodeOperation.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 731 Text-content-md5: 7a1cef133e7ad22d36e3050fcd68d9f2 Text-content-sha1: 312361ce62d114c30d472e95a0e74c8de9dba9c3 Content-length: 790 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Morg/eclipse/egf/emf/generator/edit/internal/actions/GenerateEditCodeOperationMorg/eclipse/egf/emf/generator/common/actions/AbstractEmfGenerateCodeOperation()VCode  LineNumberTableLocalVariableTablethisOLorg/eclipse/egf/emf/generator/edit/internal/actions/GenerateEditCodeOperation;getProjectType3()Lorg/eclipse/egf/common/generator/EmfProjectType; /org/eclipse/egf/common/generator/EmfProjectType EDIT_PROJECT_TYPE1Lorg/eclipse/egf/common/generator/EmfProjectType; SourceFileGenerateEditCodeOperation.java!/*   .    Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit/internal/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit/internal/task/EditGeneratorTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 674 Text-content-md5: d01fcac6055f67399d354da3403bd295 Text-content-sha1: b30343c85090a860a0daa2c6b0294ee72b79d8f6 Content-length: 733 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Borg/eclipse/egf/emf/generator/edit/internal/task/EditGeneratorTaskBorg/eclipse/egf/emf/generator/common/task/AbstractEmfGeneratorTask()VCode  LineNumberTableLocalVariableTablethisDLorg/eclipse/egf/emf/generator/edit/internal/task/EditGeneratorTask;getEmfGenerateCodeOperationA()Lorg/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation;Morg/eclipse/egf/emf/generator/edit/internal/actions/GenerateEditCodeOperation   SourceFileEditGeneratorTask.java!/*   2Y    Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/bin/org/eclipse/egf/emf/generator/edit/task/EditGeneratorTaskFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 622 Text-content-md5: 918fc3b48270983066f14aa2ee4c4843 Text-content-sha1: 151e848eac066e250b19b10b28ceeb9251e9a408 Content-length: 681 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1@org/eclipse/egf/emf/generator/edit/task/EditGeneratorTaskFactoryjava/lang/Object&org/eclipse/egf/core/task/ITaskFactory()VCode  LineNumberTableLocalVariableTablethisBLorg/eclipse/egf/emf/generator/edit/task/EditGeneratorTaskFactory; createTask*()Lorg/eclipse/egf/core/task/AbstractTask;Borg/eclipse/egf/emf/generator/edit/internal/task/EditGeneratorTask   SourceFileEditGeneratorTaskFactory.java! /*    2Y   Node-path: plugins/org.eclipse.egf.emf.generator.edit/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 612 Text-content-md5: a769470641b9d696e5827f8bfb1df60a Text-content-sha1: 064bbc04b82a39b9b5ed91d5dcb1d7a7cf5fa6af Content-length: 657 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = plugin.xml,\ META-INF/,\ .,\ about.html,\ plugin.properties src.includes = about.html Node-path: plugins/org.eclipse.egf.emf.generator.edit/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 498 Text-content-md5: 47dce44d488545aa9e007581ef0f42cb Text-content-sha1: 2da0139497c95e35e626f84fb16deb174036fb61 Content-length: 543 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF EMF Edit Generator (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.emf.generator.edit/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4218 Text-content-md5: 639a1e6c99362e141be1760e9a7b2fc7 Text-content-sha1: 69d208e18940eb0904842770ae24fc411f3b889a Content-length: 4263 K 13 svn:mime-type V 10 text/plain PROPS-END A relative path to locate an Ecore model file against the eclipse platform. The model API for this Ecore model must be generated once at least (i.e the generated_package extension must exist). A factory for adapters that modify code generation. Matching context element must provide a class that extends org.eclipse.egf.fc.generator.java.model.AbstractGenModelGeneratorAdapterFactory. Relative path to the merge rules file (JMerge). The path starts with the plug-in id whether it is deployed or not. This requires that the generatorAdapterFactory is provided too. This factory component runs EMF Edit code generator for an Ecore model. The model API for given Ecore model must be generated before running this factory component. The project (and the source folder) that hosts the generated code is got from the genModel related to the given Ecore model. Default code generation behavior can be customized by providing a generator adapter factory. Node-path: plugins/org.eclipse.egf.emf.generator.edit/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit/internal/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit/internal/actions/GenerateEditCodeOperation.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1206 Text-content-md5: 182f46f7b19c5261529058dafd2f3b28 Text-content-sha1: 3dcfc07091b3413fa08bd2849613577b8f6ff53c Content-length: 1251 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.emf.generator.edit.internal.actions; import org.eclipse.egf.common.generator.EmfProjectType; import org.eclipse.egf.emf.generator.common.actions.AbstractEmfGenerateCodeOperation; /** * Perform the the EMF Edit code generation in the workspace. * @author Guillaume Brocard */ public class GenerateEditCodeOperation extends AbstractEmfGenerateCodeOperation { /** * @see org.eclipse.egf.emf.generator.common.actions.AbstractEmfGenerateCodeOperation#getProjectType() */ @Override protected EmfProjectType getProjectType() { return EmfProjectType.EDIT_PROJECT_TYPE; } } Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit/internal/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit/internal/task/EditGeneratorTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1279 Text-content-md5: 2eaeb2c7ed18fadbf38c101f8f3db7c1 Text-content-sha1: 2175ce9c28b48e26287548114c56e2a24c684a85 Content-length: 1324 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.emf.generator.edit.internal.task; import org.eclipse.egf.core.ui.actions.AbstractGenerateCodeOperation; import org.eclipse.egf.emf.generator.common.task.AbstractEmfGeneratorTask; import org.eclipse.egf.emf.generator.edit.internal.actions.GenerateEditCodeOperation; /** * Generates the EMF Edit plug-in. * @author Guillaume Brocard */ public class EditGeneratorTask extends AbstractEmfGeneratorTask { /** * @see org.eclipse.egf.emf.generator.common.task.AbstractEmfGeneratorTask#getEmfGenerateCodeOperation() */ @Override protected AbstractGenerateCodeOperation getEmfGenerateCodeOperation() { return new GenerateEditCodeOperation(); } } Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.edit/src/org/eclipse/egf/emf/generator/edit/task/EditGeneratorTaskFactory.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1130 Text-content-md5: ebc118f4bebd4af05e57a3664e5d82a6 Text-content-sha1: 7e629fea9dd92c24bc731c7cf7659a926a1478c7 Content-length: 1175 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.emf.generator.edit.task; import org.eclipse.egf.core.task.AbstractTask; import org.eclipse.egf.core.task.ITaskFactory; import org.eclipse.egf.emf.generator.edit.internal.task.EditGeneratorTask; /** * Provides the task used to generate the EMF Edit plug-in. * @author Guillaume Brocard */ public class EditGeneratorTaskFactory implements ITaskFactory { /** * @see org.eclipse.egf.core.task.ITaskFactory#createTask() */ public AbstractTask createTask() { return new EditGeneratorTask(); } } Node-path: plugins/org.eclipse.egf.emf.generator.editor/.classpath Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 374 Text-content-md5: 911717b9d08ea50d6c596c1f43830080 Text-content-sha1: 00e1f1bc150986effc780aa7408f83a5747113fd Content-length: 419 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 697 Text-content-md5: a4ea892decc2dadc485b06e28c6f15c3 Text-content-sha1: 7e956951a5268dc0f1ea60e4fc6a556b6db73e76 Content-length: 742 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.emf.generator.editor org.eclipse.jdt.core.javabuilder org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature Node-path: plugins/org.eclipse.egf.emf.generator.editor/.settings Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/.settings/org.eclipse.jdt.core.prefs Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 395 Text-content-md5: 5fa9e1c1ee80e2a856494b27a16c1e06 Text-content-sha1: 9e9af03dbd45ca4d1163493243c156aa5293af14 Content-length: 440 K 13 svn:mime-type V 10 text/plain PROPS-END #Mon Mar 09 16:03:59 CET 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 Node-path: plugins/org.eclipse.egf.emf.generator.editor/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 388 Text-content-md5: 49ed01db43f25608dad1fec5d8c51a7b Text-content-sha1: e7500eb0ad16f89cef8c6de7611373ad72a3b0a9 Content-length: 433 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.emf.generator.editor; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.egf.emf.generator.common Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.emf.generator.editor/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor/internal/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor/internal/actions/GenerateEditorCodeOperation.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 743 Text-content-md5: 0841780846296ae9db364e50ad4baed8 Text-content-sha1: a334382aedcb6e3b28f5dd4289a02f2d48efeb1d Content-length: 802 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Qorg/eclipse/egf/emf/generator/editor/internal/actions/GenerateEditorCodeOperationMorg/eclipse/egf/emf/generator/common/actions/AbstractEmfGenerateCodeOperation()VCode  LineNumberTableLocalVariableTablethisSLorg/eclipse/egf/emf/generator/editor/internal/actions/GenerateEditorCodeOperation;getProjectType3()Lorg/eclipse/egf/common/generator/EmfProjectType; /org/eclipse/egf/common/generator/EmfProjectType EDITOR_PROJECT_TYPE1Lorg/eclipse/egf/common/generator/EmfProjectType; SourceFile GenerateEditorCodeOperation.java!/*   .    Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor/internal/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor/internal/task/EditorGeneratorTask.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 688 Text-content-md5: 3ac50da27f190a2f11e4d401aa0f03d4 Text-content-sha1: 1630a46a4633525f556532509289eda3fc282bbd Content-length: 747 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Forg/eclipse/egf/emf/generator/editor/internal/task/EditorGeneratorTaskBorg/eclipse/egf/emf/generator/common/task/AbstractEmfGeneratorTask()VCode  LineNumberTableLocalVariableTablethisHLorg/eclipse/egf/emf/generator/editor/internal/task/EditorGeneratorTask;getEmfGenerateCodeOperationA()Lorg/eclipse/egf/core/ui/actions/AbstractGenerateCodeOperation;Qorg/eclipse/egf/emf/generator/editor/internal/actions/GenerateEditorCodeOperation   SourceFileEditorGeneratorTask.java!/*   2Y    Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/bin/org/eclipse/egf/emf/generator/editor/task/EditorGeneratorTaskFactory.class Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 636 Text-content-md5: 5db88b564385030c05fbb2b2411e97cc Text-content-sha1: cb185ff4abdefa21ee8151be6a5a5f758a44c010 Content-length: 695 K 13 svn:mime-type V 24 application/octet-stream PROPS-END 1Dorg/eclipse/egf/emf/generator/editor/task/EditorGeneratorTaskFactoryjava/lang/Object&org/eclipse/egf/core/task/ITaskFactory()VCode  LineNumberTableLocalVariableTablethisFLorg/eclipse/egf/emf/generator/editor/task/EditorGeneratorTaskFactory; createTask*()Lorg/eclipse/egf/core/task/AbstractTask;Forg/eclipse/egf/emf/generator/editor/internal/task/EditorGeneratorTask   SourceFileEditorGeneratorTaskFactory.java! /*    2Y   Node-path: plugins/org.eclipse.egf.emf.generator.editor/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 612 Text-content-md5: a769470641b9d696e5827f8bfb1df60a Text-content-sha1: 064bbc04b82a39b9b5ed91d5dcb1d7a7cf5fa6af Content-length: 657 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## source.. = src/ output.. = bin/ bin.includes = plugin.xml,\ META-INF/,\ .,\ about.html,\ plugin.properties src.includes = about.html Node-path: plugins/org.eclipse.egf.emf.generator.editor/plugin.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 500 Text-content-md5: d9d8214f0b7bf69a1ad45e0c33f1f0e7 Text-content-sha1: 2aedf67d39ec7ddbe14e633a30dcc7d2383fb9e9 Content-length: 545 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## pluginName=EGF EMF Editor Generator (Incubation) providerName=Eclipse Modeling Project Node-path: plugins/org.eclipse.egf.emf.generator.editor/plugin.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 4218 Text-content-md5: adde942dd2be02cc0e613f73442ac1e6 Text-content-sha1: 958457ac8ef458ba2f434beb770cb0167565e3de Content-length: 4263 K 13 svn:mime-type V 10 text/plain PROPS-END A relative path to locate an Ecore model file against the eclipse platform. The model API for this Ecore model must be generated once at least (i.e the generated_package extension must exist). A factory for adapters that modify code generation. Matching context element must provide a class that extends org.eclipse.egf.fc.generator.java.model.AbstractGenModelGeneratorAdapterFactory. Relative path to the merge rules file (JMerge). The path starts with the plug-in id whether it is deployed or not. This requires that the generatorAdapterFactory is provided too. This factory component runs EMF Editor code generator for an Ecore model. The Edit API for given Ecore model must be generated before running this factory component. The project (and the source folder) that hosts the generated code is got from the genModel related to the given Ecore model. Default code generation behavior can be customized by providing a generator adapter factory. Node-path: plugins/org.eclipse.egf.emf.generator.editor/src Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor/internal Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor/internal/actions Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor/internal/actions/GenerateEditorCodeOperation.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1214 Text-content-md5: 640f3c165c0f58aeb626c93805f013f7 Text-content-sha1: d761d1c5f4d4e84541e9d24f47aa23a47f58f35a Content-length: 1259 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.emf.generator.editor.internal.actions; import org.eclipse.egf.common.generator.EmfProjectType; import org.eclipse.egf.emf.generator.common.actions.AbstractEmfGenerateCodeOperation; /** * Perform the the EMF Editor code generation in the workspace. * @author Guillaume Brocard */ public class GenerateEditorCodeOperation extends AbstractEmfGenerateCodeOperation { /** * @see org.eclipse.egf.emf.generator.common.actions.AbstractEmfGenerateCodeOperation#getProjectType() */ @Override protected EmfProjectType getProjectType() { return EmfProjectType.EDITOR_PROJECT_TYPE; } } Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor/internal/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor/internal/task/EditorGeneratorTask.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1289 Text-content-md5: e7a6bc767a87cf902f667bf4ad9d6825 Text-content-sha1: d1d175890fc3ab5dd072592884c7ea5a49033882 Content-length: 1334 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.emf.generator.editor.internal.task; import org.eclipse.egf.core.ui.actions.AbstractGenerateCodeOperation; import org.eclipse.egf.emf.generator.common.task.AbstractEmfGeneratorTask; import org.eclipse.egf.emf.generator.editor.internal.actions.GenerateEditorCodeOperation; /** * Generates the EMF Editor plug-in. * @author Guillaume Brocard */ public class EditorGeneratorTask extends AbstractEmfGeneratorTask { /** * @see org.eclipse.egf.emf.generator.common.task.AbstractEmfGeneratorTask#getEmfGenerateCodeOperation() */ @Override protected AbstractGenerateCodeOperation getEmfGenerateCodeOperation() { return new GenerateEditorCodeOperation(); } } Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor/task Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.emf.generator.editor/src/org/eclipse/egf/emf/generator/editor/task/EditorGeneratorTaskFactory.java Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1142 Text-content-md5: df3777205a3fdcbce92f0baed9dd6013 Text-content-sha1: 08d495464a06fa8129ba827f806281ba78fc48ef Content-length: 1187 K 13 svn:mime-type V 10 text/plain PROPS-END /******************************************************************************* * Copyright (c) 2009 Thales Corporate Services S.A.S. * 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: * Thales Corporate Services S.A.S - initial API and implementation *******************************************************************************/ package org.eclipse.egf.emf.generator.editor.task; import org.eclipse.egf.core.task.AbstractTask; import org.eclipse.egf.core.task.ITaskFactory; import org.eclipse.egf.emf.generator.editor.internal.task.EditorGeneratorTask; /** * Provides the task used to generate the EMF Editor plug-in. * @author Guillaume Brocard */ public class EditorGeneratorTaskFactory implements ITaskFactory { /** * @see org.eclipse.egf.core.task.ITaskFactory#createTask() */ public AbstractTask createTask() { return new EditorGeneratorTask(); } } Node-path: plugins/org.eclipse.egf.engine.doc/.project Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 515 Text-content-md5: 82007dc27ac2993901de984232958fc8 Text-content-sha1: 416ed19a0f7c6f8d84730f5b271b48146d157e94 Content-length: 560 K 13 svn:mime-type V 10 text/plain PROPS-END org.eclipse.egf.engine.doc org.eclipse.pde.ManifestBuilder org.eclipse.pde.SchemaBuilder org.eclipse.pde.PluginNature Node-path: plugins/org.eclipse.egf.engine.doc/META-INF Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/META-INF/MANIFEST.MF Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 315 Text-content-md5: 8e77bccbe758e415b61adeac7f6f2c11 Text-content-sha1: 09893004c7c7d06c37bbc53230d8adafff169237 Content-length: 360 K 13 svn:mime-type V 10 text/plain PROPS-END Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.egf.engine.doc; singleton:=true Bundle-Version: 0.1.0.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Require-Bundle: org.eclipse.help, org.eclipse.pde.core Bundle-ActivationPolicy: lazy Node-path: plugins/org.eclipse.egf.engine.doc/about.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1411 Text-content-md5: a22a0b7b424620ca13d874789b551ca9 Text-content-sha1: 34826d06eba323d8b47f57e9d407c699ed8c1b7c Content-length: 1456 K 13 svn:mime-type V 10 text/plain PROPS-END About

About This Content

June 5, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Node-path: plugins/org.eclipse.egf.engine.doc/build.properties Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1126 Text-content-md5: 5164f2851fa26b0e886d391f61e7c69a Text-content-sha1: 7f02938a4770ba63d1d449159a89babb2fd4a49d Content-length: 1171 K 13 svn:mime-type V 10 text/plain PROPS-END ## # Copyright (c) 2009 Thales Corporate Services S.A.S. # 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: # Thales Corporate Services S.A.S - initial API and implementation ## customBuildCallbacks=customBuildCallbacks.xml output.. = bin/ bin.includes = META-INF/,\ .,\ about.html,\ plugin.xml,\ plugin.properties,\ contexts_EGF_Engine.xml,\ html/,\ toc_FactoryComponents.xml,\ toc_GettingStarted.xml,\ topics_Concepts.xml,\ topics_Overviews.xml,\ topics_Reference_Api.xml,\ topics_Reference_Icons.xml,\ topics_Reference_Preferences.xml,\ topics_Reference_Views.xml,\ topics_Reference_Wizards_Edit.xml,\ topics_Reference_Wizards.xml Node-path: plugins/org.eclipse.egf.engine.doc/buildDoc.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3281 Text-content-md5: b8c4ca1a940177442ac4f428e4c19a6d Text-content-sha1: 81c242c5406afc7c1bc4265cf76649c509ac19b1 Content-length: 3326 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/contexts_EGF_Engine.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6083 Text-content-md5: 0b72a5f225215cbc5ea26dbe88c6f258 Text-content-sha1: e09d10e3740a5ba13187d163f07ba6a64e263f46 Content-length: 6128 K 13 svn:mime-type V 10 text/plain PROPS-END This wizard helps you create a new factory component project.<br>If the plug-in is to contain resources only, create a simple project. Otherwise, create a Java project. This wizard helps you to create the factory component content. Provide Factory Component creation templates. Create a standard empty factory component. This wizard helps you to edit the factory component properties. This wizard helps you create a domain. This wizard helps you create a contract element. This wizard helps you define a contract element type. This wizard helps you define a contract element reference. This wizard helps you create a pattern library. This wizard helps you define pattern library production orchestration. This wizard helps you define pattern library runtime orchestration. This wizard helps you create a pattern. This wizard helps you create a mapping. This wizard helps you create a factory component invocation. This wizard helps you create a task factory. This wizard helps you create a context element. This wizard helps you define a sled-describing context element. This wizard helps you define a context element that references a contract element. This wizard helps you define the context element value. Node-path: plugins/org.eclipse.egf.engine.doc/customBuildCallbacks.xml Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 9283 Text-content-md5: 2cb6d2eeb420a4193f7316f06d58a983 Text-content-sha1: 6ab82a67ffe33414aeb35c39a751987d8c494972 Content-length: 9328 K 13 svn:mime-type V 10 text/plain PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/book.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 375 Text-content-md5: fca86b7d5a31c4907096617363f9b557 Text-content-sha1: 8b3fee7d789a2d0027a9536ec16253398c8e1e0d Content-length: 385 PROPS-END @import "../PRODUCT_PLUGIN/book.css"; span.control { font-weight: bold; } span.name { font-style: italic; } span.code { font-family: monospace; } p.nav_footer { font-weight: bold; } p.nav_footer a { font-weight: bold; font-style: italic; } .code-block { font-family: monospace; white-space: pre; background: #e4e3f1; margin:10px; padding: 5px; } Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/asset Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/asset/asset.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3091 Text-content-md5: 6b608cae618601395b04f4a04e79be59 Text-content-sha1: 97d6329c1c9cc4477abec4b6d3fa9bcd1779ee03 Content-length: 3136 K 13 svn:mime-type V 10 text/plain PROPS-END Asset

Asset

Definition

An asset is a valuable software artifact defined and playing a role in a software development process.

Motivation

"Asset" is a generic term to designate a software artifact (e.g., a model, a document, code, a framework). This term has been chosen for two reasons: 1) a factory component is potentially able to manufacture any type of software artifact; 2) a software development process must add value. Because a factory component aims at automating software production, the purpose of a factory component is to automate production of assets from input assets.

Structure

A defined asset has a description, a purpose and properties (e.g., a structure, a set of functions), the whole defined by an asset type (e.g., a model, a language, a framework, a tool). All those properties and semantics are defined by a language, formalized or not by a model. For instance, Java code conforms to the Java language; this code is modeled (e.g., for reverse engineering) or not. The list of asset types is open, however the major ones are: model, (general or specific) language, framework, library, component and tool. For EGF, a special asset is the Factory Component type.

An asset type is a logical representation, what implies a physical representation (e.g., a web site asset is materialized by a set of html files). This representation is also defined by a language, formalized or not by a model. For executable assets, an asset respects execution semantics.

Complex assets are broken down into assets, possibly built at different stages of the software process. For instance, generation of tool code and configuration files of this tool are built by two different factory components sequentially or not.

Asset Structure

Figure 1. Asset Structure

Software product line engineering differentiates two kinds of asset: reusable assets and products. Reusable assets are generally not usable as is but need to be customized to give products. In software engineering, a product is for instance a software application.


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/asset/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/asset/images/assetStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 67112 Text-content-md5: 853b4089f270e23b38533568ee03b922 Text-content-sha1: 98d93f2badc7288489866215bf4c30ac50e43a69 Content-length: 67171 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S((((((((((((((((((>)RkXv{}Bimj$)'_\GoxwW2hmR idGc1s7Ʒ"o\ͥi>-`KH?Sq i/h~%:N ܢ9(j?~/5C~-]Z4?7!j(#@niqqj1Ll` 5jpWm$wq0X+:>g_:ߋu|GXLzfo‘$$ |@@:i?i :VNou]rXm--maF.K# V"I Db!t4 `@X;$IYf4y`lGĻ? ֯ƒ5֗.j$,2ەZicrA QZd<l+DZht9#I\ywq(a.MO_iڴ͡izƍ M{|P޳ XʅhPJ|qׇ|9-PX_CjzKi]r2&&g47:dw񽇈N񖙣iZv2h.o6?0 K-HU%]_c־6x{ŗ7Ρ.g5ii4.R$eo1A^T8?4Z^qwcڝnw%O.5%Tb8vweEXس+ SI$[5q)1xfFrrR@JȦviLT7#w}ηI[PtWU}NOi8XXFK`2/+٧Z/h<ŗ~'gfM.lkV " u;ʹV4/;D/=֓=j0Il.lUZr3H9*\1Oګx.&&Q* R&x㺎T$d9~S\v!xiUT%֯lPNrѡ0+-Dj_OCgHJӭtz;um ܒ`hF5 x{YMR_6}dHI`VI$R˹^\ d㽯?Cᩴ+%ߞ۷PEPEPEPEPEPEPEPEPEPEPEPEPEPEPE4fLњZ)3FhhQEQEQEQEQEQEQEQEQER?hw ΓZ 3Ai @Ex5woB?o7!P^= ]x T4WY6 }{  jmCKT1zkeAiq,vM ! @ )0ES(((((((((((((((((n_#xfY?$^DT+3$G 㾞򦽄/85ok/r7^~p>PQEQEQEQEQEW|gڿ>H|gp7Ϲ }q^^CC _i3,4QEQEQEQEQEQEQEQEQEQEWAU|^U湤hZ:F{uy"Vbv2HbxK·c{&Ms\F[k??vڍZ'|$"ۃ8 +WZg.9xvMMPo%wQn$g?!ߔ|S1jz4Kb(ὂdX+qʊ騯Mx/ڦ\}U}"OgP[\1Ǚ+G#x/Eo*xVާkM-дݜ-cyjPk hpSx#LK=k^D"ɜn+{rO⏅ |:Tq(/u ͪ}q_-vk{a(\I1 _DxoEᏃ5ӼC MBZD}֍ ,ajB/PLx\$%㳸Y6*Jx`~>c+kOڇ ~Ǭ'3O(Hɾ3{[&l&1BV]ZA:Ŗޔ-.o!}!Y0x;0zԾ ^&iZ!$ǗY2Hyf%Io2K@w&Bt#n䨌`mZ_^&&Se#04xOBڄ"`r(ug^H~/2*Si =N?pײ|k6|_xRZjPh#Y[CIqlŖLy{Se-Ur-] jZa"=ԁ#VwK2$V+o>+_:V~Yy|'ՇLlҙ\ݪTDks[g'"𞹢Nּs>ODHhNg)ј©qXHt~;o`Kklky捶c+k~Eέ-~xLn+Ik&3AΉ-z;_ ؑ~J[톊 7ES(((((((((((((Gv_i6QҡWNJ/{}_r򘵋hl6=5+*F.nko;;.}zUgfCÿ"m^EA57Ǐj>Eڽ*Z-ڼM&H♬n3'}qݐ@,!>Eڲ|%ߌſ]>FO*Gn}\aT $Mv< w5+Wx΅_D.`*O5ï%$wiˉ.Ì-Q>-ŰzEx}?]nmZ$ J,6qnV$s Ƿ_~O;rn4tyv3'.(I@XG.wEzQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@[mgSо j+\|bk%'١I?&* MF^VkːAqZhZ_i⋏ͧ ]^XU9-ۘ @5Ktؾxo&aլY"N>Ϗ9oj?OҬ-aGj08UV(ծ.%:Йn;b`FI s\?E4Pt_H|W |GH: (l35})Exԏڷ+"xGṴ-vfKɭ&I`'DIX`Uʊ CмkI.a2۸u5p)Y"|ѭr_~'idj_}FZqdS4+զe(M4"8̞*non|gwi Hɂ̐I]ce6 qᯂ ҴwmV{ir]rcwZ>? _ 5*wDr4kkmj[uIDḶ9gV,%6x[^^[ SԴKY&Y٭Yb!E0بPkOx,h7kʋf߇i6g;޽>}a=τӭu'QnJ$2+[eWHFe؉V!<2^O-ni[H$@F( UfnC%&C+ PEVF籶{W-#S+c rxr2Xc"+ar6aq[eo-t) zb2EEHJL$)6|*09Kx'`]=3RQ@f-dY-00B>\;TO)Wj݃TGqV( ?ؚqG-%wnsg9NM-F]A,U %ĢWQHqW( Vz&,ֶ#M$BHqKջAY[@kEsȤdA@\9=dI LcS A; mGl(Aɶފgdo{m2 ;;x--X h :bwamIM*(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@<|">]Aą$)b^G>%iv5VǑ">]-Cl=?ڵ_ۻbT5KJFDWGuA,3FH4Ig <~'޹>_Ӽ'aicEswiG[]om3$i 'OOFUuf/x|1vxUҤa5SzAYZ(V+J빥U_LhZƯ^]Wz%M:i?s FO޼Ï?o.ğM>">] >Q^[ O&?o._4tEyo/?|D}?|ID'tU2PAH&UQKH|ID'Y4Oy״(o }w$R֮ Km -TWiH5U,6c߰ڽW@[{em,,vHO Q_.~Lk)^_hjWvAs=Syk! 1C_tVgA;ׅ>=<1fZG6>k(((((((((((|gu_kɧhe]\ 2p $ P-Mׁt 3ڟC3iYrϴ6ߙm@e;T*|7]_Sԧmbt >}!5̘,pE9=gW5~2k?p4&d+px'0,(((((((6Fs}}sM48PK;1(O ࢗ>4mqκԣp[ڢ"ϒr0kEU-$mmXbH fUw1;T U((((((((((((((iE&`QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ^ks'|/=>-{L̶)[^cr3Xq(D! qϏ58<=-K2Mʂ22C: K$}OïX|5𕞃as{|ONfI˼pUUFw¿ [{sk_P.5+20"( Ŀ,hڀ (9;Mi9 :_.7C:v/)eС/frK%i 9!t()tQEu2@J\'_skw|C=eu=/GTWYͺ4E܅m`v~tFnJYxWy}m*{wdVcD~TÿxC& zNjDgַv>\ylpQ@:E7bx|!%LJٸ-w7F{xg}e>/Z73Gjڌ HEt,ެ*FA _>3J9h z+'$mYx<]֝/BtDKE(a/ʼnbrs@2j?,5O x_G𖃭 Quj[[&{{uuu+ʅ7k6?h{>uO 5c=m5ݻ]"[$bAe[?_xEO7mڮKl:b5dJ(EH@0%o?fZރs GDܳ B3ʏ0epK,QFp0=k oK4{͡KXޤwkU.$j@[jψ~u#)⟈ Mx%dkbld%I$7AJkojyBKb<~P0&OٻEE i.Knשm2E(!dX,FPA׉5 /-omi7\@$M$-5 5H{+IO +~Wj*/?&!qy:|arLom-gS"P'a@<=?鶞"aܵ4<]{qvmHa;*/|&i/~*\x[ZUb +2q|FOin$'t,ZGs;IȔL_^%]ѣKKho'Tϳ4\Kjv&yN6c1G(s_!?3@ַ"ދqu Ni`5d,Ҫe+2'ߣ;8O^%\vi.DtGlbL*S)AKPjQEQEQEQEQEQEQEQEQE4AQE0 ( ( ( ( ( ( ( ( (_e(G#nZJ^mfyTĊ#"|)ߍB~"[Z6 ^r:;pn v~;࿆ n|W+@?fD,@Or'G[nwr1u ݜt &by-#1$e@<~Rp#ö:wm窽] Ke1ͬ2)xA 'EP_&X~Ϸ>4|^r|Z͔q.rۭ!|>S[{8,.|IY-:i__1?,PAyDddVsxEoj֚{9{m6zzP-b"ɒOٙƥc@E?.{[ϤDT ee[QitU.q4Z󓽤VE]bҼ3[M;Ni^YKfe N+}[EyNj<9VWwׅ}y:羚<"2j#qQxkfv~9'O>,e?(X  M[FI*@7 p?{#K6Z&}ol="C+ʨ 7>2P!_jH% ǝwvm(wpw5Z|FƐ.oQlGح4ֲFa5i|xGQJ $/H2:U TL NJ<_cl|Mg'Ǻ޿gtghmk],n+ m4]Zz펽46cH!7b4V@U}@-4U_ QxZ>{{:=ƣ5%ET&imtvť6 -RǍ4? ʚ~O/}2_@ݭo I"܉6 4 ɫ>ii5k5;2=ê9g$Ep V /xj@^,^xx3ᛨm5#M7d¦4h)=OÍJեԓ:VM=ҭ}s)hTlFE a1zGk+o mqH[X#)X ׀|nj|.5_ h0Zi1:Dx{QBQI'ZF|x΢\{5~$b:i ~ԣ3\ߛ{-9aqyp[ Y X#NY|k^@E-iIܠVF5MdxCzW-sB[Gggj$iX.|z uO ~_ [IX4i?،~k@%f'12c>ᢀ𯉢G1?CxY#4hzmk h. iJcdS_A&CL/Vutm[̭p2 w)X.|Ѿ!.W}WZؗF5hSP7p|چY >5z=Qε:AnLwvK1.0ߴt~B7k CO5x5.` \iVr(^F܆Eb&M^!!ZBkk}>[a`)_sQ@\wS_ 7Ml| v|Qqu=i17&Voީ&0R>UڧM_JzVX_[x6߭xSѬ-v 2=Ġ9bp16 C- )k#(((((((((iE&`QEQEQEQEQEQEQEKZi7kiq47,0TI'>&|Kxds,gcX7rqyr@31UVagNşSm[/9IИri\q ‘n.K)L`xbu+~RILK3C!gS[  kxTƾ2q_xaww lbRĤc J)h((((((((((((((((zKuKmKNed#]U(@x xqF68[Wu~cTg+ Z()OPml5kz|GtU[#,~X\^TNyڦyAsey #H8 ׅ͠p/|:uO.DTӳj:m`2@޵bΪ3ˆ|5m+Z6ڶk{g()eaEPEPEP^+:I>6xMJ9k[Ͱ\nJFS%z/!i/`X-ГU'swQ@Q@Q@Q@ ּ]tIx[ľ wjs4xjKco)exjTdl^E?Nx?ʪOQ^'*v+#?Ex Wx?ʪ( #?Ex Wx?ʪ( #?Ex Wx?ʪ( #?Ex Wx?ʪ( #?Ex Wx?ʪ( #?Ex Wx?ʪ( #?Ex Wx?ʪ( #?Ex Wx?ʪ( #?Ex 4o#u_x\,+LI$6aʩ}AD(QEQEQEQEQEQEQEQEQE4AQE0 ( ( ( ( ( ( Bp)k?hnMW{i7axVPYm-9bOSE%[,"w3Ē`Z? Ack1n#Ԥp,iZ}r-&E|e/]Gw{$zirƵhLqR,Em-k: )mR;hП7uD!;o4f4YmEǁ4Ěլ-"E^ݔNmMykX6 U🋎xoD~0~NIQuM9RJH C}J-Fim\j?٥hc k>o<uX:oLbY`iT8UXc)XjU<N~Vzeդ0vtQ(IV0nf:?O]Y|~څ3\^4 }~π ÿ tOOXyx&[>}i&|`E*>r,x7:NsA䵳4˛XbV dx84o\ շ+4p7|al! 7ᖳ_ :yXx飿c۲j`. >EQEQEQEQEwIⅥ)ƚGɣSܦ>7r0A\4Ng+m7_ jO䴕H)D?pUȠr)kP QֶEnz@hJ{@<2d@(o籗Ogqi#n<׵xB'++/į?˟#S@<[*MؒZWAώVԼVumʹU,JA8E(((~9%爢s&I wT_ݒtU{P@fH4/k|4B/WESR!4~ZC;Y"0`%4WPEPEPEPκoqh7>4xSUn5x]CuXJQK,eP\fCmie密 =6o7~)R|ۣjq}q FBFdQ?oxsj~%/5.-HU)vdTN)l Qۃٵ-t#v"Yx;[W 4EHDtj^)֧4|[2Ge-V@ d8(+uO6E4 SM<=ymCG|C4-$գ йE !EֿeWK|No^x_Bç%ؖ]"k1"Aoط $rwԯ칥YXiWGN/3wkɯ1q~PT!ٷZMw–~𽖻j-Nkkqam  ╥G) *.{^O š^qڀ-%&4j2Tv{U7/ZxDǯ aY<9JLxmu; Z 1豨]<9/x0')qlI ,а;[d kF?s_Tw3ůn~`XhMO:Z%ݭ<3M_ߏ/h5ҭ<aӬbkf@(.Bv F՟ /𝗎-A$) ղF|i89+Iwo'BO|(uZm.{HΟa$:?f7aD($bU6h{kҦԵiQ_e*;)%]#8q}_K׌XMPv˝ 2n ]8 o-7 JV ʳ(YC"& Ͽ|8x7^-垡ው}.u%)$xRL`&>cū\yE GrLRAYh_ _D&-qFBX$gq9X !<⯁~%8> Q/-٬C:Ep$HKCuqx z'LhgPҼM ?HЂ7VކYQ1W71hrf$=n>';wiK",NLAa |ƺΙ*xV)P)4YI+wܹ Ɵ'^,Fqo|Ľ歡Zk7ӻk˸OVisVG:=g s_u^8 9Xsz> 'Q |@ËN:=9uo&]D<' v4Yhcc*(fdYC" M3ܨEQ@Q@Q@Q@Q@Q@Q@K'HξӜbM.;|k֫ȿgJjsS-F_X,-@Q@Q@Q@Q@s8~%hh'u5H!LvX|ȹȄ2A (_~H[WC‹/Zժ祵| ;O-uںOyS{<3i6yh$0(t#ύA#b|{+[#/­# Sv֥K G O"2 ZH>q@5>| uM({;q#-{ # #+z~8~?iD]~z|] -,2>!$IS"7~@ Tmth/u$sRG#R1i (Uc_]Ş鴽fk=ţMGUojO7|O/ů\Wve&9V2I7EI4Xb8h.W~%1iAyYFڪo摹Y$1G#KGx[_~ exHZK}1\ v@vn_ ֽm/]Fe|=%X>w )rVJ : 4o:\w/u >ө:o;fs`"*"?+Cw?þatk{X‚If$3K31f$kn ( (_ǟ4χv6:} PzIKh(8ϵ}H5+M6 ]kƹoФVBpA*zӏ&>xAz|n2G=dþ-kAெ7śEq>$ҌdvsFmKqdYavIhOjZ,oYXJ+nwX2\S c\6-G>!zt5i59 岹#+&Dn AQE+T^g[nQaejUJ &1ئ# ^;Л⮹xsמs4RߛBx o[H.ʅ*~߳}Z:1iznzq[^[ K,I >J@.izE|M'nNꚌ~^(m.-/Dl)PLŋ]ܩZ>!|vgNZMׅ>uou-H.#d>>PCxz?\ϬGk ),.S,7ڭŜ,B${" Pj/^ƿjW&j #P.{U#UI7 8_W!?gLRu/{+|q-ҩ>&Zin]kLo!9g{--5@l6Woɟ~:7^o/IүQ~G]f;_4ؾל$N_y!/@ @8|jZ¾yl,as%{;22F7,t7~ eޙseCJ.t{2:mR]"]y"3 aC5ڃƑ?/&F/m>BnYmr6eΟ~>x'Zz&{uq-i_[FѬ$Kʃ4\H3஡}H4]iZu.'p*u 1(V>xLw-2_ |9𔚥y Bk}>8`RorvZ~^UDҦbJ- Xmڗt`k?o1i8%֧YH {pno'R5xnj04?|){!XmAm9(?w|u |Mπ%MJ8#xF$hX2am #}/ǚuQ[5j]֝:8UlncԆۃ ">?OѵEk xdJ-n嵐[abeu=:W/gEQɵk_6ؤjkdt U3N{'rT~"Oe??+JO cר78 kWEXK-^Ǵ?wL9G|oVttYs?ŵ “p_́m#a+q_eRb>2O>2}ׇ5Ҷ95kѴ!ty{&k˫Wp”CY4_- %zNJ9d} ŞF"!p>|#<xi xSQoD,'h%)'2ᤓz$Mzw? IWSooڦ{-pyƎ2ʫ{ۉV$>-xP~;h>6v G,tXn'g0땸|!| Cm|;Ǿ,4oro7^K%-qټ6 &(~4ס~xBZ<i~/&ٮ`XH4SFFAžGFoWWQ@C #_\~#~Z7+/.?-P|\_jZ_\VKsy(E Q@|ѤsG{#w__GLZ5Ed8ܸ}WA ~؟UzEr}sU?xJѬe嶎 r$n`'|+rx#f">2>qc]!:e֜heQmS?)if< on IjWe̓Z]{oEYn,3uHG*FTbk=s}x_t3lӵ+=1n4l {b`KYʗ/ESY? __v]U_ڞᏌ )h"o.CiQ/ٮ(i-TٶdKΉ)h1)Bſ-;'V>%uřg)̌G+e k/;G57o+>GjѠCȉOH4+G;6|<;moSD4ڄ,E4G :+dE; nkd}ER4 ( ( 𿃇>8c4J𿃟<|lqmTw"{>!>6xS>&?Kjm5."=mn# 4`g`'$oZ\;w'Y{/'򘣹' lKPKc׌<{xGoN.t.mi:o'r+vu]IKe%TBī|lyQJ^fxWya麵΁k~/l)2aO7z/nEXฎ8vyG8pN%-CCsOxOGnlj:G1U0)]sg ?<@L]__ uX%e@Dq*>Uw-"$FnIcԭ {[b`+!+A/P jZ]xFye40G$f9;uIalfVE+)\a ?i<Y}^mR/c/$Kt>Y ?mkqslWH|$ $@&+U>VΟmau K<6 #6H 8 Ղ2+.>R[φ-S4 ֋R9b͙řf%3h(.BB񵢱VKfW#A>dc=izß u1}iZ+< [Ix?aWomH}Zר"EQZT>3|}xW:φ|;YAw=SL!oeAb8̲ȿ ,2s6xA'T'O-j^?~5]Oex@I  A5uJn5?~;Åm~k^E;"nY ɴ5?~;ÅmzYs?A?6fOpMGxC.p~?Q !Oecl6^+ҿij>x-iqe?sYivd9MoDUw*z ɴ5?~;ÅmyiM{Bǩx[In;=HxB.fy㾇"l˒'LFvYԺ5<;SC|@Oyq|VH㺸K,!xz73_?'8Z& ɵ7^8ǎ'ai6(lmbKiV/*/ҲJr8o[9>*|2xC;MK=NOk.:EʤCͷvАMk3W%8Z&5?~;Åmr^)y_x*; m-|-_쐉̎ݤk$Dѱ_ψw<)1_jV\pEr! 7kA?6fOpM;jZM_M]>º#/Oۈ"'Cżm^vyg3_'8Z& ɵtS 5?~;Åm~k^EAwcᏈ>X˯2׼C}#M/G]jZ($$Y-aꡊEk|;мO:Ռ!Fhfd!x CVtk=Z6wh +YR2\#BwӥZhQw=*f%ROz_x|V߷σS#>Njnh>xhdH2jx?Z.:f'akۻp9XEcY㌖qOWoo?y}KˡkwVBigHے> 0fff0wkG- x]*_^ -<>Xn 8iRhvZ6WV6Rh\H[sosɸy+>- usY^ΈKR+>C C_C<{=x7YE,A0r۱!g`'Isx{GO5MR WXఱ]aֲ1X: zZ2-h/!=֋D|3sA>\I{kkזv",Ɓ8C7/!=֏Z2-h,Hx?ZcV[ :v/4%#+xFY6 #5=ŷ a>_0ž]_Ph?4P1_@=ljx{Nt;5M#Pnmo-tr*֥QEQEQEQEQEQEQEQEQEQEQEQEV7i&t10Y/[`BN2HBOh  fs>2xyc#%Wz9ok~.Y_؛DzI+|Tc7L0mvҳ8rO|'ýVMcG-T ԤTHWv}sb?r'cĪGΆ:4v?{~7|s#_γEm&Fx} ' *o-IӥԲI]R CJ|9:_,-'xu|Ho!+" RDI4gzviwqks)`Uс #E=?g ^^uI&I4)"9OBB9ݱlƻ7]Ľ&?x +ȥ2ԇ8[;%8٥ /]US![Iyjvv{ ]D3E//֑':6ofNiRX07:q\sMu'z .5׼ ~IytsO\09-d#⧁v _j9&vc\g/8o,Nj8j^[QH/-s?5X6&+F$c-)֯3ρGͳi 쵝M&qp&eUd`AQ@A 2G$g;gMQZ΍ ~ΐH?F#c|:'!Ϳu _SM仺!($+'><_Nլm"l6XUb0Ǩ%Q@Q@Q@%-+GZ=׿ 5efc5KXdNZ?47oiu+MgNgIѰ]d2ApA0y??gAi_|-o%ҭ"iWIТ~,AۀYl(((((((((/מ5l]0p^jtmr2 s^<3]jƣi閨duPugv (ט$}T~鏌âuRr.'D^nhuk]k[ψKԦPs['mI88!@G!_|7Kq/uҽ7 B壂e3Io;ߋtsqߎ03{TYbN-y?g?Z]M0"%̺`.Y%9?$eSHKEQ^C|ln{υZd*խf{[]&ʣefSmjwß |MXy fL 1/,8՝^j!̫Nu>k#`##*rWNpH+fWC:co;x!AꈪJˇ~3Є̎1I)(7|=v4mIK{e<YؖbI$MtQ@Q@Q@SJ?kի~3CczQEQEdz/ Uާsc 9^:s|Lw}&s6&rgRv1(/|KWX֩c42 A2fxRpȪx oJXz$aA $7ĪFϗ,y9/:w,</K0rtm`?xqm(Y;D<T-Oxg>i~$wgj+ y| <y]inmK8㕸qt`|Ey,\xk(>}kw_mX#=| { g<֢4iHX.~e|Yg8IrzWPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPM)0ES2xnRQ}whZݯLZ kp!I䷶+$HbQ /B~i}3P [yq-6  zuF3zᧉ<:|-'8>9;p"p6aO3QVK]2_6#Ge^^:mjX`9 9R+>xz[+mÞ#:=[x~gqLoqd@>.)kh-#Í:u?CmEЖ K^kqa#ori>.<=j:ckzƥk%+pw+IJw+kרMx4mh1[wlp.d&E&Hty/ᏃxG4m. ;tsi~Zؖ$z1K@Q@Q@Q@uB_O8/tl I֝2eE,ѓc{ⰴPiCy4Qv=2 9؎OgsὧZ߃米bXȀ:FATWѼuHy5 ?F!4?D& $(0 V-/i֒5ңWQ%$).>a^mڊE)]YY!iD$#UפUukWY lHA2Oo<{XlAۂ0Mp |Gs hz|b5))6-a+(<|/'_ xGAe߁Q,Y.4: U,ot}`@~?>ѯXn,>2YUdH _ hnKUӵo&{ J*4!PFw.q|7+~7--ii{ai r-ıY]BFl㏄:9S^7Xӡ) .-bi!(#6d2L.6`Aờ[Lp.eGV9H`ARzOOzsGk~$ uOJʆ;xb]ٙ-QT Ot|SMމ[/ .EMxmͬ.ؑMszgOM5 :]CTH0}G͔fdѼԆL YrGi 7ĹoTm7yQ.cw\dQ_ \r22UZ|u +} ,-Ǻ7R$_,~k6UHRpsGSP? [\<_ $q MolH 'a,I$~/= %LvڮkzmZo=\puM|]nt#t?_XCuP^<12[n&@cc!S7q]@n("*b]Ae`3'7TmBcybdO%$9IXa /I^x? _j/_ ^'[Y.hF3A FIpHCѯ/Zjlj/fԮȑQUA Q|:?uEuCZςC [sm% pcH\+c7g㯃';h񅾅$MMuyLUFE~oǖ oLju-CNƺtt0Yl7 H+QM #(<A('XŅKy vFۛڧ8V!*9z'ľ2@Ҵ{P u}*VcwNR7jQבږJL@Tzv׈S^3_f=R]B"[0HFٮ{1Hʀ{6}#AW=};:xh˙A#ǿCI,rEHRt?x[-V;0Dy̛I@T~j5* WD̶֥w1YH$5yZK7޹_ hcþ:kV.1vi6D-Ukuo^;:e7I2)Q˹ o#}Ŀ-BkMgQ0hw^#Yco.;vf2x-~#H>繷ckBQ|~7xro6wk-E V۝PnFYеxWP^Ӥћh5~Je8x(uB˚~?gιy_[k:֝K4&in'de.B5[֡\zNFn5.dw$yQ0S杸0/>V]cB=nY$8aeƇ\ iSx+B iM6qx/ԗR+Gz0DG/`{y_O|#5uEkB卼3GJߣ[*}k(-+ߍ|Ak VFt+-NKxg̸=cF"oP=JkG G2w-f@]+ĺsYI^\Nr+U}`<xqasp4]oAo&KMre9Y23r1/>1=}Jy$K >KV3& b22w4:dc~_ uF} [jqeX^\ PKrL] E/AGQ$|5bԧZ[8F>9@և-|-G]2TԴ`dsRbp#6Fs~ rO=[xV-mjfX-@`y"|WO4]xxM6I !~}sCo?٦յ6$_LuDxXXiSij!&K4Qepm*praK(%)%6Ѽy[/inѝ%6tѕee`@ ѿd-VFm!6uĹ.KMGPҵVĹVO =^go{ OS Oim<]ل0b|64ڃ&H䱵6V&Ҧ5xP; T!YEdQ.|J7_LϫA%ƜG,˰ܨ0']8A\gX¿Whz'ëm4)%Q9X[ 1߹>3|5M\\ƁYiR\ĥRV L]\^fvۺaKy%i.gF7GݽU72W] vlʎ7vn{) =CRhF Ssg "Xlur9|}Ԗ@˓]= 7^5IDkO1yB0~O22psg{ٌ͙p0g8[}luMo$v2f.GXpP VH@x|-m7>֬)嶲Kg`2(,ȡ 1~<&_Zh|=ᤱyn5[\ B#~߲n>' |'WF>,ӞO L`n4\*eY2~_T5>S`y!F{e&9_b*7Nz'8xK^#ԯ.RA[og,ZGFҼB'$z[ZjVJFl`.b!] ) VC,bxRskWv\Zml!YAA!F?bB?+3xcPh|ue0yC1]g4~׉ "jK]n-:Ft۹m 3όDВ+c&Eb|'??"c j20D 4j+_Zi6!P#"~*tx~xU/Bvcn&|S,VWùx{ľ"}n% ֶym6xPi%3ID
|,>x[V}I.E֚eݶ(ŤܻHf Ohk~hoPyVX`~㦋q7Gk뫋-6S&QIvE+} !`3Y>:'"Ş"ХM.) -4 $W|1|C_i<y}biu絼M۹(AREc1 [^w|=>WAq4}%*9 [Γ giji6%т'Z3EvtZ~ TR+G xÓ90k_~6ִ? BQ8yb}#6F+v ^ uow_;}:O4Itk|9i XhZ9~ //A-2MqZkx|!kVN%߉]CK0*ݙ~d*]VEbH'|a|2IjI,;&8F#y@%ʆa >m>>a%|AL}&HMװ \Eqo8P=c$bg]V(((((ɾO _m>l^^Kf?`!ysPEoҀ=j((((^UkJ?oѫի~ Gc5zQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ 4Ph~ |Y]o&t9 dmG@̪U5ş^<|9Gc Xb?#">?|D|u=E9N>">r~Ծ!KxE?G\[ءbnZ(Ht ]Xhu]enZ62*C Hrwp_kuw6#G,3(dHV$hvt29_ž(Zc]h{#9[#WV8'E{-AEPYt5 JŜeVtFkk@xfi#fek .. mmpцL04٣vlVOh䄽ΩYw!夞pJ1ҹS0i_G'~JؿgM#+_7G3&O^ IմUjW#Ft88'5o +b៾6 xGVnPw4 :8 ؿgM!+_7A~$="ȡ+ 9S9|/g:xZ#'uV \ղ弫KXAo!hacda)5cDQE!Q@Q@+m~&xܳ<sM$6 ڛiqClc(0ݮ&tW/ {ˊ>;2ys_#WWxOx_c }7[h8*>8A9{U`E'[\VϊZ/,<,+X+C<;ׇPJ(ج?' VOM3C̑r꥘p!O5Fq%_Wa[>U<+~`E?B0F='L0~^ + |`%5whr!㨖)VXX"#ب=>8A9TW {ˊ>aΏjW[\TWW= _oF .In:GtJ"Y 0G\_zg/YxIK{yHeɹF{yG":0#|]xvvrʖomcm :G$w<)3z=Dڈ_uEI!d!GO/3֙C_-/=U?~*|Q&឴~"mAxI# O'6+:=ҊT,h_H"|c{14kmE0ױKkI$1 ,o|[`%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ 4PhE_;\מ_[ĩ>M},Yawn[,3d=~=?.|1Mb]gÚ]rV2J,s4G18_b Q]&р*;Zwg>0N_ݴS? o躄g#C4 7Q JX&0N[8,'uصo-\hvyo..Jyl߼ s13-t_b&u{;ᖯ\BQRMbS`/$mնC]@P̒4'3uώWxO擧IiΩ>XK[X,2>Ɓ wI_<~b>>x; OGm/蟘+h Z}=BM}NZ߇#hd]ؕxn#Xbh 5-tYokiuyꗨI(eeuwOQ=w¯eqړѵK -#7Bq1rm4eWmLo i'EͤX#;hvs͕,I=H} }cŸ bme,#V.' &")$?wo4ux?R:EP3~:7;G'h4243G]Db, :{կZ<5Ï^ 'k6&mK3FB*-ľc]͜ztm.v g±~ |'"ӤVIJƳ@ @=\*㏏~>7l4+qxn-wWO}B;cΌk)d.X$ЀT卯G\ t=ei̦&BƼc9=k?.6@6Mn~)|[E;xSMDR4#AFޙX\v8]=tiq5*S$n𐋘8Ӿx_G)ҖZ [i9F5TX( ~?#:xSO>?.]Ծ*};SɆMPw6C!Յ{D5E&EPEP? };>%.eD8(GЁ\{Xl~|;bE`Ws&u☢FGҮQFK q?eI ?6{Oee9}>E\LS~7&QQk&qgH]t FM6 G!N Ʒ8c:޳exDMke֩,0?6BF̱JN4|HoloYZjMw[bySPRpn"U?|!Ҽ}<=xLukBHa!WyCFQ|NkS=A?hiogwMkNMb/iza|l-v6' X0PJ9 ~zC/8/=ޫq2Zu*^A[}qvx0&,6Ӽ+ lۻ($ so4qHYϐ4Ou% 3}KYh>_Z^̶Y6Why9j~(| | J#(MRO,n|9i1hsn D^6b_Do%gԯtlY_Mku,Tt?2X×fe /m#^%hqGlP(DFb[8$yޕUxMwVV[.ZA=͓!IYDB!7|Ϛƹww|Qyhlҵ+(22Dq$sKQJhKy)s{k:j]5{;2Dgr2t07R.Zc.s6vMY/NLK!PEO~}^i~}/Pק/eI,pQ;d1;7NG<.Akj)LQ2_'aYK6$Z:R.O.o{$iMq=d&# 5dA Cc_,#}sV x[ﱽԔ#;m9a_>ƷxLRep6idaf,f3.y+[ѥ{t{cT".0CAiZMΣsCpë"(S| Q8F*/*7hC7O'Qnqs}~$F䭺hldIs;cFzrG? S8X)]_-)C} F>}*Ns[.vgw)5]BMKZiSD5sH4 8/+mOjif[9&8#xabbRFNIQ_^gK^c5w6Q0$}ytV?uɤxfC2%I"1aY *$Ӿ5xvp^K}wLԮnfTom-ofHn$cs)aeFe5imfK Jړ@ T`G+;Y@>/ w,\kzR^[J 7^HQX} Z>7:=.u !/:m͠rվm<)jףW4ku'wKG桉urH?2{_ZQ淵]#Pk Z+kD7 C#x í 4bkڦiAgwe_xgh>aċ0:|=?Oi+K-ޓs?wdZC;i3 9 @hz'4? EIlݒр 3*B`.x,JA--mcKkV+fx$IN쵫id5[vR̲ocgcee4`ݥ̷12c> x:?Ii:Znu5յ;I,[?t\ _uMB-E< g% ƙua|[b ʲZO+{](>ӧG[]ēGK*- #0|S[EΗAOy ܗ-sŇQpϴmu 'Ѭ[XXŸkFxU8$ XƟ"BD4;ŝMïKI%x#8GpPEG9_'Kt*Cg5/gD%)7֥oo0|xŏxۦ\Y1[$> »NH ⏃,}OOmͨiwy a M}/ ,> .j2+ ,-Z6į?1E'Gk,_mfŖ1k⋃d-u嶒 K8ee-.WwMҍ?O!Vza3.&nǖ6 p15S)>׌|:%@ k|<ݑM2 !CڵkRY#+e9B[xsѵB5K2]4K;V;I,gxpHqL>˿JtKh֗xq4>4pwrʂ8 r4r'g>6)vƟg<9iFOk..`UCEYwB.kx'?ǀ[-Gˉ}JH`Hncn]άTvLXCkOF M(診@W\^(#TȺf?ڹWw.ok&Ҵ zV\I s#[YH#ug /~1Ԟ3)ke/:U7$d֧(hhR'0nfdd2KFI_Ӿ2K 𶃠^K:]9[%xU DYl;pO~̞ 1t;k. S֮c]^e^RLUo)x{4[ b8d¶g ?\|4<ş~i6xf73$UUP⑂~о3ok;j_hqwwGĒWdLʿ23+G7:HmU>WsȐ,A0CJpRy|.+mZSįgywjW"]8g#4ѕ`|W>=x^(5#útG,{k5=L؅roa.w >,oh:V=C`tt+\m b)&-[Gin vעX~Ͼa5FNuJ[>p.-# H rm%ܶK:~'/OU{vHY^&E$r`vhxikARV_4{KI Au  wTJ1%-|d&}E.4^Xc6s.]r.O H,Ko:tvyzkZ,L[7 _|'x|PI/+=bH [iu9TXhvW-?PS&0˴oٻg~4jkҴ4;mHDrf*qORI#ue)|o.n=}Ԏԥpos°ʏ x= aZWD^IfLK*8]뷞sdCliO70xNWHX.%LZ?ß ~"Yv-koj%Fխ M9!dd VY3 k $one/؍Y nlg"{|3rwg,'+xᵮuIj1BC$:EЈR^6$eڟMMT7i~MK_-׊u;ŵGu65ďqc#Ts ŘdXf/.2q6r>4ê=t((((((((((((( jue57)I`@ȧe<kP$Y|1bIUSᓾ;Kj(ᓾ;Kj(ᓾ;Kj(ᓾ;Kj(ᓾ;Kj(ᓾ>|6^ׅf]MnьhvTPEPEP}COլ.lo,lde<2H A#coDtub4;X hlT{%‹?/UG(rxUS|.𽿉h_xWBXh ]ʬcC$x3](^?/|o'ҴkAKx_0TG `Fx/F7;h&d%T īL#G.`ys.E ?|L~J_8o<=Q7~^=)%c0Ka#RBI=RQEQEQEdW?|s; WHN Va$t81 \ DdmF{ ^+87"(d1Ȏ$9/KaSg\ǧj3j;N 2͵:Q%ۡQNA ϙ^N2g؝MIP)gD/ǿZ׵UvO"k."e .%HHE HPD.ο%{]!)hAEPEPEPEPEPEPEPEPEPEPEPEPEPM)0ES((((((((((?h8O}cr>+8A=v+>6OVu->Jy]3nb3I z=QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE! _G⟄u SǞ,5?xUڇv| X@jV`4Gǟ.-,.l7r:t-Z!$ "%7 ( O/ٟuUgs4o^eH%1aFh ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (hI(Q@Q@Q@Q@Q@Q@Q@Q@Q@y_/)-K}FKMV+ nb]Cn1XᶑOxwY -tmmpm3HI\vpA&ޯ ?鋤Z-T/4.2: 7ieouaѬdg;T,pƹ98TQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE>+Z8ׇ/uеf'Y[fbN|%;0w \;rOG>Ҵy+خ;sm4dP~_mf|q]] ΉhV[Kmr25.ͺA7?+kވTqʟGEa _h[_};1]Ex4FD_/ҿ>h[_}atOG;/ Oĝ_  "dZ~˥IM_F7sC]x5l~O.fk#V/i_G4FD_/ҿ>0=h[_}_K]'_L-mQaEy)q]F[<B_0R ըQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERfZ)(Z򯌿Q>q^^cvi}XP:r>J(hJ(h4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE4AQE0 ( ( ( ( ( ( ( k.x2?x^Wyf'ФI.dh~nM!$)J}_-l5&zm+=ĠMXfj~1'[nQA&x@j<,ǿd!g5:]װGPQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE/]^VIѬgo%D.Rci$`' O@k/1xO8 ?|3Aψq|AM|AjjWif^?w w)jk]"m j~)VjؘLVEv' r`+^ 'WMLWg`xcj&o<֢Qͮܲi}JnUoj|-súMEqO38 sx>Cjo4mG^t 趞RNTw10C6kk:n>uRXuI&K$T 9*h}g s_u>8 -iokޑ=xPuPWll]*HGBQBgƧE?ik&OsuF=k42mtcV;g s_u>8 \o^ռ+Z[eσ㸴%Qogh?-)@THW?5|j~,| k m5ͬ1M*ˠ%bg3φ9/?:g s_up hxᏈ|G=Eao5圃OZdktR$n!i|5\hwx>U|Aa5֚}9VٮbT$ "2*{Ǥ<}Nпfu$O2#)T+)BPxl~4ix}uy aO*赲n@J05z_xw'u6sdA033 h.Ssόgľu^"ضXj}Ȑ[\h.{UK@]B,b\b{tQE!Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ 4PhuQL(((((((?|{^]Va ;E9ϸW3&NO:5m.GK4ͽ+.xeppta5-]XҬoº_P;t|ͼ W gD|p!}63ܭ~}()-FF\ i t+o>CmCO{/;[l[ߺp6qկ;)-F#ҿdJ+Jx~=+)-F#=R?߯Jj?Jx~=+ADP?בi^o%!IW S[_RY~ں׎qAn-}J;K]8LAm ~{#(e3 22Fh^UOocUt+-]%ב 8!0S^EEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP~?k??Ljjk=CGmb y-.fIJ0Iz_au_:=b /Z6bۨ-Wۯ2%\E'c9;|>Ѽ1{ZiW7Srķyw? \ؼ-tZ~z.mmХ6;/?!<֏Z>3-jdf',4Yᵲ֤#KHeI6XD,I7Xֿf+].'_"'ӆ_jK͘I+L0Whg??x?Z.GEំWG Zum!`4 \H>}+Ez+y5km{ ӷl5ۡ,]{< ne|gD3ǟZ GC^z{n]\^S1Gr݀ -OOgZox܋nɰ_J GCg5ԑΑBem;*9A5_Z6Owxz:n4#PUUc0 hg??x?Z.44/~趉s$ssY0ğj # ;kUf1EEV!Wtثv GC Context

Context

Definition

A context is a set of key / value pairs.

Motivation

The context structure and management is similar to a function context in a programming language. Some factory component elements declare value contexts while others use them. The issue is to manage context stacks: a context can successively be enriched by different factory components with new key/value pairs; the getValue(key) function must returns the value of the last key/value declaration.

Structure

A context is a set of context elements. Basically, a context element is a key/value pair. A key is a string name. A value has a type, typically defined by a Java class (e.g., String). The value can be simple (e.g., "Hello, world!" for a String), or complex (e.g., an array).

A context is valued at the orchestration level, in two different ways:

  • A context element declares a value. This is simple key/value declaration,
  • A context element values contract elements either of used (assembled) factory components or contract elements of the current factory component in order to provide default values. A context element can simultaneously values several contract elements.

Note: a contract element is built on the same principle. A contract element can declare values or references contract elements of used factory components. For the latter, this avoids a useless context element declaration.

Context Structure

Figure 1. Context Structure

Context Stacking and Context Visibility

The context management is the same than for functions:

  • each factory component call creates a new context stack,
  • when two context elements have the same key, the last context element is visible and overshadows the previous one,
  • A factory component just sees its context stack and the context stacks of its predecessors.

Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/context/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/context/images/contextStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 24093 Text-content-md5: 1e8c302200c2c6fe01e9b0c47038ef74 Text-content-sha1: 2c53fcaaee4c7da3f16c45a3ff0536025b62a420 Content-length: 24152 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C    " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S(&x?_kMvݧH8!ʉ"OYG|\c M=Cp@e&ԙ;!2nȚ:}iJOS%)4_џ~a[KKXI ٕ*lcY>ZWJwvZf]Y[_=B14 F6ެKF k#˹{|CG+9_-mMJS^2u;HynlZcG/Hmx_|Egmw I`FVcen6+nUFg%?ht?I.MVqsj/~#[R&'xA"+d܊]?=_; oCHCyY1\%b$#6[woW{q,VMCθ*Enc\(=4T[yOTX?~dE6=VkY>Qch!E?v=VkY>Qch!E?v=VkY>Qch!E?v=VkY>Qch!E?v=V?|:?|_D9k-wŨ h㍤mcj$k7(/ hU>x|7fh0\FdS:XrqklOcҵO]vpi2^YD]SgZ~1x/Y$ ivXVK$kxG VS4G!Ԡ O͹d 4ƻ. 2HHhܼڝ"&C'EWn%U;ҔWXIQF!mKu3ac"`CFO8&]Hs=T)8~O?3Y+I`Cs-=rF | zK2ODL]<~'&jq%^? ^:Ԁ ʊbج~,`2BPWϿ/^/U-Ljӯl%ݾՠMe1 CT+j/z]K&Y2ǘ\O3 I.B?࢟i7ҭuF& 댱<|rl$Ƣ PܶKO*6rO|E4LN~4:w?N)B!<+IvZ,saFݙ+_] ]EorڔU]~IJ~͠1#.vK Ɵ'^s׀5&ᾍhߍtheem6]+ D X(1+Z~hڟ#ݵҼ[myse[ʭlo0b9f+d208" 瑿 Ɵ'^s׀5:o-}CJ4^my -j]㏀|C:ŗthSqU*,Lj d Ow{j|qW<}O-z]bM>1=vaQ;67[~xmOmY̠6%FJj8׮G"\®'|#:֓g¾6c{{mP}ZKK}BAG\f(QcgCHӭԵ To4gJV(uI$#9rgŞGmcW㻴4,,JKFFud, cxo'>_{˓f}7=M;AW2呁i8Z]\jﵿknwc7[6ֱģ¿9YK#9XxSsjzλx+R7ݔVõHt"w+g;pF~7Ѓ.MT/5{]*O9MN no^ e&eW%U8DQErȩs;Xׯu:6\xIVyK,4iyKO?2/uݼFt"Rkcia$pl<>u}j>u}j.E.t6vDc$yRPf|  V֥Kkyna-}enK2DOWn;{)~ 5^Z~(km>kejxqYeR͵#DM-;F)h6bLQZ(1F)h9ψӾ'?'5g=3^ӧnd`rQ  d y&z'4ǃ7^\/: 89$$~>md|C]Ĺ5KTׄ|+DO(|lq"3pEʛZ쫪xLxƖ'61[4f1i¯P'C_|wI\3<זV;iXmCm`CmTKZ]}RAf4Z[Zi|6y`׹Q@ LX@@+v90DO a,si?¬@[Cӛj~To"U*]?iQ@S 79;ˑ&ӕ|$5̾ er(Wil|+"6lJ-~;|9ׇxW>Lj"ŔV^U܆ Gv'g@οJ_T$-+đ|hUae<˂^cgVkμc7|C_Dq-GNNc$ivDRIM*I:O,Iѓ%tcJg2zU΅WdY%X>uu*3=7cvr2%ƾ |M3HOx}%/5 $q*8*z'4/ 7^  0_ -.c;·g5jzƟq <;iFN*3}'5Hg?4xY]/SXnn%L d@Qwo%{?4/? 7^ ?|3@_ Ѡ{ݎ{ŰBr+[{ x)56"@R80R%{T,4TLi3޼? Q~0k/ ޻pSTN{zq8t8.I@WwAfD}? +e+?-c<א ^\fGr#((((4Ʀ.|1x3>:lԢZE{]\) wb~ZU/a_ kR\×^2QjlW4v^֜\2īHW ךkMߴu8MmX^hl³2RrDnFvsvߵ=֮Q|~&gYE b3o>,EG!mEx:O~ɡrn-VU@^G}~BrE|~7<7qy-懨i*?ZJ,#˛tM[]<%OW&6*j}>]0☼>&iYG f\m$m$a{}~ L|g_hx6isi$JdLZX1((((((((((((()1Z((0u{%Ɲ{qaҘ' 1ʢy2#L-z0Hj$_]xuiZwmo%|I"#o@Eom {/&}iך-gUN|7%tE=:e.1mKI'Whxld(߅_׉,-4xGӮ&ע7 SB7^=ҩ.a!QK-|O}CDž/15žlgGn25͵Әolמ|uNW=G$[vӦ7E4ݐAx2W;xRš>%tow+g<:Ȳ*H2߃8 j_7}Mnc ~)h/x;RígXǏg@apYƺ\22h(;@NI?W?vriUKoGg(=E_Q+?W?vr~?؀>+ vr=*ckCwgsݬ)pzaPEPEPEPEPEPEPEPEPEPEPEPEPEP_߷'Zw5گ»oHmI5_[Dg{GeRdiofVdG2"G #D_/Y+_x7Xݳ^qsh@R HéqXk#V_G#zG?¾^E/T?KY4s|/{XF4ĂM̊I#p;`7p*߈>)/G5oIu\\A.G-m-KeE[~vXvc_F: t _1xT=GO/ @7bD0ّlB̭2 gޛ<-_/:_3hWRL|hG[[B;c8?egkcW𮁢>W-B AwLE-%P $y/F׋)hm'/gbMNW5ʆ+ CJ '$cF: t ڇYCJY尙'9%6LDܶnmj.o4^(44 Qt1AF>YE t FΎU`l׍~+|U|kGkX~6z^̆O/bOk<;m= r1MҬt1_MM1]H^s0 i5ƾ maxXj]Eh")O5@i#Ye }+?i&6x_Oj|{a[Z|u+XfxὋY.1 "܆PFyrC(!g{U>" tJ4=z[xG%Q s/H+n|EV^>- k}$rKin!`BrX8PIJ+~,j2>-/>RBVеJ4د.w[O#KFFe>'jK_X5/K};X 6WRi>pc"chh>h"x#O:fiUB,VQ[8&;,w.pAZ8~~\C]YA$}TS[pRI&a#c>޻nqqNAi,$C8Lj``y?es)٢L L'ςS=i]ZQ}'mw}MN<[#[n a|hck⧃n]{ǩxiUΣ{6VI!AR$mom+rܼqxgWDoxYQTr en'1r;+/ſ _D?S?+? G@?SW,_+^x|-V~7z ?@=궫Zhzeq/qqq3HE,}~-| !j~Rt~(m-1x6m b6=T}~_g9^ˋjxM!L a`2hմo|sFs~#[/kv7G%#'u*8Z%>Y2.oƒO*nƽEUQB `8ڧ;k9u{MA.=YuKk渺{,7B",Ket9:PqBM /(_??S?$V[H:d"q)rRȳ2j4<}M^3TxwwpEqjPk<+Ɨ YA;]E^GG /(_??AE '7?\/xZwxX\x_r4W6ב,LZLYLeB(I?К|5[xJ[|g?K1oWiU؆Q|;GC@PqBM /(_?<=RG{3xY榶s[AgN l#UAj?4'cP~aWe弄a%3 #6 (/#W_P"Ss4ƒO*nƸ;Ꮙt ;ľ#敫i[ÃZ[wXAӲ傁=).<}᛽kZh<oj:4MޜG"t) V!֣@u _P"Ss5/_i+ӴѼ1}mz#[_H2 ((hƒO*nƏPqBM OzL:6tv-M:9#s#S @c =%'?+/xx'[KUԭQn[q4ɶ5$ (y_{'`#}H1rL]¨ <5jп#h9SR >ԝCׁٵ'ĺ`~<-F?FE[e|w|U7]'4G'@WpR7`g8߈?15.5;aմ٬/:s7mmNqEQj[~&ܓܧ{uO᮱i:ρ/'PؤQ,e@adn]z9偮N𖉣Xi6VWqE5 c`qbp2q\3U"pO5>ar3J/&̲WJi|2ţ8PdzH*2p )@V_i#^VmLfvVY00"u0f953U"pO59 sX6Si6GM{{u<?G>EY~%{"ڶhCp8ݱ3Gf8ME[' mGL8Jh/?퀈ZOcoys,wps#=BY Zi>Ҵ{[9aEHI4 cf^ҿgZka=S6Wp{%$1 ,arg |D#Q 7o3j9r3}uijViK$@Ų !OoS\ω~ukhn=m}w;x8mHH\O~ky{i6w7,wz֭{6pQ'wq9"5!UFMv-*(EQ@Q@gfW 5KH&dXiQ[Vhb$w1sKѭ4; k}wbUDw$ҩ#s[Px?|iZX߁tU^YXt! 2pMF5'׋.(pA  c&+~?#4Oڛ(jҘ82;gf$V,iy - 992Q??Wu=+9u٣Z sNƷm/Mͫyvj҉3 G+ 7E?zG4T zlm(-?uܷV=(ǏO3_SrW%R"yI64Ǒ o2M9Fxlw {qt5}OX* ((_үf GgpmCm5Ehg:)U'$F}ӏ!O(\pxOt.#J#{)S,Y.'=WjR d:Όu;EҵJ[a6[/" K:|t  Ex_i |^Լ4 ia^KcwfOvE[Ƶ)Ddu*?t((((((((((((((((Xbf3W ⸯ [巃R?iVݳ,),DC@'=((((((((̵"=|Mľ#IS6e9&7'p\M R=2(((((((((((((((((~=o xOB%_JFϫZ͘ HNJ60YO^4|3⛫ZOjV:%ׄu%>m&'ha|1jGYkԢO1mŴ< čۂ$7W|kn5iɬ^n|d{KI 2PT*|w/ м'8SL kRC ^@c@^i0L" UMu;=cufM$܌@$2q>y^v$[^iZޛpJPX٣seRQI< ] ោ xjt NC;K $,zߢ((((((*y3Ŀ]Wsi|_^.g-D*aʜrW˫ɞ.< ϯ4n#0!>|%TsZ>|;~?<akhqۦ 9w ]Y33ɮ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Mc'^_?T_ xÖ^5sZL[ضbv!ɼ&Rp,%I+o&?ď |A鵍 hV'LY=ñJP++ᅴ>'O,݌ oonWyb9bmW_S7[6գu) *  #';;4eaɕx@iFOVCq5٤cipwlp=>.|cEѻLO)Ec]YK.WrAK "UKi9m#ч1rwd!sC?2Fݨ#9-&ݒ~^(A/x[ _kzi58ܞuU@` R@ʼU~_ÿ!l*Z]дQE"(*i}JO%b I ]|gjMeizetfo-Xܜ{_xb "_i1k i{qЮ0A7-)l/h-,㺜΢8>g W=+V_u-]Zn-so-oC(꣌uWuǩ5;2mR( .[6#9 5_д]sREu}VoM3mÑjߢkZkj7irJLgqrqs[ӴЬ\>eLE<9?uw.7 W㗄?3-OZ[ټ WC̖xp} 27d Wc>[Eu,ڍQZʰ\;ΡaG$|<(w 6 η[뷑n[g,Ưcq{}s m,$,ǀ@(4AxK׀ؼEcCaǣ[7ʐ;3KosK8䍇Pdc\M8|hwmVi-5-SIȋZq#;b%%kzfhZ}Xi0(Hmm"X{U*gOTX?>dEhm(X| ;G5,OҎPG aC'*,xO흨~ A69u.#u)KfmppY*G8AF(iy_ϯ>ſ6gn(Ds3c,IG aC'*,v;GF(iq?|?¢ aC'*,v;Ghr8kY>Qch!E?vQz 9Cy~OjlH 7'zWw^woɤC4ʼ?ݝ8He A?zaxW/sw\^էrIDt2ITes(EQ@;BwV~:x{ⷆ|;w]BOi֏41Mȷ E{+MkzK#+[O?aetqgu/H <h䐪?тJ׆x@q6_xv(I5-Afv;wR /"w1 ʶ>7cJM:5 i>uxV[|Kj'VVAp!F`4k?|n!|n!z<ύT#4ύT#4^<ύT#4#G4"]CxO"Du&2+2rS5Ye<+<+lpðM||Z΍{Mxk kۋ=*8-+ZR(U#t?.ԴWY'4Gk4=?V-"Y-o+E$%И>kE'%!4)~&!4$5q5}ix< ~eڸ#hTé%?Α=2f{Vd2D)tyǀ>/xmwIеBU5@A]^# B›Uiuxjvzu~*j~{{x;rKwWakm#!𦥤j~G"~O MkI􋻤fyw@O2Br q@]c-uQ5F/J l-i~ qNH Qh Mcλ␺-Bx_pǤ>ЫFYH?A߆~Si >iԶ*d`:cNMsڿ(] U֮&[nr򪪬8#x620( >&¡𮭥Ϫ^V^(4=ɡI$B^Iss6~ymS|7gVkD/5Ʋ!,\.XR0רg~&0j)𮟭jlۨ[pU%EbYUbYpI5u~x>=Df}*QPBBJ,U[!K0I4X.2~#o+ Oj\8HKK9Gʻ$1\'|m_:5 %m9 /~f:U6^ |9i>juo HrG|ȉ0I!FNzm3?~`6q;V ~D5.[{ 6ko.]i)䵼ʨIۿ߷':R|7b?n]3bE:},jFFǫ;v5,N.@ [$]FE{lTbTQEAQEEu!0<Fs\ y&ᯃF,Iڳ1=I&>MzΟ x7 O7\՟Ǐf/ >oRr̳OmuG [pA_@דxF>_ki㶿S|i3ƀ5>0on?TN *ˠZzȡH#XE5UP`>(((((((((((((;*'~~ƏZj[ki[KC)&1eloWK*pg7@/A'w.)x>7Ѓ.OG>7Ѓ.O^EbG}>}>Qv|o]^k*}WN,inu{z>u{zz(Dx_x͜z<.eN)K^ɥOFulMh]:3ۻQ XXGQDvď;Y!ա.|Moj[2ʰ>1Β8mHԫ>%|5Ѿ*xemegdsge)OLw6c 8afS|5i~$mHt;麪i{xͰ 2֚۬d]s> m]wPS~>2_ Y06%/IˮND/u[-1_[iZDž:aNW[am;HVDVs*W܊W~ў-~wKx[U]2Q7V/g̊HĆ1:WbT >8|Y xAk37kePppʳ$l˒h  SAχPSPմjؤda˗qF浴.;cſ \} ^SFa~edN@Exk/oui^"_Tic8DҪ31*UgA|z,oZ|B]cU V JkKyUUFFǙ)vrcv~?S_v_xo ܝB;`_4GF(‘c$+SxYumhZUĚd^&dKis{('d| ̈7vG>0A&ᅖRƫ2m$ŵk1Q&) N&{_ih<7x&&WmhXق4p"?W|O>!K|>|+-+L3\Yjv+u;"΢2Gəkh?CDO}+Z(lnWy#ζӂeY/;0 E|Y|8G<4|+-vc-&uci ҥ~~0\-I1xGY:$&-SZ]Xy'Ҩ,@>((((((-Glzj:ΏG_ey6 j:*yrOfJT?cUIc|<լu7zݔJ&(oVT7R:x}1Exgt>?_2%ٱv~ϓ]x'G?Zǒx}ڗ^]y{Ec?8Ek{Sjj YuD:/|TਹRFq~S7^ҢNV6o$:]D2 |r8~<_ 5ۯ>f鯢j.,)@*yr-8$|</W:/1u4Iu<5_"-̰j+wWvqm)*_E@#S߃ :Ö\7s}Aw,?G2_a?~aYK|ɧYFऺli yϊ]j~k>ݺ6 80Oao|`a@^KJS}b?=zHl ??tSU+?@t˨u=cPQ^O'Y/|cn:̿d;mBYণOGL{V}`Fh-|V~U_]]"oj wNh;ZbxA{M',G $P\69(2YDh}otx1\ID&anbYDDIKq|.&F|ѝ7>,ޱ-5xW2UPho[ڭWxXkI>3*ȇտ>-th~M'Uo!ЗWdI{Dudy8 ?|55ψ'W%j&.ufWGWKdҚw41Fޠk~?g5Ik h~':ɒ!kXZAr;M4|=VĨĚ|+ TĮ)ok6k|Xfkcʹ;g,;6y >>+V/MWW+MHJA2G+P;);Q~UϞ_tGR@~"4ȯ(Di⶞4**%T[EiZݞw?)R{M[wݬIL$0 < ½N8˯`M-x~(ov+caO;175f[}g^5}_o,SgvWinv )ق-_g;YoIMRI҄t̰D~}_ x$-j yJ3(j3*I(;_ =Sѵ-TjV;#Vӧ%1c/o"QF%IN8/Im{4k-'OMo5&pHT(-i 4}[{sZ4~Y<_ʙF <7k}u6I%G7J2 #3t_jg*EQEQEQEQEQEQEQEQEQEQEQEQEQEp~G< .D:8։K)#'?a,Q\xWë{77;BŐHP^ExJ鿵_ee=Sf̖I[$RE53ឋ_kKy<,EuH|X{ohwٓq3yѴ2UT+'|i?!oqO F}axWU5X缺g4&h KNJEs2 Wp$U"> C?\SN/˧.Q4j+npo`N_WƟ(s g[\Q̅#3h]|4Р楩xK y)i!Xmd9*:Vï |NGwtlɪ%a@`8a;!#R[_X[v[Fd;+@0D u-*oG}0k^.mZxKk{sn% a. w;tۊ(PQEQEQEQEQEQEQEQEQEQE Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/contract Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/contract/contract.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1856 Text-content-md5: ef7a572bfa6e6cd232b762473b391845 Text-content-sha1: eb0a053683fa4400b350e99877fedf1c09cc4d22 Content-length: 1901 K 13 svn:mime-type V 10 text/plain PROPS-END Contract

Contract

Definition

A contract is the declaration of required data for the complete execution of a factory component.

Motivation

A contract presents required information for the execution of a factory component, i.e. for encapsulated mechanisms, used technologies and decisions to manufacture a set of assets.

Structure

A contract is a set of contract elements, corresponding to all the necessary data to achieve generation tasks and this for all the involved factory components. Those are a set of key/value couples. A value can be simple (e.g., a string value), complex (e.g., a list) or a reference (e.g., a domain model reference).

The context of factory component provides values for the contract of a used factory component.

Contract/Context relationship

Figure 1. Contract/Context Relationship


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/contract/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/contract/images/contractContextRelationship.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 34796 Text-content-md5: a2746cabbf37f34fd82a8f8e8f77e93f Text-content-sha1: 408e98510b135f916687de940f55bde5c461a013 Content-length: 34855 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C   [" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?U3]|5+3@}2Y![_̒G yn *Hb1;'VnTdUD}p>3_yk5OAo>g.ogQWeB~5i+;g}]jG3C_.oH?[gE-~LӮ_CKCND<ۈ2 QSZwucφ^MmKPZ[GpAiBҫ*MMBn>"uE?տ"Gw~j}k~0-EDv~ƢR+w8g,HPs]$~C3w)|U7o4hX-SMPI_2"|G +~ylh;8|EV?>"uEc_wӼ[exR;OUo"V41\)ɹa-dr1uk#͠KjneysډC[ZCf0I_=ſ*Ě6 tm c0\=F9crWU-.ΧG/Z$Q  [+ .~tHIxw\$rZqL0~о#WKY><XnEX#A.fũbwΘ 7>"uE?տ"mOHI ?ZEZMh]K!W̨ݵ1 O:}ož SV}l[qhpݻ7"G#Qv>c4q>ʊ;Je,0Qd20~_x;KX.m_TfIQ w@8Y2<=YnTdeg}]jG3C_.oH-j/xl4X'Ӯ`{fp3Tw]nQ_ami]6vDQQerХyػ$ A/3C_.oHv~9gtq qfH{\޿Ik~uW6^魣XFKK;x UBtWKM{D|EF+}?Pki$s<01%]|3w<9xQOqc6xBM}mqQ<-=J">^?h'6!{jwBI3HhWԵ+]#O-byC5+̭iwe4]Vxm\i"FP(R8&mg<ˍMJ),~Z[|B/"yfy D3 *X`r((_xF=KK.~X~ҟ5?[ B$kB""me ZWM[YcpB A,ф}G#:rd 9g: =G۾;ïiO>?״#B弻h$}6{a e9biP#6kCtefxm{/d>tvO+X䏑Y4n?RO"w{u[9NE_s#SEƦ!:LWhݷ"f&.$@H*4f>:|=#hб t]U?W>8Ӓ-;=np׷1%xU+ߗ[=_rfS[nN$~̚gtCxE>{(-lS/ mjYfF,Uy¨c7w kE#׾>"ռ]\\^' ;xHM$S;o5/x([ x:šGThYyoU巒Hʤ1+Gx{o5C;,|FyAi!t V]fJ5 9zPuS$1l%xآ/!Xo?|?h_./{lmu%xۧؒ! R7ۊ >#hgEo5C, qs]QZ)uK=xXD\LHb(ɉn%458Y {dX"c !0c>W;,|Fyc7w 3(+^E[ E6Bm"8c`,vC|+]oLJv|MZ\hWii)bi4q.n}؟c7w kEЬ˞x[@kyImJmSOy,{)Bs/ ~|{!i #Z@O @PNd,;,|Fyc7wf߲ށoki_|g%χt/Z{e4TVQ~dvYٖnU𵶉MW]i543j&|ĊM#w1c >#hб t]P?EƋ+kxX z]~cbp]gh-V[D LݞNj VNuM>_W^˒9BΡTn(係X ]kn5 _6 wMg*Lț<+ vؾj?>ms62hi7vw 6 Z_޲vDeM-? |y~O|M߹k;ǎY# "HYDEUs{g#|{ߦ(ᑾ=ѿ?ƽzdoOto_0\x_ i>$Ui-t,Q 7_POG7'&=oQFjLM"$PŊb }dGďHy ^LuM4c,Ku jOmaE Qt~O&T_Ib{PgQ?m/x72\РҵZE)Z)KhO@s'xGZ'l5 k0kA%ͤKh%j.B[,݊1@%7őþ+֟FύY| R2 42 ZPӾĉ<^[}d:ٟ7p17cQv|7& r-M60–gT|Ѣ{ܶѳᏀ6'bO/!# .d&6)3 ?zB}-1@\OsFӞ$/)]HdԢU( >ob`g5k ZMa3$v> kSV[xfGZ)Z)62,H3(b{Jn4&}Uhr%쿲 _oxiִ3J6^VM/7U|UiDm)E`׭}9^{G.4}-7xSX^ "+H(\G<e'|7 {5G2w#UN]Ynt:.U`!ڵᓾ;Kj(ᓾ;Kj(ᓾ,^[o,|=i 7?C^E0)OZ(QEQEQEQEQExxH&^2͖mW0Iekr'3$&Xx!ᚸ?|Pk 7-恨xK{5^8 -Fvy[w.G̻~׾x?^"ӵkš&M}C5ͩVܾT F4<_y? ֞)O*\O/gOya|At^+>#k:u-HOceja;F. 97ǁex54M2M>95 dO6{B#F[iLi7FO֞t]2Dӭm#DEi"a˂D?l<?[{χ^]3Gu9`vn..5JbRrdW4_*tj~UԼ3&y`÷J o FEDNC>| T׿7OE8RUpQd=+zN-(FIpa۝U/hmggiֶL}>-#H(^Ye\$qю@>|m9|{t/ ]_o&4m^H5XsS@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@'Rx4 +Sđ]6-mh,MYnbN%K_17ςJ~+]C6PРh$E$('S#XcHaACf6_- #Jk@8?mW_xsGkm5q%vC̎w|@G:&Ð<-5HzC,B_b̌2lXMc^ѷN&=v.һHPoq=;GVNSt$͖Z".&n1ߝֺO/guoNexUM%[fh[2n\9ӎc" U:qK=W)hTv3$jz_#3j]=Ƒji ET"l|?*cy-Քg捔9Ⴐ*m$4%~cx_|/}R4Z]"Fd* hN?S֟w4OW:k&EI buY'J&ϔf%އ GTgú~o2ɹ fb)9$HQA+ڤ $ }h~)|T>vŖ^5mA-,K$ Q>.8_-]|[Mklh: 뢱E$B K!'Љ`pX@w8#Z.ܠ>Ҁ?>?hOFE>Pw|7X_'֟oT 40\rHQj~>EM;S.ZߏfžWZ;6㴉] [:ɰ\gI|ƉM7>>+aoɩj&-֍-͵7$l1_th#v6˾5+^5| +Ķ>!]i[[w@:Z7r`dgg+"f%b<#F"}e(P((((4QEps|2MxSEkɷ71dž+sFBB#W-^f_i: o3Ix"ؗi(]'wf;9`gyxSiWLnnR`gpͳm&Kٴ95(!^k-2FG*TJEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW¿:G[ Tӯ<П"e cY~V`U|_DQX6tr_ZIK%k(Zm-uom(Eo#F]sO0|BÉmMk??-46oi[?/4juDGܫ)w.~_|Mw<3SzDž*[m#N&A81eH =/0|BÉmMkWUh~]Yii`3LVYT ?:>/ef)nlEɩǕH@9dR|j4 Ⱦ߳l<+?+]N>M@Gn|*νkKAcfE]bѯʗIeT~P_.>G`ώ QԼmg:Ν4"]cxͬ*8fW{bVx_V+٭64 }Bd#瞊=3IT[4WKxC>?sA[  AWKxC>?sA[  z_Oh|?@EyW4?7>!?᥼!@ ^U - ψio'n|C4WKxC>?sA[  z%qx Jk}{OOKq&GHP1ʛ"`)8ωo-5\"݈ TLg APӴWx_Ķ]Kq+JmR n} /8mzgδ]?ź%z]ZW@mV4de9CDT/nԔWOjx{f~!x[%F&5fU02qyĿKǾsW%]/Jں_BbXDKx b}VS +ʾjp;׵mD`˕UFVqX~M2okqY=%?Gt[jJ,VkOA]n#]~tx~ |NR?TWO ErRX ;@EyW5,~¢c|ާ/UsmJn^ax}\7ŏ-J#ӿKޮi>o7F2K)ewHXUw*𗍚E/w sNWL?}>i -fA_S |g@|*}F[ѧm/,gIauFJ,z;Лҭ֯F`7YS@?edWR.3K B}Z6Ꮔ4k[뺽|-́I|\kF 2lxZɝ<=qg4(N%d m1sH B}~ w t/WfM0\kwʧmlEk*xݽt?Ɵ.xE>gͬƩvjSd1v'T(v$HݣF aO_Yo}}j7T{w @m>@ 69 >%u$Ή]kH2"H<6ɴ ʎk=!PY<'Ṝ9֐ (eӺQE iE( ( ( ( sſvnnω-B"I@<= U5>]x6+œ_Ih./Cvʊ쌒G"}WkFLՌ 4h_jt+|A!VI4bOax6[-FY`V',쿏u9ykmϦSGwǏ/]ї,_4O skjDsٻO5M,j() Bg QOxTkWhE[q*tb2jwǏ/dZkWj >>Z[_]ybw56rW%r׃i^,4V:ib6W?/<IbYPzeC&fћQXKʛ?-!AQ"7 !;un_.FÏP3mrwUҵ+J*[yt\ hI į&0J/[ᘭ|T ]mDZ{}|Z掭mn~|+OeR3-ֳ D Wj Qڑ 'gfMQEEPEPEPEPEPwGű,R)GG `;?#\E<" l?GdZ۽I)XFrK ( ~7"ڧM=ºm΍7gVSZ<#Zׅe(4k{[mWǾ#{iPAȷW+#{ԛQLJI$G1)Ԯ99_~-sH_/›kKk}3KO KPDŠV0Q&n%CmMkMj6ncY]hX9%He$2&s[YxPE-o-M3V$U `pFY#9~x/5mt-g9ᶱ6ױ\Cqovk!HC8m)]TO TYe oP imK I{uMS 7Ur5Y$z]a{M]tkTҴGư̮$(g2_K鯶s ;E"J,4ˋfayNMS 7TW_~$XsskQ K/DP2Y2IvZƗ펫v4cA.n0*XlW?ZS\C|-wupxgesj}w"ƛ>W, w"6_/cYĚ[*0ʲApA?DSTƒM]s犛RΝymXstƸ!ay9zWxZ\ z[λl/4̸\$p8oO'? o:=, C Ghv`Bw-7.X̎ rF^2>&^\GoK@T_[jGIcp O]Z[=&mSLYM1$̸QH$3g_V2#KxmsVվͳ_SE DnbW9xYI =+?SP O:{C-`SI2rNӌd^$9GW,~+}ٯmbMjtAԲmÂd2#pRJ)s['5녚ڬI+F%eA@F@ډ4_49񵞯kpuh#&̪V(((((((((((((((=~(Mgߊ|emfze6LJf(̤r+聏j]^nQ=_XvjXtZ\$?lZCdž|a{~xIҵK+}GLE|1>6$:n-.%8wtDb.$ASK\ji ֤K!?Z5ύɷvo3|~8|Z-!5 Ú4O\jl."LK)fiI&;`F|?Ni֬BRMFNOGWL$.7m/m{$]ͥ&=晪]\8dq4hJ+;FFktorAY' I$K3K1$I4EPEPOZ(=hQEQEQEQEQEQEf"Ώkz҂:e\"nv*62p燇 -~7kOk>mk8}Aܑ lO  rC*GR0U8 P/I'^ %.vc`Z9K7W# J.4;9t뉡I$cb*N RFGEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW|xG|Gh:ELԵHmTtdJ{fƟ߈m|=gZ~ 0pFoXbWWfk~hcT-0b6SPG8%Y;QEQEQE4֊uQ@Q@s"OxBN %c%'097?Xx?@/.on_ʶPI?e3SFIxt\+^lA?˂>zgQ Ɵ]-u].؛RK{hoHM30P뒠f ?Xx??x<=ʪ:փݟ|5 O?t_ \ `hyt$)]6sD_FoCh4鵦~,/5{? yVSlh3}*Ć_4#*W YId Ɵ] |gGMӼA\EPOsc77I D%1o$N͍c+m]Ҵx5;^gK;H.Z1 Ƨ/96]OMXOm.X[B{tH~y׏g;'|K7#te"MMw-̶s Kv72e*{739 ݮ{q{]ܬƐ_3>)m:]{/-ΦeO*܎I3;h ц>w2ִD.i$Xv+yqE!P_ u׀=eQ ?gj_xMw^_\7,Aڭl?.|% k< wmt$Cuq acVgڥ 1swг Ɵ'>uπ=Z,|?&rj򵽶erW|;dq`U`N>%xGG@rbuMFbLC 3 _|is?.OG'_ SՁu Z)G3l,vUCt:}B [Z"gB39|"2~`  瑝 Ɵ'>G]׾-xCt}Ww/P޴s"tae$k/-,4^hģ\}B!bP0OZ-i74C.]GRӢnmxa8\?$f*ҋ +Ŀt=2MӾ=K{{[^$pƊThUV:D]|JcG[.NњfyE3CS5o~t<#c3\5k]Vk)$Cq6&¶nݻK /'_ S Ɵ'>i?+xSдhڎ閚R +>`+'ßW?_lQO}7ͶXǔE}˴dc99W?N|)Ow{z~$GH،jڌ0ͽw&Y`9>*x+/t;yaKRGvOJ,|is?.OW!OY_~okiKPAs6VcDyVZGkVzhQGI7qyr:VOMOǚ0^دt# )Y MSZ((͇E(+j7' A׭V<|Hvr>[=ꍵ0Ѻ+UZYaJ:8e#^9/:4zL dQ{ƓUN-],DJ"yۻ[gdӮ;G#\Fyr 5ŬZ)J !X;=Z]G'ٳTdwkχ[Z$p35\WyQ<6 >{_3w}̶/nݻ-/5Dw.{O&M~,˞-#.dJޛ zljԈDj=K1]4a* nu_kMou':<:.tI ;A倃$X;=G&?it;H_l| sxx9-l_-vvŎ#tD3]6%/~$1t7UEԭ=7V7pwݢK,ES<7&?i8~&IծIŒx R;2)B0Lo8.i>ƺU<_\ҵY4Oc]-KyZ(ag$?etLTTr\p&Xcwq"ѩQ ]&?ikc\MC?ZGF3K'VS 8 j]c;Xe]եvFe_(ޢ #8TAtTr˸~y?Dӧ_26b.>&> =4uTT,>O${D?%SnI7υ ^Eyti| xf*31cƫը(L!Ds?LY񪷥~_VS>'MԬK[OZE4I0U @"25__onjcizgum"hitcepT-`Ad9$y?g[]CLK_]_񲾛Z IyUE|lx׌bGﴽ[Yoj:֭sw5K7IǺ c:澤#x׬Q@/Wew?uy3oY%wumv*.n^Ye-I a[?NoxVCQ3[i(:Z!BXp$Wb<3XbCb~QWk8ZB]y*lA 0}5;M3֡@g(Q *NJ _7?@k>OŞnu j7uZK7+pZ`?j < g7'.XŧG;=-XYtVYak}ru'\\l)"򖅥l 7] _7?Hz(~^'ćPtQtKqÐ%<\{߆ ,t_Wo-]o.rY@ e _7?@x>&|9Ix @]9HdxXf4r߄|5u>ͪONN\VA}Ҥ}#~W!F) o:5ioc#\^ih:xO"(]m/Ao|Nu{ΙiHOdKcC @CCQ _5yo>/cn(iͅţ{owDd?8rj6'E5WCCVgiK4Q|}$G>&Դ鬭e[KA2=©1r;y#-&XE(QE0 ( ( ( ( ( iwӟ -'RΰdE|`#$sW-oagt^`k!k&y"!24`\=-I/ /z~_\XYZm̬A-[Xxb(X4|Ep{u>-_Enm{Mn[e)awHm~P>ŸY((((((((((((((PbR@ 1KE&+s5JwRG,LUфLC)"*v''iPE5gj l5}s| 5ķw\N 31I$I5b~3\Vkc$gcQ*\W[Gڔ.yh%8˼ Mp8;_4 2_[xlXB/ۣ"y>$Ǘ.HHr}^C/:(gJr |Uoֹax4žӴ(4y/#Aa .LTQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@QVD~!j em]&YxW H\fW>.K' 5k;q5 ;Te0E6mn^F<ԍ%-(ƗO_Zݔz\U8\?M52ڰG1GL ,as@hx%rm$b Ư'>Փi|S. o?au+x-o/S7IaV?3K7-Qu[Wlj-K.mewslDRm&J607 2o-14?JmFcV!aڅUgy:D]N4 S_yM'N}A.K+WVgD6mL3ˆl?)??+-+jJ`k;V@(^6#p #֋!s_?`y_xc:GjEX@Tȅhd&u`׆ IۀZceZVK(ƽʡkup)QEQEQEW']~"X2cc\\4AZE+x݀`pq0/?j/V/uIKiQEas%[:Kecf*$_+6=VU<*+}-&v+Y!E;um(; jXQas kq]N0'`-@~ў|3Zm;VS[y#e(ڇB־xw][kZVZV^_Mܰ1x"ƑxZ=N3_ICrt˱yIl/< K!`ѺXB|DоivZY{uu1Va6#+mGrI #UXg jWV0]Mj)d-bD,"q@@MBFw: +}?ᧁ!?<x3 3b[GA4K6X$@ַ\~>ҍj]1eO/U޻xoZ{U}bZmA,mT[iXZ& @c; C~ gkG/_ t Ö85}" e`pQՁVFozib jy-"(ϑ!yA;9^&#S`.dQ{%%nxt`pAf coua9ωS^xwZ5oV# ѵ7+ qE+N]WxQ5*f cou>8!Z)yW3O17:f couz_>8!?|%AqCP4K?xi> 'W@;l&voZPZ֫=e>%דpຒ9lS3C?7z-ͬ'5-e]jp\Vېo?-l-F FǗ]T@o3ŭu m (fI| Ja Wgz&ph GmRMOVFn%b8ފ 3ռ7xNuI6ڮ5eu#Ʈ<͆nr[χ4˧k^!GKF[MĖd2BUgp1oh*2Zɰy%=8!k(ǀU>L*|hm)%p8%[5~IxCA/K{c8'ɷRUe #uzWs(u xJ4?l5mjjVƫs Pu  DT֮Z=?f:feqjW y¢"Y I4Qx3!l/.-J#KC|95kvqwq4s$N<5}V#;_߅=O7w? Mw:Dח~l64Q4l_3kn8]T|UuZƝSL? 49/<=}b7ey#&$Y iC-Afmd4y8s 7s֭+1%?-4B7n<+ZGȜ24; !p<^ WnQ}3M3_3s{Drg-4Ss-|?hȵ/~|+x5džnd 1lRKVKwOڳK.xBO -A} Jsh:LJ5 cYumk<+7_G]-㹸mi'"J1X^xm:-߃.f{m2x/~F估۴gڛ6".яhaxQӬ%x%|;yW>iZIJ)VpTVO"I ]%f:pz[q=ˉ"bG$,~\<;WߋNK6yZY}օ.ZBI=?dNz? Z^^Yqwoڇ~2ܿ{a;~DV9P@㬏t=h:QEQEQEQEQEQE*/f.w1}lw޹ !F,!wHdž_/)<h*,Ry;Q! $e5)o%oUޛ%oD5Ey',bc^=Ւ=P,ݞh#fݜ2](((((((((((((( eizniy ]FE?m[t:h%Ǒu-٫2zgg_oH}Xiw^EY3 k}iY?_^Eadx3ƳE7gg_oH}{5]'qmĶmͷT5>q῅1ť^6k"V!Im:a?,ȹv$^LZ2=hhK&_q˄Egu';*r*~3DŽ:|z[H#ӗ@tRdzњZ)3X0t>٬7vv6>dV!3nhgA;64W!O4o ]}sj|zns|E,~t[Žf(7?+c(((((!iw^^C(ӿ+z ( ( (zAE:((((((_uQku>b[^((((((( 'ZMķbΡ$64~![md\)hV<`xsZcoi,滧WqH5놂ZY yS$M#?/-'zl:5fdy7Osq%$#c݀ ;{"M`ppy>|c߄Tfm k縑4yi)[,e션/_ /‹Mf[[X|)MYwQ;Iy_;˱l|K:n{`fUK&HC"9`pN(#{ῶg[ H\X_4BFʆ&`Ͷ%xgv<k=O+tP%ҿ-ubYwW!Ὼ6זMA$vR$|NHH2SYxVFToQ]2iCiov6 r]|rH:4ORA 4JoQI,vUe ɺSm"]M-j5qڞpVk9l.؟lI 7~ucȯbkqk1m\l9z߈v{Gq:~{.UTgx%+9RRpH@@8:' o.XI_c X6QE2$i*<:+W;P.&GhwsUv˴t$x~--3^mKTPSIJp [W0*H"`c >'X>/3>>ӵF] KɧFx&vV$((((((e"Zwu:]ׯW?D ?t^(((Pz@(((((()o}oUxu?jZeyok]G*[Is$MܩܠҽZTk_ $pֿA(SIK§EZ+ר!O' /Q O k_^<?ğ.41G*?\5ibzTk_ $pֿA(SIK§EZ+ר!O' /WEOZ̷ZmCo,+eG,H08(mHtۏZZΜھ0OKF70B* rl0sK߂ULJy/"~GGOSo +FBXHXDˉo%|b{VΑcm+}S[,tVS+ǽ^e /Qm.-i^Hw+lmvg>:[~']*Kk^}?Ph7e.DFSN̓ćzvxw|M8]:O]+Nh\X\X&4/ThcM,2RK{YH2:H 9_V:ޡ:宯o,6#gur#}(~Ğ7‹⯂𽷉b'.XMNg3(r&ݱHkW5Zz?-^R #3`]b 29b{𧈼O/ڗn<q0M&vã_v#{nzO í῅τ,fFuaXgp/ˀ8OLe%i˩ZkĒBcd_1PA@U SG,}&KKFkeUHTYI`1ȠE'k~;%4܍#eQ۷b/ _^ ֮>:|/kx7R𿈛Rc}m.IaxLOy ,gko3c%4-&Hno;'p52c!Er,~;Fw"} ډl5{mFݬ˄FSF`NxG‹}sk[m[?M\]ZQG4 QkYsxm>Z/j=ҳaJO,z& xB΋kN1eK D%N Ek§EZ(O' /WQ@C O k_?ğ.41^Ey*?\5ibTk_ z?$pֿA?SIKP§EZ(O' /WQ@++c\LH$M<@|ҷW_EQEQEQE֊Z(QEQEQEQEQEQEQEQEQEQEQEQEQEQE|?@_>?RI㡫ivi6[FM+5>,=߇!}7V/=M= 72۷v;آboTp.g6oIi 7MbG(dEld+$A@Ɵ~/gO }P֑"0hv'!r9^W}+>;m*6--_ks .fhдHI_'+xRiz.7M+sVk6J̱y[j1'ukgXg}&[dhs"I0o9[cK(?|7O]xA5xCXM7PحV",eVPHmfA3/mƏᙵY|koXS%6Bf ",m#&, }KE|X|E6sÃ^//g.2 $Yef^%cY?]dF=|X6wybtXl|*y{H7$wٴP-]MOR m͙ynmVPG!'͂L^@kQi (w K?úYO٤c;`#6\@g _ũcӴokQMt:jT`}2((((((((((P Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/domain Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/domain/domain.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3707 Text-content-md5: 6a4844c43733747db62a4eda57b585ec Text-content-sha1: 595cc3902294ff84e2b45aa4d0715fcd0fd09af2 Content-length: 3752 K 13 svn:mime-type V 10 text/plain PROPS-END Domain

Domain

Definition

A domain is a field of interest or knowledge [1][3].

Motivation

A domain is characterized by the relevant objects (a.k.a. concepts) and their relationships. The relevance is relative to the problem at hand, and the decision of whether or not certain objects and relationships are relevant is made by the team who analyzes the domain in the context of a problem, which needs a solution (a.k.a. "Analysts.") [2]. A domain is scoped to maximize the satisfaction of the requirements of its stakeholders, it includes a set of concepts and terminology understood by practitioners in that area, and includes the knowledge of how to build software systems (or parts of software systems) in that area [1].

Examples of types of domains:

  • Business: focus on enterprise viewpoint (e.g., finance, aeronautics),
  • Methodology: focus on development process viewpoint (e.g., OMG's SPEM),
  • Technology: focus on software viewpoint (e.g., language, platform description),
  • Non-functional: focus on qualities of development (e.g., quality of service, architecture description).

Domains can be quite large, for instance "Medical", "Legal". They can also be arranged in some hierarchical structure. For instance, the domain associated with the problem of finding immunizations for rapidly changing human viruses would be a sub-domain of "Medical" [2].

Structure

A domain user speaks with words of the domain language. This language has a syntax and semantics. A model characterizes a domain in capturing the syntax and semantics of this language domain. For short, we generally use the expression "domain model" but we always must keep in mind this relationship between a domain, a model and a language.

Relationship between domain, model and language

Figure 1. Relationship between domain, model and language


[1] Czarnecki, K., and Eisenecker, U.W., Generative Programming, Addison-Wesley, 2000.
[2] Sánchez-Ruíz, A., Saeki, M., Langlois, B., Paiano, R., Domain-Specific Software Development Terminology : Do we All Speak the Same Language?, Proceeding of the 7th OOPSLA Workshop on Domain-Specific Modeling, 2007.
[3] Stahl, T., Volter, M., Bettin, J., Haase, A., Helsen, S., Model-Driven Software Development, Wiley, 2006.
Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/domain/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/domain/images/domainStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 21721 Text-content-md5: 1760c058da1f0b4d2721813cdec38b36 Text-content-sha1: 1980d75fa0c341be3bc4f80b3179c28e20e9e65a Content-length: 21780 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S(((((((((((((((/ ͌M "%6+7 GP\ k wİ%~-kZ( g ӭxmfLwn<c,3#ѿ,2 ] WueVիK~esO(fy{nd]$u2){#7-?Mw?u_/ྗZ`aq!g6i]&K-I05{Ok +zqaqshi-҈VO*F&C#"0]dEt?OEQ_G)nW>=xo-_5KK(H|H*  jxLEa.=e5Kq &xHfVM\RŐ^F)nW o[!|U.|-7toᾧe-q BC-RI(=TVWiV_k}M7LSys퍯̡M1r!]F7-?Mw?򾳮?imZ_xMN<6^k濙6K,G*λ 2@ftwQƱ&:Ei^g3VuDC@Y =߉|C?+ꎵ 'Լa{vJ$֡,Rm|%%"SHdDbnQ~ҒP}$,k[Ė 4닕1H*u8~.ē'r xDVV ,  4|v'dv.X3Md3(((((((((((((((x㶓F|sd[#Ðen'X,*JV_/_ a~h# dYc5k=-Įu"HF.h?|J$K|ͭM""FU6@*G#IS7} ^&|?Z?zo -jÿK/?u,0Ke-l.d(D t< ~kxRXY,$ԬyT,G,&Xlgi9C@֏^&|?ZxZ֯};]okIjK'E_YxFԵ -?KUP%"r@$ (b8A/^&|?Z?zo -k鯨뺵kB I gLfaǩk:},-r"dN 1\zo -ho!?7ƾ|4#״_=*_QJ[ݔΨ «OL@9i5N[7Z(( ( ( ( ( ( ( ( ( ( ( ( ( ( (<l|EoR䱳Y#ϥjVt0F=x _xpmV,uM!,l7g+~~$xKQO W$N9cqI::" ^colm>+յ}NC) )$Y#$4E~ZW~M൹OKӧbSu}j9dq&CA`>*דOK]A%==F ,`O0j^GeYmR9P7G[k)yUn]_򚋠呡_|gk7ֺOOl[C{-ɼ g0<όg^&ե$4;k[GfEl6de@3qߍ  SQߍ  SQt9gq_xKs㛻*Yӎ4*Z_2{&Iq3PNX>$'NSUMVJ:/*-dd;:։e/7Юdق[M3H>s1vvMW^H"/Cmܱ5ߍ  SUoU^7jд ZGr|'٦]BH^?M% *7ht|.nto~"h/-4H&(EuQEQEQEQEQEQEQEQEQEQEQEQEQEQERw4៲"ٙs:z-9.DɮhayrHscJ"`,k5>~u:#[#pb$IlaA0Zs7f|MmoRtZh-Llk[")ѭ-PJ^A]o>G E/mGڽ\V64pUV/6x(|c7>.5<1Γwi6Z&'RD$KsXmp}o⟀jKO:y}'g׭]bK,(?:0*â 'sy?7WKo4ʐ ^d.7cxԴ t_j:4_:|>X#Hx F@u`Je^3y_X:?,ΊY8dVdsk_L,]:O `cP1-k<'Wߋ/FҴSYV{8DE !D ]h8iY|+|SR񥖑WG :ki3}$f(B+F|-gĵ/d\ڍoMߍݠ7y&c{7.H$۳@3&HT{mwmG "K@Q@c{=o4x:H#eӵ)Ս{ ^dȟ2~|T^$3h'eoYMΛs$p*! ;ךQ_}j>4u?&ksX^XQ/ 2G Q\O6?ti}'W6z{]i@xeeu%$FGB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (8_|ĝJT4uh:֑\ipI][IY$mFkV!2eo-w(V!2zGu$h-MXM¶&F'x 2hOƏ̿տ~,x}bܺ6DoD3q^iA^/5-.(Ծ!k"[&p̣|{?^fޙ:ouMb <;q}R]w,nX|Ii6i閱YZ[q1DQT€<[? ]?ᕼ#ApLb!K CÅef(+/r1[ 'ka?AZCuk4w )`"G"<[? ]?<rDz+d5vm=E*r+) {m- APġQ P8ME kuE:(((((((((((((() +ɼk)ۘDmsoB@Vy"rK(ǚ߉M7χ)h<=Y/$SlR%lؓv 3ۼV4\J\]NZY畲K3%&4o;w6yeyYv-,Jiefv$$袀 ( ( (<_}R]n/xK{@ )i)-+#0v$G9:>Ӓ QүGwݦ3m"<,m) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (f$ eqyyqm,#eO lK-+ B'B9G!ZBRdԼےO)sm>.c{NF*a"IT+pl0 iQ@Q@Q@FA^yj?ks|FP-cin<,X6HY%PL\ 1)Ƞ FcVzy^Bv "'PHe`AjxmS~.uLZǃl2KbKIy9/e %ܓφ Տ~&}KV״Oj^?׭_MF87 }I"bFdY}T5WCl)k˛y!QH[We!eEY2$r;!Լ_s-+ޣT+}n4;~خ'^$iV#cU_^/ΟO[j^  4~$dDҴ'iJN]](gݒH~pCi4,39-$JĴK1$]k?^~.sHέ j ׵+aT5Ng.#$EحpA'?dz\Fv+C{e9UѕU62wM/[ӵm:m$̲CTZJth,ts_eYoڵ^m69]IX{i7>|Ayo6cX_MMZZJ]Kb̪#0{Q@Q@Q@Q@\&KjeZt+-+R)JY4{.kx{ \Fb_A;*0V ( ( ( ( ( ( ( ( ( ( ( (K<7tѯ]ܭΧ+AcaX\jN]kh¨,P(YֳzMJXZ4ר@ʥ`a2 TյǞNXm3G"HRYm#HL@\22TWko=+~uoQүXdݬb8ԱW+#3F௉z>֞YAᧄV >;6%qQ }*Oi| iZ%Ɯڈ4u9r)+g#uڶ᱂o>O{\$[O Eql\\<~gm⸟kǍ|xQ6M!/5{4 {s]C;ش т,#P袊(((((((((((M=(jZ(0(4P`R0;N3NzվY'!Դ<\e!Du!+,C#*@#)o4G}BP[xcTXҠ,W\&QI֖ ( ~#|DѾN h"#5b!̒*>> |"n=v@>wdkE$*xaA"?` E|y+H>&//&͓,wݿ1`+NX߅?C\/8_XJ%d3mVqUO`zPEPEPEPEPE!8\'=3-/ w$Yż3;h4-3xgԭqv l$lYehZ_scuKS=6FqwwU}ψimޛKM2;D2Ѵr騶[%G݀T-5^*[\GOv{E}m$&+5yL[PGiW 6%|##t,[yH \j 8­\xGC֭n4k U[Td- |#(Ȋ?!@E||@:j> 6 I.luu E n~!iei.=sMt).o$E/"0Fx;'Z4?:6o#AnnctxBD hAʌm?t5iFmSl0/$L@i8M|ύ(͇c_^:j3lNK}!ӧcLʱNfRSxVEwM"k+ltKhR`h rH#2عPC3WspCwCsw1Y|c_'&t*hv6>^&Q(ƴT7 Z ={TխuK-/-᳅5HaY'?Vzl5>lvŋ4P،K1%@'q5h^/ChuXgc {mE 18OzqYo_'񖣩i-tI|4vB7n?̍+ 'ȹ]K7~"AwY ˕wGjߏ, KAO y=vmo^χhtш,D@H8'~[Wo$Ե_^]KUG(_cQIXcEA K-4p b*z((((múb5o^Zl2Mm#_юI-5$,i^0l5PtVA$SF!Vx<)Ϭxvf72Js&AsR0.9e@=_xkO(5}PMmylIAN VQEQ^o^.C=v ;;|Z4݃>&:ϋÉ#>1W!5-*d-XS{kMxGI"wuhnZ IW~0zWq"%wឋ<{B_:Q|nne<+ǁUTI΋zRCԦkۗ;#O`EPEP[7Z(ƿ<1I]S~!54կ# @f (Wkj35m"k: r4umKLuܺNmw-En >[Ky;I1T '&kP4(/hp?i?4]OyE< '&<5K|+~ki>>nu[^b> A5VO'tMkGM^%AG"Ps֊oT#Ҽ_-WPef%{!խ-omUW^oݥ 9C#H @Q@TwZA$Ȑy$`I$PU]/TMGNO.-E4Nє*QEShW: Sma]jڅgi,ʲ]9}8@Q@Q@Q@Q@y|:<u|Kң5k#D3_3C'B` w|'Mڿ}J?x7wvW3|IHmaZFHޖG$+Jώ 4=n>&lUѵ[x#U}lNzO/;yAzN:Mgui3{c 0~)3\S>xV:UC28$zef<wU; %n>t$nf*?K_O1Zx#X6%"[2xPNoe.}&Ͻz`:W]A{/IT1-Xʟ o$Y5&^TxUבO첪@ž߁4c^ٴ(cvƠf8Kxr6<;ZpL;2\C_{ҟ5 |OIYYG6-|Q^)h㦻CzZǦ̿d?1Zg~3x']iGpBگ^< oI5 ƌu4 1i1ZHvƠVQE&q@ E 9((()3Z($1kb&OSKzFSWQ@@4O>m|OAմUn7[P?q@W_kk6:/i9> ^EyؘLju=GxE DQG ðEϋ/Qjִ{Lf;2;\zBAXa&>RS| fVťZQ[p}ZA>ˣo L_X]f6Lit=n꡶'3>B庝Mt>'#?x*ou*97G_7l ݙl =SɎAfZ+g/IcŚ]Wk{Kݢ@8$mF8$`QH(֊7sG(>4OxWF n-d,[NdL +wnoW &~"]CU\wwu y!\&Y?"j~,7O$ŶZeB^ejVp\@;ʺn2pោmM]NZYl;VE(VepB kG7<!ZտKxNHJحZKp v}83 ^&`xO/~,|4]xU[[ZivKe5IjhE+nv0N|0h|0rjq&cvO?1;Ꮐ<G^+sBά\+$ۏ]^: <'x?i tLFh.D1݃Lm] >KQaMO[luRe$}Bc[O?YOv=iVZڤmRl@ )]~O߆k@K[K+hvXT(>ő\~x4Yoe?s)Yqr?m~FrZK 4maY ;fkg [CI,ӢZ;4y*d 2 ܦ <&lc(Wǿ9_8/6MbU񝟅- Ac6"XvߒsLxƋa s4xf!0y7?|5-] uYG M{guk vP,v#KL%Dӭam[WȈi؟(_AY:G x~[-/6g2Mz|QF.0*w3Pο?:xU [GVY[S^P/>+P"Hg} >1xEO9/P|?.!bwfl9$4wWk~ns\[I$[]LDJAyFX+?|Hx64bOֵ x-R(࿶4&ExԘ P0$Ф4M]=-66Pk 2D) UkOծ-5[jɨJxLB@rs9 M? 4c[kK\_ZV05OR<"D ݸyr|U=Ÿ?|'3R4^ YmZn-B9HQ$G Qzv_Bavpk7D{o IskHndX  RUA :p(>'u_5$ҭnt=;ÚeZzu(Q@}ywھ=7 oj@߇?1P}~Q s1^Eyھ=7 oj@߇?1PV$i;hBۜ@2kO׼-5?^쥜W%K;m3hCQ{-#w??8{x|Vv.Gi H,W ȷ(P_ _ᶏ^7SMZNpRkkbҘaϐT_5ַ3m SܰyH´(,G,B{+?RךE_i7466ͽ 1$z~<yxRZ%>3Kx.t[XA%񪴟>y_߆5hn4O4[\K}VHu>̉{˺TyB\BJEtu?wZЭMCA/k/Ӯl?/^J?R&}$69vcI,KI' \>-|/zM]<#%􋴻UWҒ52q+ʱ$cA,U];$_h_wGд0Z=>ZBUU%8WW|{IJx[Ο֛zְZO_D[jѳ⏌V)^+=zO66΅@8&o:__i]|S)g4PpQ9:_ÚCoN||5zs$gS|rIϗ[<ώciϷ?[_#37L_P?H|u|bEqG,K@vBzZ_oM<N~О??%k{ce!Ga!JFXn #?BG|%z=Pug6vJ{P_mώrh$o R]^EbmBUe@P`-^VTEK')><'a=ίRktEi5ØhciH{m}[{O,MD,35Pl[>:wωzzo3[oxtnM;PњԵ)k8TxKE;ʣ|Mzw/aO j!l4m@}8A3d |G7l]/xsσ<)66D:dZK%<#vFfy1ľ c^,SNׇVCkUGHFW')Y ¿'|N?}W΁wTtJ-,[xV"/$4`>ld~-O/<*){]'YL6sxQ$0$R~e Y-ާgHauɤ\FWY.7Q! e@,=I>h^kᘍՔqib [o]@vG1=֋'Ԭu 'V[VLD~hFI)@KeO^= XWE|I_ٳ4N2/N7ij-F _T._[}&Vӌg r@Pp:gO~ւ׺|/-ׂ0sgIQ t?š5gytoc "4I%4$S^}k}uKvJx}=ҖE`s_+j_|FE߈6i[{{Ef+mUonPp;oRG;դDv|jh0zg^–WJ7?~>'*~?dόlk#kvJKH&ϙ oGL|>+x!ٟV#>&x=׭OԮoWt9?߁r7|;IGe X~9|78>[o/ Q5/Yj1wmmd}ɾ28C Jmj橪j/_MGg\Yi $V"!<"5X(YNFJW__^Uյ+b"Wq]ܼ#PXIH C'CѿiOzW/w vQm]--İ[K6#Dz#;8M@K T$ҵL$+)Ͻh .nC9kEᛟXUYtxo&USx` R/'s/ٓXÿj~oK-nD$ Hb&?1ZAi|6w io&f?'UW3 _.צ<=c⛱j+%ߘ MeØg -"wTe;/f t4iޟoO*hD2pvɯ(o{O x)tjFM7Vh$쌡N%!m]/HT T$Znb2vIbvq'9_sWuG/k#lQEh@ǏWⅅ4KmY-mfD8+c R'QE `g{?E0x3~=ËN_uP /:f_uj~#g>) m-R wʱPEQEQEQEQEQEQEQEQEQEQEQEW%oi;mN[6/gxwEwf ) `E0x3~=>"x`g{?E0x3~=ËN_uP /:|'oZ,:|̯{|^k\\H,w EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ?h_zj|b)ȁ2LxuNjiKbKv)x6r3)A#)8ho nA4Cxg?wA9 DSL (Domain-Specific Language)

DSL (Domain-Specific Language)

Definition

A DSL (Domain-Specific Language) is a specialized and problem-oriented language [1].

Motivation

A DSL is a specialized and problem-oriented language [1]. Contrarily to a General Purpose Language (GPL) (e.g., UML, Java or C#), a DSL serves to accurately describe a domain of knowledge. The interest to combine a DSL and a transformation function is to raise the abstraction level of software. A DSL user concentrates her/his efforts on domain description while complexity, design and implementation decisions and details are hidden [2]. The result of the transformation, the solution, is a part of a software application that is integrated later in the development process. The stake with DSLs is to improve productivity and software quality [2].

DSL Global view

Figure 1. DSL Global view

Structure

A DSL is a language formalized by a model. A DSL description, given by a user, is a model instance. An abstract syntax corresponds to the DSL model and is independent of any representation (e.g., textual, graphical representation). On the contrary, a concrete syntax is the abstract syntax represented in a human-usable language (e.g., textual, graphical, tabular). As a consequence, a DSL viewpoint (where DSL descriptions are located) contains for every DSL description i) at least a model that conforms to the abstract syntax of the DSL, ii) different representations of the same DSL description.

DSL structure

Figure 2. DSL structure


[1] Czarnecki, K., and Eisenecker, U.W., Generative Programming, Addison-Wesley, 2000.
[2] Sánchez-Ruíz, A., Saeki, M., Langlois, B., Paiano, R., Domain-Specific Software Development Terminology : Do we All Speak the Same Language?, Proceeding of the 7th OOPSLA Workshop on Domain-Specific Modeling, 2007.
[3] Stahl, T., Volter, M., Bettin, J., Haase, A., Helsen, S., Model-Driven Software Development, Wiley, 2006.
Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/dsl/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/dsl/images/dslGlobalView.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 30236 Text-content-md5: bb2ea15cc48f446b9cd8920461ed85b5 Text-content-sha1: d045d795a71ca974926a2028e8d72bf3f62357f1 Content-length: 30295 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C   0" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S(((((((((((((((((((((>5x^߂|!);\0&JUCux##l+MQ|e3De<TЙcج5;[ЬOҼm-Z!5d+dV颷9X!wʇ:>>"·V?|<|EnU럴 ⯋xV o-W>aeq?7:fXv?"?h$ !񽿆(tH|.-u!v;U]!4x?|<|EnT0x [?kN?75?hŃ\% $Rز.\yec7BtS֓7uMCbckɵS jMoS#yN7F@&:f[U>>"·VE7rZ. hײiFY#9W/-?š˧ˬ]鏭Vvi'5ϒۤ#M.H+3珈տ*f[UO[׈K'4mK6\i.q7esŸĪ@'y=sO֩$x$^7b>hM8veB&=OUa%Q /+uoJ[m;Sķ^u7xʒvO[4Y $YS%UVbeXv\F*%La0x [a%W!&]<; 7^31[^&]Ȼcl y[Nwk|rѵ趚mLjֆIv~$<  pH?wyu| <7}yu6z֏i $(% b 2A]7i,ïj^4!4vH)6gL> 2HQUY^™ ^n?k_ #YϾ/3׷T= (PQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE?\.<^j:-EЬLΪ 2۔/njDŽltE$x~Ui͔}1- qˆ潤x^5(KCҮ=1Sx`Vۨ'mмhpk Դ yxQG|h5$'$\nʛA+XZmMMGfӼW]Wd'ą }>x|EZ׉5x5mMonWKiZXYcA ]S'T|}u-?q/$]Ovki *C㹘)rS_7 ]iM|ftKOLq{f<5l^N9On6>)|Լvc_܌.ֿjx7Þ*_KJ|Mk_jw3hYEybVQf"˪d4o^<@n v$IƩF@bFܹm>Ux>RW.b Cf%xq)*8,pBqLct6[o/YZ{˩ifM* (/Ĺz_tms>%%ׇ&VhT25-CY2,zo!,|AgrI%7G//fnfɋam;"xj]ђ)VM4%;q()9J1 S7icTH5 G[{ԵMcWd1Abh8R4DU@Q@9D|2G<7]͡1wud+1K@/пO=ֵ(n[yDuN{Z[^[]}Aݦ\z4l7\.H' KÑG5A|3cžcgdX]\ g&GRҏ|QV:Yb@&oi]X;xz/>4\еm[GO'Iot,2]G?4j\崝gDl@9B++w ][?.|7ba#lK]~]Nxʯ8<7gx\ȹ~)SeYxk7Mv_&4աY^ti,VaT2wV Lnu]oVѵEMNŢ,/SOOёkx$Vș񃴯@]}e{ ^ڟu/k26Kă s#}\Uo;h3i_o%jxSp[}{/<בPOߴu{u-g&1y%%kH- F$Y >-~[$G\܈-.d f$K©,3Pϧ<G-3]Ӯ4˗`SFѹBAbA Nui^!>gKK z=>ěGdX再2%sĞ0ׄ|!`(ּKxfk=ZK[{l%"7qCIP--iwtknڴ7[uhKrdbR9'h ŭfL0xhlbđỵ TcOZuZ:)D'a i̢7BR3RQ@, 7C[oS5~ķzь6y5'z*H  ccS_޳sM$,>Qc9>Q@\FU-'kO5/ҫ۫7(PQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVu9ƹMN+L f$G 1¬h 3@SƗ/y2QVQݸ[Xx8$4G) 1,!u8aȕŵȈa4Z}-e~VM g۵>o'Y<,u]I,g6Б.7YFt6z^cmiq,vq,P*"(T*QEQEQEQEQE~9 ~Az s>j^:_ 67|;to{Ȍ3#G-1dbRAErIo{ɣ,d P^(EZf2oC(7?!~=֏Y3-iH?Z?g_;9Y Ӵk+X;1Vpm\psu.Nyzc+Y;O^YZΉ]xQܢZ޵ٿ6M(' ?B{gD/ǿZt;Hu}m[i&ͨyhube26)\[xM}'L@l&q&cP;rO/Y3-h?!~=֋3';khGt/N#Ĉ\I(}AR?Z?g_;l+g_;?Z.H?Zd|r: ޥn5'e\%Q±A}Zwgojv?埛y{7y2oC^^mέK^gn,g&;әOgP3dyE؉5StQE"(((((((((((((((+cA]ehڛ^j4Z^ECSWqr cA;"짼6k$q"3IWz2Z|:¾ ogVP.) T1G8;K_Kuq6KgQ=,PG +*^֪` J~|7>VLW2-̞yW nرWOEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE.xQgȴItUwݴ6R+H-H$rdE$|d~0'^,jGo$|oҟ'Ky= H=vN tm7VnLk//f8s3y5Wŏ,_lZTc[Udc-;Um/u Z 'G{KI')mR2XU2'?hxyrcN[m* IA1Ow,q2ZFX0z+"B,bbkkoڍ-i_]pL6цP;C#Ɩ xŷ<ug M+(!>O \)D]c[B y# &,0ɼR5뚎x&:ucu,{y*ل UۜbVS^Cgi%pƣ3P8k/O#Dc+r1< _uYtvkqFf}9,cuIvr>}y]yφZ?/7SWΛZ/4Wuo'T>2Y|ğQjJ5JķhLw0I;<}=1RՋ(XQEr4ே!>25JMTr:GvQPSErIs5VCLƟ25}GAχ5?G\jWVEeVa$̮DhU6 Np vtW뿶 vC׶:֥&f֮3'&#D'||Z~l:< $iCXTjd[6!h((/ Xе VG{ F^[9љZ9PV`2FA: kȩ/߉^6k>/[=JfȐBҲx@x:~+Zi?a,8^Cbw.q̱#eR~e#o?/F3NJ2I֫i?|Oivz_ƺ{ \Zju #C+)0$Am|6%炵]\=u5 8 zUWi!-$0i2|ԡQY*uyQDQYUY4-j/>4Z݅-ܮaK{ysyz3J#Q ä!Uj{QYQ@Q@Q@UXɭ|c3YE[COxE*=g|<{oq#'[\F% gh5Q@ У*MDʡQXh?a>ih߷n7cPZO?x>;%ռ7hDZevahl:-L>L}9f5?A~RV7;s3UޑusivR闾oڬ 7i&_1o,Ų9ɫ3OFLߌjz> []JVR㷹1y` > z}w]^K>㹵=CMntz{+mBxFct/d#z?ÿ x{O[ +:6bNk;yR"ª9.bHσ'nϬeKye¯@\E~ j?!Z1[Gg ke46FHڗi2g?5>%iᝬZ6{m=n;va\!JMK l"YDhpa ]7^inSY)TA]Meߗ 8@\;_w%)+/ kF}gPZK,4 .c8T~*[{W}w{iyq,ZEvs[)mL%1w6 JA3ez_^ <-k~PJOK,x^]hEos7Yf@> KDcXulڌ(+IxՁ!dA3?V/#?@2Zп* O-bWQ_Ώsi ,km@m1I Pi x4 jyvn滱xTh >E|(MokGlo?,7LCVAPW>=ܖ"ե fg!ȹ 5}[~#htӓgkOOi^Y:< *6sOd}>%2O{^EyCxw?|__/㧍C^Ey=_Υ_g&e~ xUM'qQJx7ͥ׷;HLn;cq8a/㮛Xx| vҦD7Q0مʐ؅yb~>|wGx}[Y֥Y1M-<4r/ȌO*y&U:9sz< CV|O^%ԧgӭcCSy NvjkO>[? /mQ.&KR̃xBO~^&\5 ;__eO,Y|!0ќQ| M'~ٮX\{YӍeq"u &HW]L#/ xWºna N/D@(nuRx-w׼' lt^Zu{+j[?8neg"beP@D|P\U^ZŨ4*\"H B9ei5?卽/Gm WToVx9{hWZ2hf=6}NL)u01X+4m_Pe;>ӵi+vOߣb+6'WG03~=ËN_uz^< C M*RVK}[ޱwj 5䲼A!89EQEQEQEQEQEQEQEQEMC]𧉼CQkHxn[cm}3 []A<Sn]Ey(rxT‹?/U^E;Yv<_x?ʪ?E ^y(rxT‹?/U^Eaex&o^']RBbT;]ÿ~Y˥rCqpS<7Ou[=zzkX0O 2AbIw{#) $6m,^l:]&nW#qPe@@.|4q|+𕮃<7ײyW21yg| 坛dÝC6⛻}_ dZ-T`";mܭPX7+QEQE>Jռ75tIJ%~co:f)MOì%NϦD'nGdpk)*Oaּ^վ|Pl/rk}/z%>c X8sA_[rmRQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-y/G:h6m-gH֛y'5/]T.|kJe.]Q'΍lze=QEQEQEp~)k&!#Kq9V@I^-uw<#yg=sR4C<јRɝTe^%Fk-/=قĞl 6kJ|Fx?V`x\5mH2Hl ݄|kx|8%ūᨚZ&~s;#)cJTompz;>W:h#g[۩nmFe%7+`*@8O~ZOOTt^oh5 +CĖyxqb6kq?όCS Z[y'̎W(,+P7?Q[??ZΛ%i I.d,pX Xa %|4(;MuijIf&UVVYr4^ /k/ekw+Tvwѕ%E[MȢ%R7+<{?;X~W)OrIV-\]\-@G,˒` RF}J6^>ּZ3L+rTc;6I*` ?f7.*J9b΁Inm4uxcG K1HC<GnwP_ڳǞ._i hOhB(X-ZR!3˺8=āgSq46Z{&=ͽĖӢXd 8 xJO/i{J~hRKEmisFKqoOaa 2.庐eUF^2 rHQ^5 ?_ž .M^NYyo#[xǑ)2fvwѿki+9in5ZM[w vr_ 9&PHϧxK]j<2Z6q4k#vqy"A x ~q[ |OAΰc4&ݑJBͶݞ3!XIb?u|Y}>w^ҡ^c:so":$Jpeq/ڟM_ |<x׾8\M )vmU~n-a^j37s'N֍mFkو$BѠ|Y?i/n)h؅:@ [Dv[D݋I<|=ƞ3D}8I--KnnDy5SmCc~{#÷zOi*+ Sۢ42;XJv0O7ֱƚd76IC5RmO2;IN۟vӦO^7Ry=HŤ¨B"Grf%#!h4zuw]+'qHU)9z+>jIӮ5)/u VPww%$H,,hu'(((((((((((((((((((|[7TZv \ZE{g*+5w06T m9ڢ<_> Ϭ6vcy$6Y30?xW90#i9xwMѵ+-?Y^wj7z"tinVsӪZMIqu.Vy]T zMax?\h!ӣԴي#FrFCG"0 ! R/x|.ڀ&?,x2S!;RXd2:C @Q@Q@Q@xۯ,Wcݺ#xWB u T.BR1@àQfҼ!(ċ$^ >'.@#0\.AG0Wye~:x>K\\G<ײyW21yg| dOt k+hX`@**@8U(((((~ i[DNrzt#E?EwEBWö8߅?s}%.e;Ή<$e`y;/ >etp1$o>*xoQ{2S-nv ?i7-o}Z+; a`jGᎳVs{a+SL$_QEWz/Y-^1q 2'KoFMɵG 9baϿĖ> Ưr*kXB5;~hx}F?j=K1c ͐ @>j^[u2K\I%ϑam3HGie`BW3D'<.^->]޵ ؋* 85QEQEQEQEQEQE!ZkqeגO mNV,qÕk(Vh+Oy쉨HkH XԨm<Lk5%Σoi฿7>pßbuR@-~K&4| }ƾ֩}jPi-nV4hʅn'á*vM~PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP^?ďTֵH>O{ºe|'֬ePCilQG P$op<ׅʨ0#*/-*FvkH$OrjvZ?~,ɨ~6!;2אGZk7m >l:7/AUM;qn5dl#XkMI^nE pf*3K&(I#;?E[B;(k7m O~Һ.mO[o}gE_IPi>"$͘ʥY n*Nh&AW<5+_h]ޟumyo:E(ѹI^YAd5.|#[{U1 `*A៌jovU8Ρz&:@?Mfo33`|sY6KfK\i0\E}RK{ZEVؤ҆P2Ōgh4Y FƘHx(nw^Dw> s{6l}?-CźiQh>8#[KYZkKywndeR9E*jהּ闗 쑣$pKrv㪰Eyhox\Fl/t{ @Ĭ}H nr_ß*[jVPIMkUޝguc-7$rƢDb`p ExqKǶĺ<#P:qd$&(ıffخx| ?G%z]g%Ms@҉Y7l)c>gfvi P]EPUu]RC.B 8^G hݏ I<+K?+&?~;wCA}3LѼAyYxFV1 'F:?>#xc췭=MaMs܉H./mrb.Xxkd;w|<ʉ4]GT ZR!+#F5o*^^ Go>4CM#In4-rYm)AU2 !>^ør9Ù?&)$-(H ~#Կ|fݕo[u]XYɤcyqE C)9#r^β~-.648ey0Rn+O>  wU/#F3VпƵ<1A>꺾mjZ/*[;<2'JhH5^Q-m/_2HW[$=P «0x˖AyE[B;)JSum ;Q֑cM_-Ė藺![Ɂ!gA!r .rξ>[K>msĚiXa:QdGx纎gA7Rάsŋ/i.hv:gv+ic@ %xɠ?ie/d?, EchT6H#9g&'9r 𿉼!kz6WZLjn׼k4gоȟdyi$]O #TPśsj+~=>;JY姊eҡ{_js,pyۤ8 '(njOCoZ] 4mq!1NYXcpH ?uM [t]oڅ݄eZwL*FtUI$O<o_[Yh>) |923';'ʹoeߴix `^QG?V4һ&N⷇4G1x5kcIo*P|y7X|'ki%N+cٰ}Jfv$`n^j1t6ioin_/0+Ɂ`4,T-%nǚC?E[B;(k7m ?IaxoÒ/>^ZrEo%!>[0J?vwGv~$/t mt %=:Lq'@!23*d;E[B;(k7m s_lԭW_[;\QG#z3U9Ϛa\8bY)"i e#([|i?24i`0xV٧ix/] i ؼ`7A#OU/#F3Vпʳ}n]Xk7g{l`0bvfFUx~[<+&Zu&3 .(%I$hn`$*.2V]̱i5=3^:âi^G|sS>#cIbt* ((/x^ _(t`ZVvGyY3pNMפ-^ KN%^*Ӯ$Y%s&߻+='-/ x|?J;H|Mc?u85PȲu 좶5S~|۳nJN,(juxTkƙskkaY2\bE{=-/ oiE.Ǟ\uo8GPf7؄m#_9lc%}| tk=o2I!Y-4L2p>W _eD3ZQ K_C<}Ai? }S7[L텻1)ZDt p20G=@_~ 5:XҮHl/Y xaEYo>4*DhW|^֦ԵI Mj6DJ[}G 0@(~ZtMZށ[i:}Γm5;ikDtxL6 R<ͨ` (k_t_٧#zmh6qe$IdmΫ<9X@:⧎ K_C<}eD3ZQt;K//%:{]xcYK'-[n# |c4|><;|$u+-ԵSA+$YLE[{b_eD3ZQ K_C<}Aiv9υše=GyoHaL!WInmy}rHxo [SM1M-3DĻ7YTuoiM>?_#N%{H5m ?zi Pu%!t+Iį.i)Ң𷆜kQ^@-޸A" N!Do?j~|5kڄ:ϋCzu-gP H$(4v^PҲ???^V~ h:4Ŏ[J"4{XWq#9C4^|Pށ&ilSXY"ɵDK٥PۣQ>=ׂ WO񆕩 K43"PΚ졨knz^O≵KyS A7Q߼#kcHյ_Zx7Gd4 (*Չc rIz(4z׆~3xG-"M΅w6gI-u)Dr4Rg8+|"&UYu [B( 2<]???^W?7KZχ |Aڭo6b7G2U;N0(f%?¯Ulk/ yڵ]>+pfRexgş_.Ƽ+3\  {+kU5Mj7oeKFE&?&&#cH]?Z]W|'n#*E0R!pÌohu<^(nǠڠӤӥIuy"IL] ޭ/hH*x)A!i/T  58&NrFX/NOY-ƅ6 ѩ wI6j|OOd)ea%7w m Vb~T^rGw %I|#(m?^5} 7t]*P*Ҽzүtjjs-=sF8 *:dh((((((((((((((((((((((((((((((((+*_K?^q8k2JGCo3a3{~+2=5u{@Կ4V0mpʬ G@4ZG{}=+W>?YdzxoHMbLa-mQ V 4 ۯZKiwz^,.|Giͨȋeȷ+p*/Ie).e5<?5ޯ~5ӵ6hh E,Ύ7eBi|O {MrHf+ +̱[n@g0 C僰6I|~3x'G4Kӵ&-!e@h |ƶ%DF\1zovoK|Su}.M6+Y0`qIJu~NP %QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE?G_?C׫WNuY@EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPW~ m.9_GIuqKtu ;9grO|@?k xkWԵn$hYKbIoyGX l HƷφkWP-:877GgijX]Ud$ک+gc?q;~;3QGq?5UZIDWJK[Gp00>"i_SzO#-{Wh؀}/C%ú756_IR H\iUWē[H}I/xßtD<-i"ҝbKKgb`&;;x:Aʀ^YN?xt6"2u?\HVnB{ j|+3(((((((((((((((((((((((((((((((h#HeE(*Ay+ vu_ ۱l|-=KEwDZ(L?xU/_1{\7-$5$GO0+e٫}Ֆ1_HWNuY@zxهuo؃{+'Ï 1LcI)Xg 7ޑ.ıɮ(((((((((((((((((((((((((((((((() # Z+agy)}_Xm?p\}O_:O#WH6wF2IuepƨȖq`p+8Ÿ v=CP󅵵֏o m=nF˄Ph(&_ <]xvKM"V2mY$*h# o_9|pC(]m7W3$ ;K+%kVU晩|Y{}B6"xԫ)H$z^=(j_ K:ƟVPv^tEl|g Ƈ -? K?9G5,~’PQ^K s;xׂ>(x;Ш:& 瓻;wlsuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEx `ŷ^$5 Wֺ^ۥA{.F]lb) ej>T'QI$eYXNX.@pQ\)?p{G/g?O7]wM4V;Xwa!'=E-d{h|QS||sc7XԿ;:m4iY L%h9[ϔ F-kľ*?utW-Px9L(sm11ul)V.S њ"w>%w_~zE5dStlcr$aޱA ۏEkm5OJV׾-38jAv7˟րh|?T|i<7RbChwi6m2Gy0B2ePe|N>%kz?lt xR imC,ҥ yu4T\,}ߋ 斺ɣGG"Bgp*^C]]W׍oxošƁx,twi +ikj݋gĮFр> x? %m^ -5dfbYIBoqںz7Mc7^Y!EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP6-0p&+7akk}j$g'q `WVɎH1l_A5DMJ-} MKYNy-C)1p(a^dCQ(θ_A5D_Q<%.(DHg)as|/fD`cq^дvҴ뙣mqq,\+Ջ*r2t~OvIex$ta؆Rҽp)j Š(((((((((((((((((((((((((( Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/dsl/images/dslStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 52075 Text-content-md5: b298c932a8e15700a74cb39c421e65a4 Text-content-sha1: 70afc41761c13aae8c1bdb31257a1882cf061403 Content-length: 52134 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C   W" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S((((((((((((c|CkM]AX^s^XXeh/J b𕗇u?Z_C:- r%%$S]z  [(wpޭbPM'N5[>OAA$vv7,'nj#CRWd+wpޭ;8|EVnyڬ_x\{GH6R^Kt`%@mv$EISgUE^-,V"q JBh4n;8|EV?>"wEph[=yE{{Iks%]Cx^7" [vĊvʋl|/VZd1~dȥF9h~cPYv"]/t9a7m4-xV¯xQyKoGcfoox[Hc)'au %A[(i^}şٺzyjEf6̨y<׃2^$hi5Qn=(6 ( ( ( ( ( ( ( ( ( BqK^kLkw*kUܶuK[lʖ:̬P5 sCm-'{i5ĹTbG>-OC.C kux{ 7D-#Ҵh-bHbB"`¼^?|M>݋)cbM%@w!%`ce ktDv?*mi^|fFz]FᣯskzN7A۞HeX_#xN|EoiCJd`%Fݧ< d-_Gc¦ kux/~$xGźEQrt]J vٶkc=vJuNOm/a8k 9^Z+8+%S#q\c`Tm|R;6n[_M=cW_:<3^Esamy[%R#%gՈ!Yr*\/û{/ i$ dpJY) o7Cڧ?>>ѷbm~S\tH1̆#]s]?^,sQ-2Q<>Ft"u0UArgA’,NX⤯#'tپţa1o"W(y ʃ`((((((((((((((((֊( ( ( ( ( ( ( ( ( ( ( (<7[,?:[;>.yOij@Lƺoi! pZF)U^x/$y| 4tþA -5O|M-+NSHӮn.m'!N[pen[W/5-^y/-Yܥ2Ɖnɖ8ˉ7)d;? od_kos\+m.u jg8H#s(#?)nCb1ѣL֖HY|ve%u+F˟z+c(:9dE>|YEi%X6idRAo$׎ozt%CmuibvSЌe 7c+???ۺ\]]YIwF P!1Ȼ 9dUkho_j?akaqj7ZψQKkȉ-"h `HK;oQNhP((((((((((?1؛|r]ď?GcY s P_!鿲Ev7xjZBhks={yam %i|!kiɷ4ˎ.tkKV، kScwώ4cVk;ž =Z;#o.}Omepcq!o٤fm m&_nϷO < pcm}-Esᛇgo۟iMuG.m4Y!IՒMo#ĥ') xzxR ßٷֱ[XP>hF[~<-kwwa{dwZ[$@z*~:a~_x_4ɾYhekh!i4w <; hONƙ@iiZ^sG+Csj?ZIo#ܙI.rsWwXծtVvA}-4<#G'{V 2|PITDw|-lxNC?-lb{{U" H :9*n :ikƾ5b>$ԡt{<ʪ,HUE S$SjUh? Nc&jKMM#[Fzedt(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEE ֊uQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@VoGxCA4&$Pƣ,ǠP߷-._9eއz [mHH@NW,H,`x5uc_𼏭jsIw Y W2-@A_ j_|B>(6ZRA 泽ʹMo<,r+/fS5׈|DG [Ip LqmJZʠ1"w fKRXdeu9 B >((((((((((((>Ox^mwPѤMkCo@0KI"±|AO'W@M x/:_<)j߉eV\__Lנ߅QM{MxmƟ+ojakFuc7Fa>2~_i<7_<@<@mU^#+Љ~3&2Vky.wotѫK |C" p#87 OJv 0 Zja *De<~<_u> h,y73?)8!|9VW%|4;v$EG.8-ƫ8a\8짴6h'@Ȍ0x A c1O'R03=ËN(>-Ϩ|$ /ef9gf9ka0so61^[<J6 dGހ> C<1 Mz=X,6z5[f̑`YZ"G^ IQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ nPhQEQEQEQEQEQEQEQEQEQEQEbxƚ?\kzZiмQ 'E(5gGK30hnUl“Ɨv[L`򎡁 E\ Zֵa"Uom2G "gvbI5}z$:|sDbU9MJ&Rf>% J-i㟆V_O\hDz[ۥ(mc.!*Α{+Z4+P8Z~jm8~w2cw1,R䊻@Q@Q@ 57:0* ^%_P~4g|$ K6 dFwi-x{\gELj|Mime޴&YZ+;̻T\{Bn/tI$skq wV1 #mtl2V?_xx]5Y՞[ӧ\mqsc$ܼbdPJ#q((((((((((+xPZGWO/% I'nyDޛnh>$HҾxtjzu<- R|vH#`HUUgvTFa0uǬ<^9mlKM̰oZrUYgPp"lZ|+}NYi]m4kr-IYDTz(7z杧66Wť*pQw8I^N3ɫQEQE@Ue# u16m$N.sa*m$݊1_S.≼;OκόN_DNATl:sY@=Foxǯ;š];S }ArnF [Ž>$|?OOmzK/d𶣮N 5d_2Rw;la@Er |r~(|+oO[-_b_7I| 8+((((((((((((((((Z(nP((((((((~3^MC{DxDG8Č׋12‘x5?Y,>6n &ԯ/)](yKXͰH%"tl,VҀ>,u}+.Ǟj7Si5+{[5{|y2B$6aO~ |ڇ4 `Ӗm~Kx'dV3m.'qۗiU#,J0=(&O|^+__}Ź.˸doY { xMo<VѼM<56oo mltLv ge,U²ma'Җ>O͉IK Yݼce?yz5a’*v<#SWu]WzuGy.t2PCB:a_j|M|SUKMZ9`ub'7!`h|5ih} 7V*Ȍ7Ao~Ϛݍ@Zܾqq [Ũ[Ĭ``cK!<ټ`.'ã{]{F>¶ tj_5ZZ*)Dð?hj0=(Gy-CO.a l-E ^λW uQ@Q@x/ςtvkF +oÚ瀿g.~%xǷvg[:!F塋jY2!دQ%}E|Sh8 |T𵍵$ϥ˭=.Ow&&|p|gφ4?>_xQ$Ynq&! xs{=jZh72Sд3}w:crI "oF ɸ|Ekae} :[_CeheGXznxsW^-V@'%ͨC;Gif0&Y>]"KټO)N=Oz_ |V_u|J<+M;ZX_Q:-/x*@V@[`s~)'4_5p(QuhvGAR~zx+f;KK#Z<\i8 &Y"ʶ$AHVʀXy/1ku):h6O6T31y-z  ~h]gNm{zmŗp0/˝F^-*{G6RL3e~o@ S ^:֯ iVR8EYK)>fl)>|[ 0(8W(|&솵Y[ib޿}REw]$o;¾?=u%m5xE:>w5Ͱr *yg!_ o|}EdxCºg<)oD66ecndi<"c71,U$q5EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEE ֊uQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@y'|x?w>qO\}w _EPюU @(H}n~|D~(xfsBG2=nlxT`U O=wE,~x|aj̞MabDW(\)FRj7ct iIHL,T6}*od'q|Bu[v-Z {-l 9n'@ 7ĺwu;IS?<#ݡ_9XÅ&s<^WW߱g/ Ǡ|^~F-Ig-2aԨOh *4Y2I4@f'knjo2Ko{ψ$M-]@3@=rȬA` S^D|_䮇M#nE1wwa/@or?NC⟈(ٷI_o}<\zv~0>K 'krVy ɪ~+xwOIm/tk+{r%$Y1wqSy1ۈS뚍lmy&[xi/ AdOEDm#$#chI 䘠2F D55^=>+y-Lc[=r:Ԑ[l!"@  gѴbKa ;m-Lw `*O^1c3u^ķ1C֛}WpuLC{Sմk {OSlgRIJ"{S h^L߲k'y<;xV':ք{3i$qG_#Phg/>6oj1͔'z?|_'M36*> --GZf_w m[+8mk3ەG9^)?I]SZ1սҮ㹄lEP^5 R0AWVjzeơaؽn,\[ {6-1e#B2(ZuC}awOoum )`]d2ApAU~?f}BX۩ZUFY'bY4KKh!G'ޟ]Vom-2I:GFR 4v(k?n?O$:ydӁGHeOؿ) J)_|Y??:KG[m6z|i #.ܛ|r @~ў("vҧLnT$QʇRX|cHtb?[_ù|;|D30/X4nd[}ۤ b~eSZ1?HPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP[7Z(ǼMg'_dȶω#XW,PFU${f܂?|pّ w<ݵ{f>w,xLxW>+:^eJ5+s5QH]Ф9i|V1rwп?>?4}C I=k5[jkC -24rec pJ|oY@д}f$f _$eD@RLK*N1N\"~ }˚>߇Bᯍ|Ech>85Zqkmgx Cǝ~b1\ƟxS:'CX&90l@N" C?}-.j O㏆:al4eK{uDtEbpdATW?|;j)V]kLVbn "WT=L6P࿰'IѰ R 4Y D i_a=\iu ͬѻG4FyIc{2OZk> \Y~',c'`B2wr}I'|J[~|)[#/ďm!J~FZ~`8`OfT}Er?<[y >1_Z%pV%hG $.XN;Q\׎"? [v$[;[{+)n*#yemB)£1RGjVP֖tn_ k>.6[k5xyI/!݆=[ h>$߮jz`KRI H*@ip]~.=cUlt6P2\;7Y'Ѱ22ʇR@=4~ּcMgNg3 hjl7F.dOsqLB؍T\/lOk᧊<[Yk&Fd)jVZjh/Z"uKX{z2IiSk4<)˨I弲٭@ *(|)ExGn5]OWӬ+m'KilnD8XKDl*e7ޛ=&;_ڟ'QuKM,,$F po^n᡿u5,/@&LUޏ}"@VW` Quxͫj2h6.mmHi78'߃Z(= x'x^4%-.îx\[[95m k:;,i9"Z|5뺎kھ1^_EY-RkrN7T4Qfk3뀠}Rl;SGvR'?h򥝭RF|.% [[;m5wvQo*\ښ~|Ko%3˘#> FO;ˑƊ< bXuCxk-~-NPIGQkȃm͊nVDXfS*XyȞi3Vʆb1|OeBx,(,YbI=&| J@vV6E;[Л5Pr.Ý:V֏ſx}WOo40XXۘLrhʵ4`| A"։+>NGjYi+-.~Ie14###+4bO(?=|M4a;ՆVk+!`CW~գwxΝNE81\ۺ#u71xD]cKΤjZ]֧_oM[^4^#3k2;R$HKx@Є/|I}PJ;/hr~Wo㱶mt[sHm:IH`Dۘf>|XK+rAW #׾ o<[[j5.jVqH˿Eo*a"CfP@=Š_|%ggS;vieqq{g,KXFea8;M0zv{)"Ю4.f5K߈Q] K$ TfExF\~(DEKOA_b$ӠY%+%Y-VX)7tz'φ>&x[GkIյ)#Ik_ldS/„`9)n~V_ 7M{ohk,W gmQ0*dn1@EPI@u៍5I5mS:9u;qi))糊ƇWƞN,uKbrܕ=.q]<2XIk_ ӯNl/RBy9L|7߄i"tuǹ(;Pb_ۏտez_"]']w̷t#݌1 9SY?_?$,-coLOuXeC 3|!B Z>"|W5{ x[Զ&m[bx41|nQWiQ"c7 f7]f d~E]j2S۞پ_U/6|w4{hόlbGmvtے׭ZZɻ ;PMOT UFnV~7|b?.|ٞs/[AJ7aUO đykv_X xDa -EB[B$6&:/Q4z?GV>"i՗bGuw]]O4Uo:R P; h[:-{'[QV#E٘84,?|D# ?Q\k;m#ᯀgJv M(Soq<ʣsL>ocuxͼ5g7K#[ ;3*4/#{~Ec' -Wox7ǚnj.x{[Im 壎8R[yH$,lp>0|-htiu7lM{ixM-Q YX`؜ǙzÚ?zdhu+XmfW̊D2 Ay#G׎߉QE"P@TH2:daں:O|e07Yu{AY&6k%σ|>ư~NXz HF<Y3-*+|Lb6:=[@Ԧca鋧p~w[+ .H Y| ߉h^ ЯcnD%h8=Xd0H@5)h7Zmli|1L vs/@$dD6_эΥ,_ꚼ,rj9yWB"WiYfV>'=w-e^ݬ&/(ld߂G<VK?6p~jѬN{pУcr2Lavs3>2'BuaMp,C弐ǽDPa; ǯQ@!~:|]AOG|5u뺝i=V%e%.lz_ cEnr 9dbnZr/i*gh&ž5ks_K o5hGَQYgeM?ڷDŽo I/W/=ƑZ=@nK1~^?K@7x෎|U/ _kz*h%U" 嶞 m7J9-ek ~|&'՞H4<x~-3JW{9 %X&^FIv\ t>+qxl|#O mԵ .7Zz+a7!@nC}~-<[pg'ư[Oi 8tۥhɷed c>>tվxl~'> $mV5Uh.tIV;JY@2L_ǚωKZʫ.hVWPI#,@d߂G<woG->Uvq C+V^Ex"6c +/Zx715 mdbKfg,\`bEamO1MoWn5;>T7,sM,RFV u?x8~|;kҴ~KoA=,JHq 7gg?x?J.iߵ5GLƽvRܐ+տf?y <W=߇,y]<,ĒI$\xW?Q7tBM{nu=VYmgy!T ,#F {KfVG&9%ɿ?x {5^EIg&9%ɿ?x {5^EyO2o#^Vτ1>ޯ%Ϊ 8#<{Ex4jwѭ5 j:vzޙ &c)AIYUჶS;v^ -We뛍sDGmK(0vX?"PxtP7<\xÿTv⿊BaQsWD]H/W쵪xK_x S-M#}Qa5T+B:fR^@$ }UQ@=x]>"x^4ԼQi-N\Kve  Ni|sƚi>&JwEݣ+B"HE`<}z쯪|Vޙc^Ɨ)qIwi;Zd~)WP Qwn׿f\Ѽakhzկ }Qh;y yFnKz<u:kNEy2|[STQKRn.9g,Ywhff$$I&&9%z?ɿ?x {5G2o#^WQ@S C?T&9%z'i &-}JM|@ S*8٫ !I>!J>$x=[*Aɛp̤ ~M}ExAQx8R5_UF\ {JX(^ìtp"OHć|ZLj97Wk xOj7EWpLYa$;y_*?᣼'@ tY<*o xYW-%q2R Ы_h +ǟouBڶ&ּI8) !g:{b%!JN:/ـVz>+ԃPO4&Ri|7;^pp[߲'|}9:}/ywXֳϨ+=J,SA |G'g_dhxSݚij*0يP;cR#V9!Fyr\b;jt G!uL-?XO*X4 VG*ΗO\j6M:@o?TGfZΝ2OIpzt$4EPEPEPEPEPEPEPEPEPEPEPEPEPEPEP[7Z(QEQEQEQEQEQEQEQEQEQEQEQEQEQEm?)W7NuL|%ҷJiEo LW ~xF}*UBRCMh΅D K {/>R iS$0A#\D193}nKYd5K{mF_hP[MtQEQEQEQEQEQEQEQEQEQEQEQEQEQERb(2W|0|G)ImDB7 I7숹,3_96kCse4cjp+*;ym?{$,(X=$/ǐxKEӮ]0 퉚A"& '%W19b_<]ௌ+ DI5 $K;X.q F@c@QE d$ \ }Rc4PYԫ(e#kͼC4+>6y-^VڽY߇BUo^EyG&|A# ƲƩ__ Fƾt1 .[4`^Ey3|H5 /Ķ}_-OCM_41i5 _Ck{ʼn@=딄@,x'Bq<}N/? _$Lx-`մ.du%\~^#Q}{^ xa]mYI-_|{PQ^M ⮇#b[W#~a%M6/5g/|I$7rղFFMzpi⯇<&eZ]hzc]ʟlVh5!Ӵoե;WJmF(Cu܉U*z=ޖ ( ( ( ( ( ( ( ( (h@((((((((((((((! b?E^! b?E^((((((((((((((((%ϊH&:>uySo IQܶfp MX9bf0֌/G_Qm#AtG'1j:3mV^/mtWﭵ;teO+H.uXbx瓷rHEs>|M.5{쮭ﬧ@-N$mV(ʲ`OM@Q@Q@Q@Q@Q@Q@Q@Q@c4znH0w0Gʶ(&{ftku =Cg4Q?SLo9QO~2#>aڅbrV&r$V㘱+H=K~b_:m⟃8"o45ZO% P+('дԼge[@[G.roRoLk,5 ]R+nfPOE= qO !$"V :- ZOFtǿm R@Ey}H|}OKY(uڔ72=@z)u|G_Q.yzL->Wj~ GWWӴ'{A"Bqڍ"FFxK㯄s94}Y-WRM6Y`vI;ք@YrC;IA/LҾ!XxXм= wXdnے6|-}3ƾ|C VUM7#*yPQ@Q@Q@Q@ nPhQEQEQEQEQEQEQEQEQEQEQEQEQEQEWv?_ׯWv?_QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWw> Zl[[Kṯ$ۼHTk>mkⅮ[~qs,BRd>}G,J8 6,n=x YW\ ͶXZ++(/)U~`>X(PE ((((((((((((((;QJ :{XHFn46 $Tp3Ԋ_G>/E@O#u-rdӦU1$m#O?c9[PO_^$jvW+ yOK$cEtTRD%x_?TR4;-2kFf %IS@8+ ( ( ( (h@((((((((((((((! b?E^! b?E^(((((((((((((((( &|AԬ_iv^`n>jskʿd5&hC T_!?/@s k xS"ZIaH!X SzӰ]BQ^>5TqO // DhvG3T~O6@FW^YMsʫ$MQ!TP]3(QEQEQEQEQEQEQEQEQEQEQEQEWC5ҿm^^CW ?JӕzQ@Q@Q@Q@Q@ nPhQEQEQEQEQEQEQEQEQEQEQEQEQEQEWv?_ׯWv?_QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEz~%Q/ WObp j:W3;Q[6w>#|NѾi7zjMҴn&,V(8%bq,{bg]/mTQ:?Meơ40B$1@|ɣR@.3Z-%G3rWFB}nYln#(]e*T*B fD|Yȴ>mVI5G%@tvM`|DǕxA⯉-4hԾ#2;W[}=W-6o57S/7nT|0fl}]k!l5[2_[u*Z7Ppy>U[?wMJ4VesA#4/e"?t]͏jz焼7?Z[%ּ58GQ43n<(bHMi|O3GOaIEVg@QEQEQEQEQEQEQEWxLjocx?ejbDڶ<:v(t<6Y<Mo 7w5+\MRhaW&NȹON dC!qZS|E~1x8g?v۸یeV FѮN{^c)Fe j쌹;?|5.('> }ˊ|r'줻|Kgejh{ݖHCl TQ bпi߅&/L7`clo1(e)! Y Eϲ|p?|5.*Ɠߍ[vp\fKi }ˊS'Z3zvC\J$1/H=U|JN5jN:E蜑Cq,[1HdEU3.A#?|5.+Ş m" #G"ʇr 觯8$V8k\Um?㮏_|=ܶ JZbd02F ࿈zgصFRFV႙-A" O̹,E|p?|5.*O|[ě?qku?]@kD`W[bs4:ׇj|[h-֧I嵁O-> 08,!>χC_⏲|p>/kg,db:堊 vVe P2I685KIkZ>[cR[滳xFݙ%[l|$'> }ˊ>χC_{'<1&Ek&e}Ffi%‚[{*$1&:m4joG%LJ,ʫ"3]_rFK >8k\S\r_>C+iuח_R_hֳE1.om浖7TWT۹(|&=ȭ6K Jcʫ$MUՇ ,"oa{KhZƁs2%:Hx c YHGGE+WO1-c}_z0>͑ۮ]Z6NQE ( ( ( ( ( ( ( ( ( ( ( ( ( N#KZN#KZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ({_t{[Zԭ4*3-B&2|e?|W {Yam߳eݷrអ~I|6jW?_m~6?ZӼYFl"/oen.8R8l&mO?JجSlcЮ?Mo8z4ճ}|Wu/odI,#b}^g#:Fw$鰫)A k7r,-QuiujF" 6dW AE1>woCXER]ݥ)ƕuh eI:g*AV,xj3`o.~&GJkߐN$Q:n8݃b>V+Uf4oOɭmlI<MlF D}|AkΟ, qj>%++6˩;ym@8ޱF( þ*q Q}{7&=JYaX焴(,A$X.|>#M:%>1UtXي'"L,݁ 7>"=%Ϗ]b"WwYXRASb/bq> (Լ{4m'IWL;]ۭƝKbنv!ZOx%jSa&;Pе5}"[KBׂ7a#Vd'-hϛ5|`'%MZ.i>!I+K#k_,7mIr > |iMzMԼ/C?^qnӯF7ḧ?fbP >(>$w=CN:.Er0DIo~/375^)g7~+Ў s* T5KqkZ[yoH!}Y؀4.N?&K**™ZD46>|{v"srf7=ʊ(PQEQEQEQEQEQEQEQEQEQEQEQEQEWv?_ׯWv?_QEQEQEQEQEQEQEQEQEQEQEQEQEU {_<-֣iiVnoX`VwbG8_Թ<irrtVP1on$ #aNeSp|;?XuK*Omy*=>Q5܂0z>*D |,e$>2\riNӾߋ*@vsZ^.gUj5,%!y6ɵJx:cI}>KmdvP1D3*(rIwPEPEPEP= ?>>kwk/FSЃYH 0U0 jx+dtdW2A H8(Mskq[iJr$ͤm'aU(wVDŽ=ii]Ɨ,:&QErvsȣbFN+ӫ ~ xvB6ch` 5u0A2G4Ep9.<] -4mq'W|爃X6]E-F@ E&7 Z*iV7rmmiB"X\,I'vWOٷ׆4}SN<_99AݶQah9p쵻miawRƾ`' @_|?Rּ1o \jW <;vQk)mE''_4+)J8`kI}o]o|%;]u-gs<;b,^T⢆nZϤxJΑKt:6Vv Cbcw\~e5MKP6Z>&sO ,`G![ wI -|AwQcAjdP&$y73Vnh&׌*·fm`kGo)WH0I3d~ڗ~ >(oxA,&_iK$2Z*Йd$bP ܲO*4 |ږvw:{Cđdtجsh_mw~?~ᖅӭ沺K9╮Vtr&9e+۝?WΕ *[P[Gm7S6o=G."x6\D_>GX洺){r(2'?#e^ܲ_Im+ۄEE$)MLE:}ޥss’\K;8N;rrŘvQERREPEPE7tGbW(b-x~ }ݻax[c\NeMiiy檇d79py5F>n6?YQÈIA zPė?u ~S }j:GL7:z\Gq41]KkhQm2h<-sjZ#^6gH?xM5̖`Ұ]П6e#VmgMoڭZH7 +23ޑVO yiwm{-. In%R o<3ſ;?rE֮t.x$Nx$6Koo%I2[e`nOFsp{<|Ay[Z aor"Q"LB&F|r YӵIᲾO&;y 0<Չ.!XTI%$F dwf>54)/i_j[_|'jZk{)smw`X"v)WBk'=ri7z#m++Z͝rm-5̖l^9NjZ^>KF&y#FݷibpxǯimŜzms\"5@NX3@24/ 5ͥ׉~jV^+T2-(AI-Tv`*9[?x]|$÷,^$z|GZQgfw]\0t;~O^OZ׃nԴm:ᦽx޽ADZLK:7dLq Gxz ; 2\,Id dc<K&[FݠK@rP`n>`kZFOKԬeϗsg2ᔐy~h4Nּ$ei9'Zq;ÖHY)`C*+;Li~g$vRA;\ghe\^j6+2rIK^:JZ5>{@qk%K9\#U((((+j!_r^!kڀ=z(((((Z(nP(((((((((((((+u;؏/k׫u;؏/hר(((((*]^͑ M3;Tp>]2d@2s w"<]0:[˨BTO_&@HQڛW k#vZ}Jҹtx5Xm/x3Ҩji?eCRn|=;&%u60@c OBRk%}:;|[0X7GZ(L0Fq<E~ ͧx{o ]kֶf]-]8{lY!PC(str7>0h*֯}=R󬦒 $n=f8eUReȉrxsO尖[[MV ,ZE`Փaeë>o Ro8fgt*`1y# M^? Y{U M:bhd0/&q⏈VO, WZUiPkGX69BK,qPI #ƍ&ךڳv֩-tֲL*,[nX׿g k^i$麄6XOú2!#?z$EPNC際ג[B%m!x\@`ܬW%Oh-W\CK ۋ;@ 42 FV'qfaM{ ߲gԍ߈R N[JZKw㻒 I!6 J3.jg~0{1&ŨJsN<8IJĥ x1 ii_NtWCՒiU&& e j7m5j0>/6ߙw?i0C^#m%1 wZp2[3o3/@¿[sΗii)uwk E$K?$D|}r_ CmcēZjjڊH[[v;"3,v@Tݴz QEQE%-y}S%dI@?xS}EExW|= xR> d6rdGkk%w2)H7lp>2#@5o ӼEkY\1\Ʒj3F9#1د{>>gi6V_~&seyaȻ\I#%k~6 wegÞճw#Q[#-<tP!|;íOd 5?V֞=.Hm)&Kśe%OMeb:mgDk~4(Ԉ[CkiOPϼˑ?P?W?aN.4 [0hTGx` gO xoOs⏉֞/eKi4N H!Yexڛ}!IEQ@j5k zֵh:^,Fe# G/ܳI%UWό|soZtMR6zu<7]ǝaqqsg"t9_.YT>xT+^wp:zIb mf€>Xs$OPğ>5?5/|?Ѵ t)(DMrKl3QەA!xZ}ս'{/Gh&21Ԗ%ӳ Ɇ1_ltKu`綖_JM2H4Z ,F<\{Kp4,;vwϋⷂn5&84iuTܷ6,_W@k 6/뚟:%g;YZc,T'f?|lᧇv6}-ŜR]ܼ[vɖ ^ׯPEPEPEPEPEPEPEPEPEPEPEP?NY^^S4:?sg:zQEQEQEQEQEQEQEQE?c9[WWC5ҿm@EPEPEPEPEP[7Z(QEQEQEQEQEQEQEQEQEQEQEQ\Ŀ]5E}GOV "7;n&`۸⫹UEpzGƯ 5iկmDN%-$-z!8eS8qXtӬIy-֧;[Xi]H!URYF2FEutWx>EkB_{6e_*hI6R^A{y^mwL:ΛixkR fD. w.@=f_'!P|8I-V^ҡ4}E{ITʙbl$nۑi<_VD֦.y,6_B9bUdd zwGR/um|?k\kmmA@i 9c"lH9JG_ό>{PԥBբе +G˛} TAaS?o)&][[B]y>Jvud.id|r!nmGG?)^ՓokD|.y/?u+úН! #›FFַ]jE[隊jMݜO3,JDbbg.y~ f|s.< p IV>HOk.񾈱I}pnmRY!1ȿ2#0ּ9ųi7ϦRe㻝KygZ=b{9mNdKGB:&8ohxJߋ4_GHf]j'C]rk+.,C5|#6c%? k&MVռAo4PȪĮ;W@?OxGQNx4ijo&ԍ(u\{[[/i_I~ExXDua:CuyhF "+`rN}Nf gou8!j(<%AqC4xK??xը)h~ 'Q / @ÍNV<_?G3G37:Zt]6 w'W1}Vyu c}N an`XьJsaCBHaE-?}|2?ZuZݞK~Ξ-Ri$]N Nú宮Hʲ 6tX,Y]Ţgfll;/~8>]hxK*{{s(x#شnZ2X(ۇswE-?}|2?Zth1٫>&s_Gn4-?ڭV6b**\8oH=' |G>>$:OS=w,mV%Txv 4s?_|@ő-SZ?&|.\cn>ls]/_Q|'_.__ O]"G>/4x}g_oXvWWK.'0 nq)YOٯź:LWzll6bQ%JoDB͗R _ /(@]~9NM5ׇtM{u)s&wK)'?KA)WO>fա䲰 n..Fw# |=[>,,u[&d]7H]ibP>D/J/it9l-|+K]V+aID!O9*C G௉n| i:'5]+˽?Qy}ƭy)m!Ÿ$c b_x4h1l'|ZJYh>ڒLU+$\4]PԼ=yi~??|?7 q`$1!;r!&g2HQ( (}xS}_zΡ/%τfYʃWNOك8e^~/؝%/>j^?O 門vJhp@,Du* Vv:mRM3^^gk[{O4Q;]Y\ (_zyO#?|?49!/s^EyO#?|?5x/Ic'U}oM0DΛ2˹pI5 Wha`$w {j(6#-Yxr|YOε4I5׊VO-<&pzY|_ȷOta\-4keYmKx+_jڧ`L.&[Y5-64m5H30'Z h~ck/6E-n$ŝo,%aHҖ> gu jv~%hdoy}%фfQZTHf3,{/O \ Wmu-dlk.mVAQ@̋Fqm-~~|9W; ُڿ~2ZxSTӯ'MƘn,w_k29-"fFr=C<i:~jӭ|z{(.&5kEp|]>(ڛ:5]RI>MFyC]Ng$ڝ[c`֝㧃/|1Ai"nZ4K5ܘe9?5}EQEQE5CuEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPT-YAX_K"Q@+ е_M-B֏5Q@+ е_M-B֏5Q@+ е_Mp>Ǻ߆muYDbB; 2 8ݓ5sKaF{|a vdm=;LU>&xKxo 1k[O֭d7c~IBJI׺¾ Z?EWƯܚ[D\Am6--hт9h~? -hG+ е_MtP? -hG+ е_MtP5=\siiZF؁[=( ( ( ( (אy9xO#K-u2ZKeq$I_ ҵ=G0,&My`}S a#)( # x;e߉_-mn\BcIUpr5E/'G$wƍO7 kYxoƈ`dJ _,@R͈73#k uM1 {5rHr H?igŲhS|<kz"#YeMi2\f<1)<@f_o.UTO kT kX!$eK}HZ6+dKiƮTdڭpEeY4VS91x? xI-k5Ώ}qLKFRTZݯ.o%wx P=6iDZ`7߷iv{:_>7wS–}vCkV~ MoHM'LH52btȍBd@>ʢ&hx^_ǁ4;;FKZx>lW]4֒bð:b⾡ˏm.hM&o4Pβ@L'U /Eos !H Q\#[k`SЊOVu V&m"{k_Gdh h% $(Ưuؼghz,{6Ѯ_ Z\ ?IH_h+MW(oozX|3?54K->]IPaXEY^2@a߲<^D}ƷD[]k$ZH[ FpxtJShgG_&x# KZ ;5CY ;߰LuuW`7lڌF ~?xTGxV_6~4H.cAst9L͇}P쵭;Rm2ގʟc\g>1tX蚧5⼽}9R.YZ8Ӽ;$|6 N#b$rKrh^%SQ}R(b#'gpR{d^[FxfDZ-XTƀ#?.C;y羞if6%]|"/x3ELW <qoC7~!jhM[YW0Iz$q}`+&*蟂Z~o!:%lZ;Zm1cH9S״7:eWu6b:u_xGL>x^]4klr,sOo4S >>jψ㶡yC2oxOx.n5з>~Pvޝwyc׶aMʹs+Ia.r#=j-;ĚF6Vy-E'io߂Ï 6|/MƐ#խ5H粎4!m.MSdj/) :f7XMkNЭGGo QɄ_?iy vzoi9s؊uoɃpqcvk:h!^91m,z?X/$isOMTYȴ+!XĢ78Ƈ>K'ßfkjM3:=9NPlFv(cu6pFuk>5m6wt3C5Hi0Fx]5 < . 3Ygm6 Khcسʨ@vfbX I''{91=1zG銱Es^#ghVZ&][l5[QvHJ$ p+at]=5EԖuv!_4Cwِ#5v{YjrZOi0iW0t[ #1^a=" kxp ɒBXrK&( ceY[R}K$oeXp@# }}Y|[ga_۫D4K g|HRƺkȥXR0Ahm_Zkv,Mqq u`bI 2|!n+\h+uXfO-aEr OI$~ڇ ]vn:fAm>F$IgF;>6-l.㸡βQfޖU&;y!fېFPoM#>1EhkE/qy9[ HzE8 ^Uq|&fȿvzsC2ө0TM ߇_tjoJ:~*v[qP "UW 3n|| k#徣xzo _N\<ǽfFU)b;Q@Q@TմJ5;;}GMYa'RYIH AtP=SF'Q {[H'ԫ#)  V-W!8|_G]Ҡ6@2Sx*j(((((((((((Z(nP((((((((((((((((((((((((((+ |OѓK6ksnZ9g\ !rv+.x"Z(č_vռG S$jcU% $x~ o:LJ;}SG"7/|ֵY}N:pfwWjGlww~$A+tԭ:T%m h.oշ^4'MN%ڑDG`jDukK1V51 ̗4D;w}f@6l|,ǧ|{t8׼%^hֶ: SR5h"f ܧS3KS٭iZ~}&B)`C#!A U΃7(V֑hc 7*G]i~)W5&>^"̥%##Fzs\ß[XG񎌖1ku[-ūRJ"C3m'8E$; '>;c .|wï_]jr5-#NE.im$&7@Aoo5M?ڿ=+_v-*QU|>X69s_hA_&>Muw?|p/j!%C#Լ?Dյ4Ҭuf[͉XaӸ +_Yִi7zm閑/ofXaVwbN(y>;c .|wï_]kMݿL>^skͰaƳo_o}*߈~*x+Z} E]֡SC5Qd Ìȃ?0d8xo4 ^ki{Eŕƍ~bUlu^ PUU~]vzk[KtX4 t<?iFS58 ˕+_m'#9'6=B[-[[6ieIhCFA9shA_&>Mu6A;<5 i<_xJ[^Kԭ縶ٸynOFe(r/Z[O1$ZjK-4 Bq(iO~5_/Q|%{kMy\+pE38GC6~"V:$>xW̍7V)$R#$n+#)*Zk}77Q,V "6 R 5|-H'/!U}U,_7t ehKd cx,ionCl͙"4w |9y{i/7:zЭOs[Mo<*?1a6I(݂"p&w>g|G>I>Wa 3(F BWo /4Rq2;HY aV׊>+xC?ڧ_ T6Kk"2Oph /WCz_GDhֺ^DYv[4OmoaxⷎŶ, o;9t&Rg9Ky$_.98`W,RJIEz햁&#5hH5nu+ˈGˆrg$[!g]Xѵ>ó" dX*oϢ_<#-,uHZ0n^`\"|[=^^m}z\Qy,iFO<☮|w,HrOsj^)7vM ZiKyŏ+-=FׇҵON=w 5cbr<*Kۨܧto\ )]sao*h9VX"it"ဋ ~<CڄVZ[y&F!":8s@jyi9%xc{+ 0!UbA'"~=+}v;l';ɶTFf`b #9Pv,5<|֯R`-yt>+_DEPr#F(Ȉ`vjzHxr{ VIZC%cr0ku?^Ԟ)ִ \59t1J/%*A<3xTEڣӾDc}4 ?Q>:i &.ETQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ nPhQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE_?5!RHUį~([Y]֕<|qD̹ 9#5 ,Em/t_|"-[A%~VV;ʹ;XLzUPBԭRPyZ_1X'%H! F WF*̏+SZ🌴MqN}Rɰ kbE Qv9 "x|2wgľ$_^1|;bwO!Ī(Vvq.=wgϾ>+|J4ht˫_S𮭧Z\4vḚ9FYql0|s?g񕤶 5<9&/^ivZ :l_oiǘ/B.Y.ϝ*| _-t}]8[E闎u$qk\W$ڞOݝSJIb y1w_ *XIb6 Leer_\)ڹqϝ{CrA_IA>6Ҭ4,SǶǛ.D"()b>Pe?w=IF6wj+i.$ a22CG\kWcAm|EyOFt3%1 Ͱ(-)ysoQBKŤ[LJx}.8 A=eiLC/ Pb{Pgwx (u+9tۖ&$2Fe2b0XWQ1@OO7I|IM5/|OYJvA_pD2Hz,qf$ U?kpe[[[E. Ħ H^EIA!A3#H-nzQPlQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE5CuEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP\~xW5v>,Ώ(z[k6]ƍE`P C%??^QE??^Q C%P C%??^QE??^Q C%P C%??^QE??^Q C%P C%??^QE??^Q C%PC࿂?/?_λFѭ%*zѢ{WoEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEEP Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factory Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factory/factory.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1468 Text-content-md5: 5269dad4dc2e3d3f82ff8ee745b23fa0 Text-content-sha1: c3293ae860fb589086db7017afba1bb6991ce61d Content-length: 1513 K 13 svn:mime-type V 10 text/plain PROPS-END Factory

Factory

Definition

A factory is the unit of a factory component responsible for the asset generation expected from the factory component.

Motivation

While the viewpoints configure the generation, a factory declares what are the assets to be generated and how to conduct the generation.

Structure

A factory contains an orchestration, typically with a production plan, that conducts the asset generation.

Factory structure

Figure 1. Factory structure


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factory/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factory/images/factoryStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 12210 Text-content-md5: 196fdee6b64b5b78747f10cd672182ea Text-content-sha1: e428f2c002404cf62ea24fc0fd464687dc67b286 Content-length: 12269 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C   z " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?VMWş|I7w wOE.A!#}%IaQ]g* ?3C_.oH$Po\ӵy|x=j_,5 m-?I)}n3rEZA&]iW^P ʕig-g[>VxsJe$5?es4s$p-cB떕Y!~d+3C_.oHG/Z$W|$ë{Ú.K $zCyd$VBijnbk3>VH&-zH:)pF @1Ҹ69jt_?տ"k>m.~7<_no!+5 KKhKWcMbT?h +W0JH-2jݢx%V+{f3.ѧ~zW)yV^Z\eD=?hWϟj1ƾ/4[X-ex͜j, RUzeOWOCi+3+~TW6rO|KCyO}gnoݵO^-Zqk-]Rh#y'_f&rH m:Χo]Aehxy5 ͦ =ݺ Tc/q?:ը/}=;44KvÚiͦhۨ!%3Sq4R ۇtRk?"j>h/k2 kк B;Ij+/?h? Z%a''Ω"|;s"ʲ!AWV 4;*=ΪMt: xikmCÞ-M[W-9-C`xg!NzK »E\»E\f_z]tO@M,VWw@1o2c*9V$x W^,Jk7-߅,_A:eD*) 1NW ]LݮJj?]LݮJjT|8(_~[j͠/ZcjK!ډ o2,H_vυ[egkךׇ"ntƋNmJ fAr]|,TOoXԾ}-_L`١1tHuE,k HƎ Q\Q$K 2A_WaAq<,?Gsl$MKV4E&EPEPEPEPEPEPEPEPEPEPEPEPM4i5pZ?YXWbKpuOM扙|[c*1ůeI# |&/ 3s\k$s<[ݙZy&Stʄ"4wY]:4`ӹG_6_]ĺfjؽO{om{f,܂Pi;A9o^,մ_x@/Eo;l,nYid(9ﺯ4wY]:?᣼;B_7z!t+Hϱ4/v:%|Qkkj rH|>L;f7ch$ן:χ~h~D:w.}4m>}5LP(},j()4wY]:?᣼;B_7z!tc|Mu|[E?ǗvxWHto.w)?h۸ l8y_4wY]:xſ '~"𭆢"K6Vmms%DeHrFY4-7S yʾ є<+bӓצ#NX¤߇ xwKeҴX-;b43*Vft?_ӿ?VE}ĩ3S(#,hkkcKA~n3dmm"=«1-[h_>/hZx~-ON]TbF]ћxPڮ#Q1c4P|[ |G}eeg?{Dk*@pѨX98 whJŗ; +Xy46JacOEbN>>IaK/ _^K:7׀n$nV'/mSž#iT֑]Mw]Mb㍊DRU.e,#sm*a}c ? iѴsK]Sj#€y 9a~͟Oτ_PtDgG1 _J@<0>@ ~+C+sjEiZZ//Բw:rCEqKn$&7:džu4/6gi=[ڿ9P$6|˃>" WtONgO!~*Ή呕yFm+Ƿ>3iMĉ.u{|nrw<8|6i}" WtONgO!^*Ή]z]6\J[†I%sE$+>Aomc& . :D $n('X}Clu-?)<{U܄JӢ((((((((((((((((u4(((((((((((((CӚN~Rӣm\.6w6H >ȏll<vP|H"Rxy`hgH܄QW« 7<h_|{![hZ׊GC=նh<4IHe~g " r+~^/ 'M'qi%*`tya.Y Xh'qNou>|KksXCM'yacI>𥦧oxHҞS2Ayt"xZ6leBܮ٠yhm-u,>46->+ds{ mn'?-nSx7ľZ 潦iV} f9O0 ExoiZZG5cm\@^FM$|S:΃Z諡h!&1,-ln)wXbvs@ESѵ4ִF8.mc. Z 8*FA5r ( ( (;wx/Shzۢux{G.m(gZ`]æh($_yG57~ tz w?h_y@]M5~ԿF[wc?5Mu ݴQncɯW<@QEQEQEQEQEQEQEQEQEQEQE 0|!|!1&"Oyu ~؟5Q2p%Mm㹚=Vo=l{W+{$Ij eKwc5d"1 &;5|9xoGk5 5Yl[HG]ᑆ&|.x‰[Yמ(>|!3C YmNeCD(FCVgiB>]\ԯVΊ{aV/"i,P|s>5x RA4fЭmF\_5Σq%2TeP$'㿈w>#VyN41=?w~h':Yj-Bz~.έgO&'4[!q=UHEU*ox?)q85=JHfɯbi_7nj)i^GRb dOT~d\QY|?իAhn7,n )/^2Ym{SkEis*;6ƕ$ߴ!2wQ|Je׃|Sq-S}nJIk5\wL @4-uyko Nu['Y̿ ,0OL-GծU.4}6E^[Ijct;!Ix_hMψlmy ;;[k=lEVhq"(i س]񗅼YjjxQFqƘlJ4ﴹWl.?Ŀ î\55ym%O K]$GR8|gk|ƣvoK| P^MH0VFIyR3_=;ˈn_PFg 䳢 5|&<5{[67 uh5Q!Y̻pqE0ЯZ״=^X/ WYjSڣI嬛q߰`ڏ)K? e&t} CLa)Dǃ*$A8?7w'Ӽ9fWց68%~Z 7hH~d> վ;P_ xBÓ&P8@-`: [tWH&v.kҫ/NAEq?.h04O~*v/%/?>5 //4{{ln<@8tAQW4V?m [U9 "a2J[ {ӿ/_:V+D_L?ᕾ 6_j_;>RA7pK!*kᕾ 6_j-Ꮑ5|9xu /C2`"RA(+??jt?x/Xti]ލ4݌V6ܱ:=rA @$2|+Yx$OϢ:vZ֡}o}qr0Dl2b,6n;~lڧ:-u)մ]gN]*4; :n7V$!,ҼoAQϥj7cSwXpKU 8G>!xw_qe5jN[RIcO6_=Pne< c捘Jž1&)OdJ6enCM gr79۰dk7>KJ1ǥzòM {᧓̘7T9۸SE״n0;m2"311Lm<?h4(t Vʡ _,>x*CvQ5+>icI#> w^ "XJ;pwJ(ҔATL~eP&CIZ&<sӨ%!ZE; HS^i^Lbj=ML~x$s wyvǐ@rk>&]uCž ;#$jbwG w.}SQ\g <)I#U_Z|h,/P֬u΃|`hDnژ̠B?-z5eEV_]4-Wóa5Aox͎"j*иp3*2.ZgiZ~i MŭbHVGVe A\Wf4!{_hJ'OPI$B $OCh'`U.^6s"xo_s{Fs袊`((((((((((n^N tQ#3bv ,o$UR=wOs?gg;x?Z)ݓȏ?!=֏Y3-k9gD3ǿZ ?C<{{]]"*oU81E5"FeQEQ"Nbǽw[QH(_ ~+u_[xi~ #;&36h;ܪW}I d}{o++O!fXLcp#"rKh|[oMG8z:l6֝kwFݚ@I&!…U{هXEQ7mUTg&x`'*$嶰(O<OsPפNo&Ƌ4:mheƙs5ͳ y)nxO$񎃬ɫiڬzii nm|Y sJیAWQ@'ͦkoI<_z~Q痢I #̉0**g4[jƧXŚ@Fm:{0qi Ȩ ,Ŝ|.eO[{%Z"c#F0y ޸Kٮk=Z<[qqOo k*_Tkrtu`mAl>Er Ï\i]=r꺞ȁHk0;+\Pk((~'&/_ |[ izS*1,EǵykiSH"xZ( ҢL29`=/'Gh|agz\Nnmqӱ20Ybl*P۬`FT#oL=>mXO,CA?ovq\2/#bQ K?U\ry&#CM}̶Nr Factory Component

Factory Component

Definition

A Factory Component is a deployable software generation unit aiming at producing assets from inputs assets.

Motivation

A factory component is a component with an interface, named contract, a set of viewpoints and a factory for the generation orchestration.

The purpose of factory components is to achieve complex, heterogeneous and large-scale production. Unlike generators with a defined technical scope of generation (e.g., text or model transformation), a factory component can embed several generation techniques, produce complex assets, such as languages, framework or tools, and cover the complete production lifecycle of assets. An heterogeneous generation can be realized individually by a factory component or collectivelly by a set of factory components in a generation chain.

Actually, a factory component is built on the "divide and conquer" strategy. A factory component cannot assume alone complex generations. It distributes them by assembly to other factory components. Every factory component has a generation objective and realizes the generation it is specialized for.

Regarding the process engineering, a factory component is an actor (a role in SPEM) that contributes to a work definition (SPEM term) (e.g., process, phase, iteration, activity). The intent is to progressively replace manual development tasks by automated tasks. Then, a factory component is not only a technique but becomes, when intensively used, a vector for common generation practices and structures the communication language between project team members. Over the time, the stake is to develop sharable factory component portfolios, that is homogeneous groups of generation topic know-how extensible by mutual team enrichment.

GLobal view of a Factory Component

Figure 1. GLobal view of a Factory Component

Structure

A factory component consists of:

  • A contract, for declaring required generation data,
  • A set of viewpoints for the declaration of the generation data organized by concerns,
  • A factory for the generation orchestration.

Beyond this structure, a factory component is generally specialized by its contents. Some factory components just contain viewpoint information (e.g., domain models, model-to-model mapping), others conduct the generation, or some are a conglomerate of viewpoints and orchestration. A factory component is hyper-specialized when it contains only one information type, such as generation patterns on a generation topic.

Relationships between factory components and factory component types

Two kinds of relationships exist between factory components.

Delegation relationship. A factory component delegates its work to another one. This implies that every factory used component has an identified generation role among the others. The following figure presents a tool infrastructure factory component that delegates its generation to factory components for model management, model check, transformation and presentation with user interfaces. The model management API generation delegates its generation to two factory components, one for code generation (e.g., Java code) and another one for documentation (e.g., Java Doc.).

Resource provider relationship. In this case, a factory component has one or several viewpoints which provide generation information. For instance, a factory component contains generation patterns in a generation viewpoint (e.g., a web site generation). Those patterns are used by factory component users (e.g., users of the patterns for a web site generation).

Assembly of a Factory Component

Figure 2. Assembly of Factory Component

Finally, there are four types of factory components:

  • Productive factory component: this kind of factory component is able to produce assets by itself,
  • Assembly factory component: this kind of factory component delegates its generation to specialized factory components (i.e., productive or assembly factory components),
  • Resource provider factory component: this kind of factory provides generation data information, such as generation patterns or the licensing policy,
  • Conglomerate factory component: this kind of factory cumulates one or several of the previous factory component roles (i.e., productive, assembly, resource provider).

Factory Component Lifecycle

A factory component can adopt three kinds of stage during its lifecycle: development, execution and exchange. The development, or edition, consists in defining and populating the factory component contents. The execution is the stage when a factory component is activated and produces the expected assets. During those two stages, there are two complementary lifecycles. A "in the small" lifecycle only focuses on a factory component: i) during the factory component development, the viewpoints and orchestration are defined; ii) at the execution, the factory component generates the expected assets. A "in the large" lifecycle focuses on factory component assembly, covering progressively all the generation chain: i) during the factory component development, factory components are assembled, ii) at the execution time, factory components of the generation chain are successively executed.

Factory Component Lifecycle

Figure 3. Factory Component Lifecycle

Exchange is the last state. A factory component is a generation unit, actually an Eclipse plug-in. A factory component exchange consists in publishing (i.e., exporting) and harvesting (i.e., importing) factory components between teams and team members. The team that reuses off-the-shelf factory components integrate them in its generation chain, or specialize them.


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factoryComponent/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factoryComponent/images/factoryComponentAssembly.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 6517 Text-content-md5: 34150c5ce0deb70c7e0f84c6496e22b6 Text-content-sha1: 9314019a56e70b8c0c51e1901f1c5a3f7f1dac77 Content-length: 6576 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89a[w1!Software: Microsoft Office!, G3fMMM___ff@n>m=k:j9i8g5i7|Q{OyMqBpAtFwKzNsE[YVWlje`aȟvÙpěr˜oƜsЧϦ~Φ}̣{ˢzʡxɠwխӫҪШ@pH,Ȥrl:ШtJẐvzxL.znظ|N\zdp_G]y^UFħɋΒ[ӶZxQCH pCEAŋ3V TĎ 7QɓCH}%Qt #L sL AH'hX6飠2*jRjN`*k! ⧛ABj8?Ϊ~+"9jF**ͱ5'`جrk&)S/*! ~T.a_n&J o.lvWi_8|V&|-̫ IDL 4s&;1߀׌‘3+b7!w\-1_ɱ7Mߩ@gwZwFGk7< y31"ɲ]WЀ߃Q1;T$rSvY{^H8( ޵@9iXGHQ0 {,|\ 8?z09Կ ¼@2T 'V@R!NHwE&&! T s‰1񌝀^$Fp#F7tRzPc=Ґ!Dڡ@'iGJql&+:rBpFDYdd(B|",giJ@ɳ(/7b#(N ӗyc/J)vRc)!MiRx.XLLwLg9EYLes:MӞY} ˌ<nBAU:ܲ)R%9{IQs~2$');, &F'YO4S 0z3$$)Ѕ, CMm ԒINPM3$I-]2Hu*(U`J%Nm ތ،fÝQ-i'ъ>5\:ԥ6u*XQ)%t'k, NڙuT>uYT~Ɯ ،5jeEsٚAawOWyeԪDFihт~VDC*LArSy^^wE9hF`2"9UcN_6i'1rxDdrǍ!l4TrV,g;}\:'NoS"pgd"Pzz}s}f ;WV.n/JҲvmyB#eG]_ذ 'y"n&I JDZ.Y2fxH'/oV8MVk.+ *ms;7Vh/z߾9OF-d t68s]Fuq<rz#k~ p7bWE~.ztYEj6=xsNit=O]{tD+g9-1Tڔ,nWDWtw}{+GEd(S2A~{yߝٿ^=#' lwSX| !e_^i}ram>tm_ͺa㳞ɧy{͗~wH!Ax]}d21^EE4k|nE~{~Χ|"HXRPHU}6X:7#3BH$F%F{ٔ3& xM7(d/S57(9Dx=p#47x+-%q}>tSq;r@pW"WwG H*&2ir2'(ņr #Wsbxȃ('CHz\w܅fs!S0HJwB!$t7R:589~uWԋjfTn83y{(j؊AҨA$b 03THnxxX|#N*njȑx77zᘅoœ؏;؏ˠIȎx thȍ,ّ-w&y(vrʈ7WXzA?.Г>@B9D9" WJLi+IՓL!x'Ѹړ=hp/b9dYfyhyG)`npik}eXj(ZVG2;؍)Wu0003i9WipidǘY0v)# S4GsTGQ(~IǏw:㚱Yi_,RIva!2X$R"R15ND1Iwڙ{ݩ9Y9S)}ٞ虎iS)HVv4UQiV$U8ǚ!,|à ʠʠ jz Z}:2( ʡOI ()Q!Q6Zn՜ymw|UW@Z:@:AzHJڡcHj7J:TZL ٗ+ QiNR*OKPTOpRFnJCqtZvjW^Rq~q$(яHƐqT)jUGC0:Jb@j:z`mn 6m}4jT՜5YUljpV3TìcCSuì غ-'@v~q:*%Rv5Ox'P0گ*Su{wwZ1h`{jʄOKL03#k$*+h*kdDz4[,2 9@B g[ _y'д3M N;T[U:)T dg^/ѭwѩjSI K"u{vxz۷|~b[ " г7 P{۶M(MO0xQ;[{۸d)}xcJVPx[;yʻۼۈ{+`dk;a[{cX=:,2;[{;m)+<"p#xq  [V|컚x "$<&\!1)'(0Tw8:< jfD 틠5JLNOL)P\V|N,[x^`b,E׈k[iĒ r& [388 ϕmt0Lw7M1FئMڎ 9v9:ͱ-WP!τ/}[#<۱۾] MRٱDUzOy,m>یJR`7*ܭįxnLIX=}U% \ ߏM}WTmMoU8{m}>3LTʨ$闇Mn q6#1]*WVui71.Cǣ:<(]i*@upR L0Er}J~߽Vd+iSjeWI~~M=l4#UNR-WkQJ E^ j.簐壉QbZRmvHWkX9$~G sU'%u[`s O:.m:ZNZXDWz4h%f:UVeXUJ)ttRil?n8Y宒Ͼn>~XT.;䐞^ۊ~. NNM]UaJ>"O-)$-}!FE%/a 3%1߾Dqe'?_.O}N /][T?_i/dUo(D?NJ/nFEG?xeVFc`}R@/zm,VPʎ?.un?Qud>\GE<@Sgޑj_c⏾ ̏ fֿ OllgH> wꍺ/{pw"wE? տ"~=rx=CនhmLhNdISF,;_#ZO|_aZxO𿇬I{ws5p.E BM҅b2 &K G/z$Q  [+տj;+~&🄓~Ɲmk:.Z)le0hd"I!Ȫ 9xgžu6l6ײIk;%$x]KB/#woޭ;7EV>%ٚGxOKm N[{85YYi i KwWE[WZ5+X4I<%jU[)tpCl-8CxN,xy73ƒ9_EFꭃ9S? ! Z} og.~-iچ%-[yd<*)--!9_Oc?CWW7Ko4 dkffQuyw0{j((((((((((((((((((((((((((((((('𽆧io ̷:MqTfxҀ>|Ὴu_iMoⴗ\ՠ Fdt+NPLow >)xtc__1*+yR+iCܪDv8hƷ?j?!ӡjZ~c.\I+l$vȤi~*ѮkM1\2b+B;eٯxDŽ)ni,z+m(Y!$!=5ns!YG|/+k:V7ndfGhƬ$ooZ]OnkV>k}2txci#FRJI>T;a 6߉&)L sdy{>4It?K,l쭯%K:BT5r~Eß~v.|=.h7:],J,-`W#5{+ VU֡1^݆yn/FCWfyY|8Ί(((((((((((((((((((((((JZ(((((((((oڜ_XUޞ|-5/퇇 |~7Kh{-Ue"V!)\rwxu$Xu2ۤBciwHu j٧Iޱc?!+ը((((((`6 C p=>)*HՔ`r h?0H>SUՀ!֑HԳ:I'E0Jo]ݷ<օ՝qAghSTGV*ppsiQEQEQEQEQEQEQEQEQEQEQEQEặ]cƚޅk xzm $k21;I,LTCs?+tx{U!'~+?|pٯx'O3~krUbh4:[X(q "f^m%c'}DaO.<V4*z;s,TRԂX";=y YEjzZ(>8{_^!ּOq_˦<ֳMpB@^Q|}{Ɨ|{4˫K-f9t/Ig 21G:xRDY:_-~iG_յiz>ˏ*IUxEXFguc)`ydUUZF\IJ\o:'*mP\Z9N4ͽ1Rm#`G*J3)kD>?΋O^lMq(82y2xq5_ AU+hdGh2alu-aHq#li֙kBеK_v6zFq+W?"$gR& i#WM2|Kc=4H֯&lssWo]4ea -Y0/ou?tSJYO|jtVoT3wy{hgM/'?x ST>%|;>Ӽ;q}[:ivv61[kqt) N*t_>^*ZXkzͩk^De|]wx'#.i?9D]N~5:w%zFFEW1Gyc$L[ WV,0$<)L|5 DnLgmRܵ-WO< $%E 9hs׀5ju?.MV?cUmjZnRԡx*%a1p) *>+x+ǗZxk.wCPܸb\b~C4!<7 A#ߋ&n_WÝWK 2:6U#?<'iGggivA jsUa^K״-3Q4'gY"H7#*yk|>>]'\оw~%D%X[f;.&+! vA"]|YFqi ڛ|}zλcnY vյ Ư'^գ`. 'a ;H̳kƠ9#QJ9[Ww{j?9D]\|sug;>;h8cuݹB3Q2 :o_0ƚx_QɲՍg,<8wr , 7; W_N)Ww{jqwii6 \X_\j7 ĀAQUOo i%v,5#}-Hv.xV=d39D]N~5:wMǃ43S|{'O-קFd|ֲ?G6 tWM[{h#bwLaA"9huĚ~#PAYMִSOI#f !!DsY _GK?g߉Q#zT89#9duWVPG"o◌lu%wmxe0ѩ!ycf9ԣgɋgZ?Ϗ5._[qRYFIzE@/̖ h<:k*Xɟ wVҡWoֻ ^ H4iZ0Q["@G Ei5hg9ն mSwux~LN^ i59:dbIV+I%*@TCM|k?+%lwxMYaZ'F JAYs0>eG?gboYֵi,_XR<X,h0 $etOi_l4F=1'2kyLl&]amQ@(~>.i~5cŃ>.Y~uk !5E X`>\:_(ݵͦm V*Ѵ[ #EzeѼWbZޓcY[_wTm}ĶmS=Gxs// _WzŝB?Ż-R+ ܿՔKV{gEcA]7D./%P;}@;Tw =U5I I0kV%wn 'guI'[F!H/[F4=3\+ ,nF'6 RbR  t'?.m4i@6xM.U#! +(:::!Ww{j |ÿQGoۼ3r-o٢SM xXA5EGA&y'?x SQ Ư'^k]m{oq-w ~Sj(|Ci/EY˦"NU\0rs) ,"O hVpxB[U瑶Fm%rym Z_w!Y"')i#h64%bn*-|:⧀8ڍƍ4V%սw6pUM lT0k?yy4]kVފ2/=^<#VxFWX?H|1:ͣk^׵K_E[|n4q18PZBD1,X|9}AWXoGMX.Lbexw:Q><40ܯt ,斺RGmsTGx+6xgPu?_ jں]͗-ƷX|l7,0o?z ?^coxǾ1N[]o`*3~墀?b&=#zo5o-Q.s-H XhHZeMxk> &awUCj{x_~rEghv: ZͲMBX q{rzHRܙl3ˆ>, m5=>g=ϕ|5_kG#ŷpOcleʹJY$T _p6>~x:wƯ/-׭u(ZMk{SbenvE}/z3En]<S𝖗wk5ƣwtc6)5#.))7SXh[WثMo4{WK g0 }H@89wÞ+NVáXiF2h^Y_ -OW]V= ]#mZ-:{Uc2f&]hS{hs͕Mg5jPtDg$b*`argcυG: bo-&K8\['>ȣ4:΃/+$ۯ!luNԝYZI5bpM_'zĖ:Ʀν:OpҺBoΪc6  K,>r_kZ>kƙol-źwI2Ꚅ7P[`*Df@Wrg/е=H,=a| Եwm<23N8c J Ad~s_u? |F>davTK魮5KKW9vugmP3 ~|-~ ]xjmQWWI5͔;VHm #,ڭ(W8?B~#ط,>ß K^EEx.|>$3HҴm΋2FJdw8(@K+tuęoƾکZUżJ2ި=T<KR_5D>׼NGOm}gF,z]/1Ꮗ#U|A{HZ/?ZS"= jJ7UYL]TnA I?||9TxA] gTVfϕ@GX^'_m6)!w2lW(uߎz*;W]E`%o}hh#|aֶWG?xWkIystT?˩|I;ye4\ZX|Z|^}>QƩemvO$i"$ab1k_OMÙ5xS-|_q>y>滟 >t,\< @%Vb (Ob?Vд5ri6%,W!8g =/|_xj]75%j𕾙k6cLxMȯ$WM&[ux O4?? 7~ ?1@_ &g ?P]]1+e_e/h nA5?$Үu8͵C],yKp4dߴȽM͝1,3Fkի3+A-ŞEcin".I$T +N:((((((((((((((((=43TԴȚ ;XfA 0j$)VoxarJ隥坼~ S* UڏdԿ"dԿ"dԿ"dԿ"dԿ"dԿ" 1 mK G+i(毄?>x·C=5%V_LVzդLC\npX %|06|,D5}tqk {\*`ApI]x2Wj_P?G2Wj_P?^Ex2Wj_P?G2Wj_P?^Ex2Wj_P?G2Wj_P?^Er>Kݧ|9xUmh#;Zi^R7bFk((LWǾ<ӼSψ3ۏiv=Ym92]o5VBBTVov9+";2VhtW*# \Lf|K❬4%|Eөh@N$Sr1K@}ß|GxSᎡ)>"Ұ xN`O?<{5KFK}.Kimm`GȒ[olTW/cޙ7e4|DoP[ĊYcm&\ۈ] ƞ?Oۿmou/P妧aZYd>k2yq#aU%`$iz >4?PYo4h_I62i!t?'!@OaV{QYEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP^c~͟zZM.B/{snEk ɒM~Ө&ag{G3?'8 (&ag{HfcB~=ËNZ= c翆÷?֭y?A.j~f~ظ}qۖOY /?:>cS5; ^r:G# fʒ>hn<_u> h,y߲ρnhnkyߏ颐w zU [FViJ{E)oa[B $E O&(aEPEPExNӵjX}#ORHRag_/"*Y@;IƽxK/7Cu]\C?e C@:}^HG//ZFI%>F98JP =%~/2~#xna=Pd pъQ@Ec_@ۭ֟wqء`e'hB9 czϵ ZLJVR&dWg (mUb6'u4VWixPӬmoZ$0vEiwczI°? I]!5> Vhu mAb58qNǗY6hъ6`3P^~&S4]DEQnp^Rc3B3P\¾%i&]oK;u 6)lqcV-0C@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@k='%kɫxQkCCr]h'qt eXPVׇj=?WxB@OͦBlwn9FYJRє zLNK9.gjT 88=+ξ~ЋX.5 ;WN3M X5ǁ!qƾo;w;˵7 sfY'o<̍]]z7>#ox[%uōsw D 2D#Uy<{A((((1*vGw X:a(?GRxcP%$$!aH!;CU<鸮߂?-,vԼ MNT>.+=}uhD Y>#U ~$^7_M+< ˮ|:GZ@Nig ǧ~΢>lo87%9uYxlj1D1,E@A'zW]_Ï 붦\|5aڙC[":nRTᔌG(oxW~3𝔐i/ %跹obil0Xk b>FlUo_ c .Oji'_xN}>{)E,C3$7Fw r>P;\4 f&Yg5ZȖYE̱]#R&կ\)ڵ mOPèxQ(fʬM,}N>X/O#=݃ۻym/\jZ̩,%%wFG5י]]w ~%hв隌Wgsix#؉Shᨾ گ@:zLL]h>bK/q_XEPEPEPEPEPEPEPEPt[ht\ZIk):l3k<niɣjq#&YGNӮw&_]q&|?[-4@sr$J@=((((= yI/h >66^YYR9k<(%Ƭ&)ho~=$%;H.p3'0⟅,,_Y>bK@ST4uC) dr : ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ($[j~i|miS mNkŰte**JA2 cn?i>65=Fm@L+Q[?ju?.MG'?Oӯw{jvd#3ɫ_شpxq4RO1A' R d޼3B>,xf[]+o yng8|szWiI;ƴ?9D]0G^/skwPxe-p|F/b@ .-ݍC( }G>-y7:Z@6pDapy A{QE ( ( ( ( ( ( 񗃴o><9>-SEkkIDa pC)H@5Ex|O|-<#R\̱2;;Re,*|&#-oDI^Z^6wq,e A\֭~Ο,o5=c$SY$(FCyP7%@Ex},:En {yg@ޡ]z1G&?Dy*ٓ̏kSO"|<TiOY_0G^) O>e}ʪ?4B',UEs#x+^MoOfK, *o>)|q/ti"ǀ W672Yl(2E$YJk7?dOY򪳴=C`JiOk3%rI'֋0G?U|tW9tWiOY_M>:Љ +UQf+?4B',UG&?Dy*d{]ϫE;<.uWx>:V"dhR8EbMʌQ}b[Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@FF+eh]j~կ&bK]D39=^I.ke6'E TLlix| $U$V`>ہsk|Ch6w-'HacRAc3_.H#_➭SZ^xjk<=a\]eEq$+%M c!`G6ltˇ5!R|a>k|tR&7"s >#c6UPǎ,u#W>贁LMm33O6t#pkcJ.Vm%V-u$׊*5寁a>M{kv׮U]ю)K9QJ2jO_|OIԭR#vumOWm2WKd}cg{o[]@ąApAqٺai4ND_jl/5d5xÚO4KѴ}MnA,QQf'I^YOOO|f]R^[_Dc: $6d79 ϡ)i> 'WA௄uYu 2WB`dY갅,̨8P`ܞ>x6/x~_+25H eC#/~Bc!ybPEFUِc ~?v6=_h mk붞{V T,,y $uXB5zYu|@>#M4iUo\ fܣ\@eujWv&iggy]ܼPܵrcR܀u<;xk~a<:ōĶ"xJtC*` / MM˧iz-|9.uZʰ F#"/i&xH,5dKXEV"FURʹ*#|wc_ k~ Y|UuJQ=#SxnD:Kdmby|N3{ |?ZNjh&bnkz<ƹ-Dn߷?qݷnZǯ7ez]-.5M_P8,7 #̌TDv݀rq5j_[x s1G@moۿ>τ|N ax\|J+8٨ -HR@^緲d|ݡMo~0%U RxoRX,\B]b;EՉUd{?3Y/J%["C -)BUxs^UTZi:bhOť֥#~oHt&1'|kǏt}3J=]s,+(DH]Øo`;Э|ow^x#~Ht˽Tiw:FҘyrGPo\V|g. 4څՠ*o6pƏ⿍,Kj //ǯ&g-P̐V΋C;/#w~'.7C-jDB$yKa]Nѵf[Ggqu#)[Pa`עxS|wIxk{+Veĥ#rv|t>/-/gH%~ugdW; +;ӼcĞ] ;9|erÛ9d'_yFL{ 1Adv?M{w͆z%gfRG3 '+Rۇǃth^$O4_[k =_Z I dvqy5YO焮HƓ Yt=E廣;$bI>h m˜߅ {n^#m|д%n>5Z{h]\0 ad}⯍ -O[jvVw]\F<9UAps_8| _=ƻko{e|<@9޴i'1$eQXQzϞ<χuok:O4 c"MhIV)RA&c~|IymfNq ~w {x/[n${DQE&EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP//}[Ŀl+^k:̒cRgo$b8% 4SNi=|G47? 7^  )29/xh|^E9WemMf@D6핰p\ "g]p1fYP>{>Zy3e İ4yL])i7rR (AEPEPEPEPEPEPEP^YZxB7MgIej}6#Z ycfTbtP 'AxKl.+Լ6c짳;[!W`Qfgȏ ooTKx77^*:d'39(&x%NFs-C7Vkç&So#9os֎fcooTKx77^*>E7D|G#oHMw.=F"-ޯFV0fo{oK|5Bq>`*#r#Y6'i9r#ooTK7|6ږkim*OK,Q hg:LRn`) (((((((((((((((((((((((((((((((x|6ak+߷_Cb>/d8tʎw7ut;]h6Ο>iL60;ǭkW3G~h+Q[ Y'K[xY>\BҶYxb[?53BK1ڕvVqp=kNk;k-]1ʲRz#ހ>еcPZ!om⑝D`GaM[d.3) ЬֿfKң R#~eIb"acԧ.(h3;'|pw4 Zտ`#)srUgdV9x;}jci :'7!##4:Woo|սΡ>3 9IDv-$;uP5].M2͵FdDzz3Qlq^.쵝Qؖ{k)XfCѕԐGҴҴZv6$ķFc?5%ĊYr\[|]54:inj:]rl#l9ah^ּk 66iw8eb@5fH[TQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEyw~5}__CO&JWYu ~a 3 F˹>=WU]I{a7[UR$$p5|  |jH<$/[AiX "[R:o&ݮ%o,)US ^ B,_59K=/lLn2#@szܒC]rU`ƍgp Fkҵy}cS}=,aʉOL\FvBOR!xQlA5|nO޿05H֥UUWl{[P(Vpˎ1@?MWu k] q9]PW槭-텔7/6 a]NnH,v3+]'4o xI}N4D]]Z8QH,7Fb&Wf5uWqĞ!|576zudž寯]׳#<0gO,Ǔ,fp>ggi<)k,Ex&m&XTI'5Exw%{/0Wm\褐Q=>*)Ȳt!A((((((((((((((((((((((((((xF//jVFa@rId^k_|iIJ3.pȻxcFQ@4W7߈Z C~ okN]^@֏^&|?Z,˹՝/^/5sR(7,0ƒ;G5_|MD7뚝׊yc|>bJү& 9IJodeX|˹6OBhGRueu[&ut>Pr>q|SW^7Ae0sI#1G%,I$GoZ{V!MRݭw*r u,(9ϥ!Ey[oQ< Wdz鳵m<z]HxM J%`@ g?Tth_?#UoƨOU[,̻>?kWxM,j.Ƿת"EaOH/OơQvUP}5ZO5£koWi.|YlV-<&,ZSQW~'pi{WDWTR}:qEs.Q\OOZ?-`"UT5x7.̬),lR((9O oAo]n)9k3nLDwFEePx/<uAZ# ;]z;Oi,cA1OZw57^!)_>"i6,|%8Ԧ*qy R4okr[nۉW>de}SEx4O7G4O7@csZO'ZO'.csZO'_ڗv?4x&Đ=<+E䁺VEGQMGY2e# E uQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@+W?xboĺ%$1۫ %zIoVxDgkx[M*HbH-f1* <$*c_ŸFiWLj> ^=ƮΉ$-^!MZ̍2"*`~Uoz2?158tKtN,n,/mK̶*+JP㮯-5j~&1gMItȬmH1X)^hEü30ݐIwOg<)_^%O{%xÈ/ZGe6ЛX*>ڹ>â=__uдQ=Oeq6_lH 9CV؟.fo ?C.་zƙ`M^+jofR6S ͽ<.KV%SiΡ&klom_L.e^`ơ0,õLqzkm2𶟦G _MGD 4meyIQx5fx5 \U^=E!3E.o4{gi>b+I^7(?q?|Ln?k?Ljm xGJ veiV;#EdI$I$MyLO]zsjڎK,ON2A(Pw K:Q~]+ַxRXlwO&Ra2][& =Oco+F :K010ݔ[q.͏N VK7" bЀx?Z3u7?f[O$:/l|Ey tkaw ]M9 0W᾿ zg|={/YxÖZ  K)TyzY -Ec}BX.am ֋ FT]Cy%DHr_h 44+/>xᶳOEyT[E9H P0`4úxfn<7a&Ւ*HmIq 3=X4f)K}+—Gľ55w+X8vP`h;W>!Ѽm|c?W`nRhLCHLKnaca/NͧZObXjͬߏUSe&9^H;oJnk lc jq%!Oo)2沂ƏsPt7/b/ g*vÂb6Z5ͺ$K4um-FX%[YpJ'?Ğ6# ̶Vuƫsxқxmeg)E``!Ꮐ>|A>'Uav/uklM"AGj|Kû_/%m3HI -og-[O܉^(k4Tzc=Ҷ=(aEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP|of7<][XRKA%YGe)"! DV|/EMwx3Q WaIpXܧ1׾bv%3?> S -EO_7{O"<? *? *b`hOkOT%x?glKߥʑYePI+Fȏ =w↑㫭*Cw-b{Wo'9/Z x#!$Q]+U_Ծ!.?ev@Cy%/_MekܶJ1UG"<7Meh-E_SY,Q9 k/;HߵOe#cx͉.M{(=<3|m 6w.+gW.#P04񫺏4ܱQѾ3x O !#œ7ψH}W~>ʾ8o4?(M߆$nte Zj{كڊ`-%+ND75ׄ񜗰ӣX H%24YI s[>!#œ7ψH}p~צ֬%g4#4=\Em̐\4P<TQ(o0.?hOV.,>|E3n5 [d.yfs!1lŐ^GS s[>!#œ7ψH}r4<5-[QմSIגd[s?rbdg0/QՔVE+?7KV"7PR?gXY KdjMk<~!Mh xcŐXr#}>.~ x;C>+MV0j6:fXD%O azUzߴ?fo@&+޽3㯀/ Y=y/4]WY9.7J]umln+"P3_??|?¢ԚEyW5,X ;@EyW5,X ;@EyW5,X ;@EyW5,X ;@EyW5,X ;@EyW5,X ;@EyW5,X ;@EyW5,X ;@EyW5,X ;@EyW5,X ;@Ey_oI(-IIeKm/Q8dU{J(ܤ*OV:ֶ~ ]z72 +=G}1#I }EEyߴE>&)MVh~3+}kf'oy8B3k/Ÿ.rD;-G~"5e,l$nWG_7|!|=_ƾa](^& |eW>^Ԯ俓>#yⴸI%Iaxd݊2)M;8hU_?0V e* 9}{KEٴ]7$Z>Euv+V_Q2";#DZ߶o]_򚏶o]_ϖFOxizxKv*ۘm" ?6DA\WC:>%hSjoV{BXK--6-ӡ+rWSߍ  SQߍ  SQt24B=\x^ ƿ|CcOмA^me uRLrbPr>c-&bR@ 1KE&(-PbR@ 1KE&(-PbR@ 1KEr'ya;W71]^(Jia&A$q\ˈ 'U_ـ$:޸wMֵ~aN7wy&Ϙ`3(GEܭHŷr3׆9/?:_\[^.G ?/".vO#xᜣ*D,B 5BY[juR8nCun6` #K"I |#ូ5Aψq|Axu߈ {XoHiMGKkM]On{Z x1k"Um[ "RqrKo&_yug;aX-,&yw|$/kמ/𗉦JAyi("b2vR^?isXB(XQEQEQEQEQEQE!8">عezkƩ5薶vR`2;((((((((((((((򟌿Q~s^^SJ/kը(:Ԙ#$ n&is ]Z*}8 P"Gs}ΙisK0^Ȕ`³?ſx[}x? ZCYjVP&HYbxlr.ElMtFN.C?'A֍L^-F^li~P0S hI>ɠx_~Ib^hnD96D#a#?tK8|<Z4#x4}F_Xdr 0%QU౭߇?Wzm<xZ] -ZHd/&\ɛtap[ow4/xNI/8$Y!7Ktt7FVPARD~:{-|#Erȩ񰋯|#c ]xH,Z\J~8C h^+OW-Enⴶ7$7xPz}Cw5 (AEPEPEPEP^9AqW{ Ekx8'm2QɮiZ$L2]B:",>'AjK"iy%݌7r!Ց#!y?Bݷ<;xR8Ϋ5ljmlc&Dk(f73g+|!m}w=ϊ/m> N'W)5e(<:l4L(]Wk_?CIuëhNԊTD'ʓLU؅R4<- :u‡Sͯ/}=ߘ34E;מMxÏ(5o\c%,  P$vUX^@~1G[.oEeТҥ4ѯc 6trdP#ͮ8|*}sk^5iRZMjm$YP +jwuK;6կ,[SRE$vUP1,ʃBJ x^.ș]wbsC dcMYMk{klڂ[=`8B*VEKOkSK'72\_gC>qk8{qogyUF&D6*XOäO,75MsRuKCSHwisj!h]UW8ısT~C2GMXH(N4fwa$HOkQХ.m.g]@u5y#Y|bhl$1I>-:1*߭~61ox(b.ޤY]WrY?{) lk>xS}s[Aj6L,3Le;M5-jxx7G /LAjj-J+7} +=/uje|SKQ0A Ox֠KsxKxaYC w,c@/Mx{H(׍,gK׷C^9޺k}&|)5%Aq4cы/vRW~>ω~"^-5[+6ozP4a@9W$+c4ms2_Z|w+6b\7ZDFPOS-o^ˠ7ZbGnsඛ]/S|O{y$n^( `S aU@,ҹ2) _G?W*,u?ٶGu~>R=W*,q.~>x>Y߱Gu~"ؿ*h'*)1IsER,(#րL-[Ai%֛y wڼ8eY2G$0GjE&Ey>?#ַjsvmOo\ZD؞(1剜;nMKD#ǚF>3F)gMoOe8oy!9dr24>"u5 SI/Gm=攑#]C 8u@ 4g#;:J)2=ih_+~|I]}E濾O&f©8PIָ X0-Mg][[ɉ&!m@O2H`g'Y:|!g-ֵ^sJ"{&n(׍Mt-jWm.]:,V I(G*==kS k-~kMLU^^Ego3)eInʞH4/=|:q +ľ54\Ʋf^ڄg8$N͌{; uw+&3~yt 7/j7-S̳9坾-cn|Ke1v8Ͻ_)9 uw+&k?_5qO< wBQ@$ 4 =n-J]KazNlwD)ݜcPGW5>"hQk귋4xJ,Ao23@ڬsᮾ~oYIfR_C{$oͻɗ6F'tk{[3J2Br#Gڌzhiq_ҿ7h;C]4^~ *<=iI}z&5 *+V+SLַz#Mk#B<,Ѷ2 WWFSЫ"_ ,xƙ/ >m9M5i 8C,pe"tQE#@(((((S *8SмPbΛ ߖORbWWEy v^x[_th-."Sڇl.l|%m[G|Ou3@ʳ2&|O*Yw˜]&1@W_-S7^>|r [@ k ,Цa⾪+ie!b\m݉eY20`rNدI^h_ սIˑp Hrl?IrMGELj#FKEKX妹9#rd%@[Bf լ=+lWNdukh>aaryLj>(:4-x\w,yF(cc? o魴upP&/{ߝio_>,I4oZnY|7v3=X4ЬszfkxȆ.T9Aw|Y__ >xSX _kZכna2 H'5] |k^h^ T;e7.J3{?x]ϠFYO:}Ŝ/hdI<8 `x^|sѮw_,GxdOm_,Tr)'|Y>}'j3z}Kqs5*W-d6,7Ƿ2WSѦK3xk^kL?oOLFb,v Ŀ4x?~çɤ.-2In񰄅PbÁVo?f~3m;_VXio Y(";yb%2J,1,O4tuB-Rך.~-S~׼h7MF?QO&\5}Ȩn^!??;/@ֽZcGA|;/"0s\iG16((?/4Z׉/[|Tu=II\ f,uca` UyV'|&E7:&ZY,N7;1q@#kgNXu-|(o R扥&յ{)b Yl`ңѿd#¾jڝlC5]^M^[IDs1MA$bY7ǽHZ -~" hVY\]F%oDbpu8pb"%8Z_xsM?Y,W& ұHě_@8)h~%:Ͼ3vmyr.4y/fy$)6#$`eN+/uMη}izҦދM4=0d&U=ηk>6 zDoj0Zj)y$w0 UG$GjnL>"k_"]{wesk$}Sw#HUEsoMͦ Jdk-׌cθXRKN/Wf\;H)T$h@I0_sa<oNvEq5M+96ugdB&Hu7G4ЛBҴN8-'Xf{,cʾ#VgZώZ]x$Oq{r N+c?pP G@gkӼ {=fuc5\#T;I5$DV?Oxލk|G |%,e^D1 >daYW,?W {4Nl8\xNa=bm_vֶ$t"Ӗ9dT3[ 0vյ? ,xRu_^j%ŤhaPX3 獚ѼIs&'LIfb$|b73MFsF xm&<9mmquvF) nP;-?ľ(Ei~wy59@4 WI ҥad9FHR@tys<_,׼@껣)֯HtJ P7 4;+SKڽNmVy Ds1fl$$+–:]tMui$I !"dI̙GV{QPnQEQEQEQEQEQEQEA{gg=E,(da #Gxsƞ EIƗ}@8[V-V4P7 1stSNi=D]򦃫s~x T׷ׂ{g^Εs-]:gkg)'F+&j[+)h)RH{[Z>Uҗq4($etd{V?&5~k[X[iem8QEQPbx TM{}]$OҼ[]MBB.-~ \b.ABx T희J x 煗\=$wigJJ;N\t_swCH? {^+)t_*w$Lo2H6(U 䉫-/Bs^ skzƷsnm^6I 䤀l>i_ |gEDӴi|%Y\;;噙$CEI%QEQEQEQEQEQEQEQEQEQEyϊgx3:,o.@:χ " rE$ /?:j_fOq|A07~>ËNZYK /?:fOq|ATPG07~>ËN_uzo+;ښK0C6_꺽tmuu$OC^eamY[[igo 8FUGp4֤uQLaEPEPEPEPEPEPEPE|QYEßjS6N"g,MVP`nm6~wN|q>o OGL2Q)/iSAЉ4h{'Jt1PDpC7|3{tVB \$h?RI$I$MlPEPEPxr>45?hO;UY3ǘ#s͌udiv,q2392Dy~L"xE7R2#D56+)#S4ۯكVzs'{,v3R1 Y'b@((((((((((((((kRbcc ( ( ( +Bx-->[ϲJpn*!wd qz?C;úm535&WM-Ė)7DQ{Mx㿀jQXxĶu-W[3[ BUx8<SxŶ^,BWjJD䙼P3w3@Ey?>5?M{=;FҮaԧY5$Kpxwc uosW^>]vZV}4UKvh\a{ip1vTW'D>j^:gҠѤ֭6B]cB9q|[H9}exV>W6l^Cm 4W +mA2(/.D<xm5D}QȞuʪ qB)|W4+Ag٩٘HKI#3K;33I5^sk:ZYg!3eMc9'῎V6^#BnuVQZVeTQ6Dm!8hEÉ=c)m[M:N!Xz~*5]BOK[Av.䑧%xLj+"]#}9~R]GP:GvZ+97tHCmZ-Z+-&(A:c|R3o<'WU[ Sr#I*`O'=↵M?J}czž.oDCn"o\2 )T\?E|ᯇxZ?vaNΎ| ۰UY`(A߃_m{m3GO'}R}I;VVxEɊḤx+lM@7_kVm+OE"JZiۦiUdYfUE1y| G{/~#|7tKu?-C-sEm p_5|pM@ Q;iVbf5Gv 5=~OMlX-Yu6SjP{b];O5#.k:?a i>Mc4 }{ l഍F7럳|-okx:x慍idP"S͡b7]N-moS~:^Cud~γnOKmXgXO-F(72f* Yd6]ox#\5ЊnU /ڋ6}eyW]tMf5_IIonVt='U' r0> ( ( ( ( ( ( ( ( ( ( ( ( kSI)(((((((G4x{Pе> SH k{;R y7]FjJ-|) .zb)|(/||D.pvA*C+A@`f[.׏u [[1xWdn)o^0Hn)qY}7o5]i- ܞ4Mi6l)_1wtUXY6fTFV }t|5j3X2>ֈ2. O_~}Lj~'YHX]2[rs {W?'?zºw;|cZ;q߂ yٹl $܌GҔWu׀5|iu?.MEs#Ow{jN:o o%<{ԮuT9ψZ׏|OoIoubGD*ץH"32"ំt+fH<4s%-,fv$y5 w Xx{ÿ ~izE/I,9gvbij31$u3< <'{4i^6K^%L6|t*)8(ȁf_?jzZIi^iH{y2 VVGFducR((((((((((((((()N&&:(0((((((( C_^ƾ&k/1Y!z,j:^ҼCz[jQ{uw|B')+Hu/aYxo\jp{.ﻶ88پ+x&?K/_#~ g+/xJմxA|Z"4KISςh~'eWhQt1~A.S<Ʀ2k)")eFnD%X Xf1Kt{]VĚLZu݌D#1,Űd9pv rx᝗!񦅧xvx3Ϩ}icW[kpAw~/X% ᛭R/5 avh䑣f]Qee/~FM_96wOگ^<<8VGP&1Hc^X #-O4_ P񯇬|3~;MjU;;!Xgn?t?>NqX^_ZbYTJd>##<M?A ;RԴ-n Y-ppۀ.;׼N6>{5\%ķx8`cc ,?jCn w/n֥}XƑ=HE:7uu;QH(((((((((((((:Ԙ(Š(((((((M~ =gRXl_P.di組4F,,H|G9E4&  ߈?h nA4QUs>D/h|E\9Cc?wA QpA  ߈?/ )Ὲ7ղx[ݔ<Tu,MQpF>ef(l_69o4șWB cޫE@(QEQEQEQEQEQEQEQEQEQEQEQEQESZ)13 Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factoryInvocation Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factoryInvocation/factoryInvocation.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3277 Text-content-md5: fd33280a78caa30dfd2d03c12ecad6e6 Text-content-sha1: 4d3223f90bac0c583845e539cea98d585653eb22 Content-length: 3322 K 13 svn:mime-type V 10 text/plain PROPS-END Factory Invocation

Factory invocation

Definition

A factory invocation is a step of a production plan which invokes either a factory component or Java task. Expected parameters for the invocation are provided by the contract element of the factory component or by the context of the invocation.

Motivation

Generation tailoring depends on i) the viewpoint contents, and ii) on the parameter values given to a factory component's contract. A factory component invocation meets the second point. In the context of a production plan, an invocation is an orchestration step which realizes the connection from a requester factory component to the provider factory component; the context provides values expected by the factory component's contract.

Global View

Figure 1. Global view

To generalize this definition, a factory component or java task represents a function for a factory invocation. For instance, it could be a generation function (e.g., code, model generation, a generation function specialized by patterns), or a deployment function. An invocation FCI corresponds to a function f ensured by a factory component or Java Task and a list of parameters p required by f.

FCI: f (p)

FCI is a reflective structure because f can contain a new set of FCI; n is the depth level.

FCIn: fn (pn)

Creating an factory component invocation corresponds to the creation of a new FCI function. Executing a factory component corresponds to the application of FCI (b-reduction in lambda calculus).

Structure

For an asset production with factory component, a factory invocation references a factory component. For an asset production with java task, an factory invocation contains a java task which references a java task factory. In the two cases, the factory invocation contains a context for passing parameter values. The relationship between a factory invocation and a factory component through a contract is explained in the contract section.

Factory Invocation structure

Figure 1. Factory Invocation structure


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factoryInvocation/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factoryInvocation/images/factoryInvocationGlobalView.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 22867 Text-content-md5: 94e2372dd32b0b9fe69d989183cc510e Text-content-sha1: 47b564e7b5c6dac338e74520d08d819c008e4fc4 Content-length: 22926 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222"y" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( (1GϥXBPڍkg20'sUUw8 @O kz⿖0َPq'Ko#a_\~ 򮭬)0 H8<ƚ%ONwv-;5"eΙ.uky{=pyyi"+a˦CsH%vCj|3bmӖ5,';G"zwk=B?j@|?&5 SrnN0בK_Ky鶷(ܯ)nVҘ/%;I?oQu6[7 q}Be%#VnWsmωut\[vz\Ҭ[(0LENwK` H5:D{{iӿ]zWJV"}s]q;#9e gŨ}VAn{ɼ xHFAe'"zwk=';QQZ\i2@eEb:ƻp:楥:,LZKBQEٷ8FO`zO"Zwk=㴟iuǎCbz,[_͝H ,1IEM^Y$_>Bc'$zv%t=B!de\9aKߘ8sY^AX[%fFFTiY^{Z襡(0(((((((((((((((((((((((((((((((Qk~r$6c?VeQ@Wu2oEҮ^DFX`F 閚Ɲ5B[i r#A994([oa^MBvȪj4К452wMHtrѐluqGU5]CRRԯ4۴֢6"-i+ 늏5,vx~;.fV> [.jZEf VFRCoFw}B,VVԬ~ͧGH4e-hmp-.}o5,vx~;.̭t_RӤOy 11( řW=SM>-^ycJH(2>ޕO߇;G3WfB5W3?zm#@5Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@kZωt P}5'KIDirIRpk\6eiY5KQ0c<` %0qz8VWPAi7ƶZ4:`M"wn$%Cg8{9[Yi&Ѳd[u0ۣFbHʜz6㋫!|rܭ$5. EJ\ R/tY-4i,k%Moac =V!u 8췱]vϭa6''K=:Lm x=s]l 7WVW\[&0mtgӑ@EyNw<Z^ϫ cKto.?43-[ij>5]&6Ӌle)b7Ph3[Uƞ.@agF\WZ\M}.UKh7#ͧ `J-o367Qxmds p7p Q z]ƥtAs5սW[G5*NB+4+/^I] 7W)rX \z((((((((((((((((((((((((((((((((մ=3\!좹Hro2qEMclhM\a|ܢUAK-縋ݳșTȼ>|3XJy%PIw3U~YŸaʵܦ_A\ܛ].W-$2XGyYrT2nT$W--WXxҨP\#4.:apT|--%.nJb Rǵ H g5<uţY[}60wvy8x?5:piH3 )e+nfk~*XUH/mux F(ctm;=Jt 7<"IQpJ!b@Y3Y>u喙;TEVg(jj&$E:z<(^`eu%ssgӼ#!-W `D ઀$rO-_!M}q,>GLp|)a,~]6@\ݞt?֣Y[&a6-<]vrH5ԞeZtEyn_ryLoexbZ{-N1sdq++o<~p6^hS7Z_'R"Ȓf,JpT0mc'"ӼsRXUYm)n-e9b\dy+m c@Os!yEk))@aoZu,HѝJzV_=r3ր.UOw}$#tu?C@KMWW-k+)#Y*Ydz ்Gk~Hԛ*ǔ86Nh-JH濿`e݁=I 2I IHCr>u+䷐]oш>Q\6R/گv2Ɗ5i kş+X?YB(?Эcƨg ?8j]7@u+y^'!h@q}_LU])+!ܶ<1zsӥvgmxk5G׋?VUtkCj).`oC+$0 r1SҼ]k욝k'gF0ȱVQ`kş+X?YB{oŮa<-+eyqSW^MmB\BY2eѷ`p?^,ZVrG4I,NF*#4,f-’usޥ̊=|r};Qմ/.tч=[džHO Ӣ+ciVEkqs$`#H5Nu}Ɵk5ݿ!V/X®Q@˛{>i-O,O$ v#88mLlu{<=Vfsqy]*Ki5 Gpb2*趚ŵ7Gd՘y3Z5*˦is5)HxjFRF@#*EC X"S S((*jWPZۧޖy"IP+Aq"Vm=\g͓amW?ښzl]x|z4OQEakUii7]43^D!dq=+K-A"dkwv-BF6;>N0@O{+b'uIJ4KrY i!xRG,[I)#*zWć2i jEkDwe*A\xe9+ШH^`0S-#.$.2:psޥ6h\s9]H9Lppk9sToyVzoْu #W N2P1 ڟ:̏$+f6,O$G&h G_Eoix?M5Q@G~zºZWt,K_*(JP!0sr1^w(_y GP=.4M# X--/(ԒG>k{Y"O+RG4-(8`} s[V4wo [/oGxrQ6J-.!6rd.ᑀl7܂FsU'5F[t7뫩cP- oaޛx[P/ 煿5M O ݮ2g.#R n0a9gϡz #^C>v!] V}*/yqFwDߨG* +/ks j&N-AvoGh" ##}s[V4wo [/<3#7$hR \jWGcQ֟+KMQ5JDaU0 'ƍ(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP&-i7lK,pNy^W*Zmok9Fр׫<_u}K˳/e%h\ӼEũWh]=AhUM3M]6?.%%p02{z@Q@Q@\GIIkSa|j/ղ#A?)]?R#C{PI,K+F;87ǡ[^kҌцw'ڟteYv+rybDPBU(vh[xVC8݊{"_Zc;m>VPeSGoQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@sS}+E]F ?#*$|1G!UI'z <"{>?{>~v+u$k"(Q@>_?U?[x:}ζIxj&at~LVfNa_?Q?%\Gp^i e3kPLou+{t{h&YLAFh8zqgXZitå#Irxc x OxxwQeڌCgyMlq gB^yuc1p&!<ڧdދؿi>5.}I8/&qc'F("~f/$@ƔNf_%|y6$+; xxwVfx\0ix~8"_?ߌ.qV,YfhԓؤPQEQEQEQEQEQEQEQEQU4o#wI,T{Oqs~YpAzTp>(IeMН/H.ttW9 6Bvl"Ie GEsj?'k(Q;\_@ttW9 6Bvl"Ie GEsj?'k(Q;\_@ttW3/^|GZ啪^ eGp=WCmsW6G<x千+GPQEQHX(%u&p$ƻl爴uI/#Vex\__XIp)ٮ21J uS )iu\eiK95zvo_\ozmRIKJf V!x\eq|>}J .5 |1en%Ii62W?09O@{vMݧ_KML=[g-܏ݲ͸B"/ oFԤ%O ηr`p#91ze  =h =A/]Ehe,&96hʷQC&q7gCnH cr!`?*}rN36;hA,HVRÚonMV(fXf+TUPSY+<0mz?*]S&3acޠ,lGQkIveEu)#ac5m~I[{ %u&fm`U0Y?0nk?87\jjb5fIIh79;X81HmKe2yDdIgwzWq*61s+Vw죊Ki A,. Xzs{v6}x}Gdb9;FF؉팁Z7OF]|'YAkE5̪Wӂ$@ק̞wVuq,D y^`B01' `[*67O@\t^ Vv7-lѼ>PA\SyC=2%KG][mجr3O*67O@\?u[eu.E&D7ᔦϔ:H5 i0irjn(_7nz]?sWCh1KKIwQGܴ\`B(uS<){Tݬi72g=xu#p~lmy|G۽V!ZGm]r4g;KF>L1Kh O:Yܭ&VH|32H9l9=;&IޞUԲ#^_荪xOzNJխ kĻ>ew_ZXX+ QK/#sztnFzԴ[Z^ig2Gs P\&G[n̍ȭ'Lt=2oiĄl}> G+/cCO#K9H#T'A)&WVV/>ֺZ)s+W$k> $`f EK #oA'[qeijl_ [(((* HmdXc 0hxNwa$;Gozxusa$.B?ho_߅b^2neikFk :lZh#ğ4 ? ך^Ije< ȩ/&A<B(OЩ&/ xbĚ~zgb-&s\νnj|&}g   h*h.  h*h.  h*h.  kONKӭ,bcI!@PEPEPEPEPEPEPEPEPEP-)ƙ TlZ+>Yhُe-yַ1 Y[{c PHԌA;W8< a -nX z(bvaNj\0xOG!q/=)Ep#>>f]nMV"*ׇ4OhͶmh}A @$G8\9N.?(cbm9lXxsN,U][H2ê}tUM$2K ;fPLlARWB}k/` B_2z.h˨k7޷_[su6ln#ʳ(WN 0<`kHN5޷eh{6GtqE$Q"(UE Qqcx! @kB%$Ě ~PcZ\[οdV?tR(7<.}_f֭:;?SzGe涪zv~DFGJ+oxXI[X{CV⹮ ZE^k#^ :Fę7n;Xr}ZۭGH$uM6+"gO0DUU7@@ 5rY]GX_7vcFR.7%ļ\ ^9Eo M"Gj]U$zN C)Gz]oZM?MwMGi3Xı9gmDf۸`)SnslxPӼgbr'r#˨db= auwWC&"8q xe2!%Ib)_mzei:׊5]Uu(fmSW{ie[hY2ǝ+rܱ鴊+𶭫mi 溾y`TXNw@я5@V\yAk~zu%7wM#1< F_`b4m7KMihw\LԊo[~5/_je/ ]5o (>0Y_mAx}E:O>-|&zq k<╟?п]8g<#pg1n.Ma3#&p}rv,+;+]:;K+hmP"(S@Q@Q@s>!Ş?p?VS+kc*Df'qEQEQEQEQEQEQEQEQEQEQEQEQEQET7vwi5BcuUTxTv%xWh6#) jk] m .L1*I_]jhw%vP*YEfqĖ!T@P*j(ᄓϕ3yjW["uV?{زW%mXnwr}4GJR G[G*(nе}{JhsG40JkCdkJ ( ( ( ;ocwwBO.E}>Ƶ( &ggeR +tTG!󞹣P^XeԴ+ $6!gi`qt~ο%ƣX^NQ$IT ޒú&:OR{dvT9A#֕{hڍ7E!{dv#i##xhUH}DE[!0gkJ?7\iEI%F35EQEQEQEQEQEQEQEQEW3{]5s:7 tQEQEQEW;!OE%;諞Ed's@ Q@Q@Q@W?jgvjéeH^ @3@/E쭝XPH8)BFJ%(5 JVVv+s$r"P"EVP p{Eyͷ=WWwZ:IϨFcCy#Pہ'a>Gsse]%d0J6#6YyLk޿h/ۼ=[^H!w7;w`q=*%#1\fbTNmc;j+ϣ޳)8eX-"M<[ϖ>sx":qM= iFIOO\:<`ab%*h@q.oo_!ķ%[xGVDմ AE-Q@Q@Q@j)5{ľ kkƶϓ!A 9 ^"&zmǺ;H7á# *1*E!c$brLĒOrMgx ;VK+7Q;e1/dh@>m,wm=MoPEPEPEP9wcw=_NYo ԭ7 ƒWTG\5mTXpݘPB^WLn፿3gu|9ͮX=̱X6-QʸU=x ӽlQ\nS<6 Pڏ+QV .Ьmw0q vTQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW3{]5s:7 tQEQEQEW9cgGw55⣍_??Is@-Q@Q@Q@szςtjyo[>y .~r+9_,7⑬6(vprr-ޡ~kۃ,Q`Y-HaEV76 jiZIf3GN6X6%峻^if2@@9q81\zs?+ZfY%bv+%0$Cv"-llri @ C]E5x[]ei}KXpr*[NKqq5̾ưzUiQ@Q@B3흽g?|ᴐg5m.y,YAk9a]Kݪl > JEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP\α#?t>c1MEPEPEP\ϋ8|*ޚ]5s>/M QEQEQEQEQEW3kZ9 k~=AC ~]5s~!լ|IanMiѮdʱd/p\HaiX}cqŬ˺9clcVh(((h\kz b܌ n#ֶ+8|wᇷ"jVП q߉ԴKX}v"c*IP@V9'{ź}nI *3UUW#Ve @o'Qg*.5LjuG݉dݫ(d[,GC )mmⷷ8aGjQ@PQEQEQEQEQEQEJ?&8ix%8S&lGWUmu; Vk[9cn`EsÚ.dv-]QEQEQEQEQEQEQEQEQEQEQEQEQEQE>c1M\α#?tQEQEQU/];L]څgڤy#YA?Z\όx>Ϳ?k{GzoP<dJWxlL#r6 q2QYE}br-ܨb6pp } G .[o7ϻU{hԛVr#jQEQEQEQEQESյ(tmTY +y.$X,U$ zȼky6ͣ1Vộa?+݆jOonJlpg7n ,1-sŚ,ע0 :)y^=oI&JCa{p ,hSVTxwM RVep:cg4?Mȵ.LZw#O ydXeUGg%׈S@Hw0' ;vKh8hg4?Mȵ,!aҢdլWOξ[Fx<x>Bv]HUy9uBofPA7˜cX._>,&CSZk6}qcg\]ۂf)ՙ8$z=i=->wXGc.0EGşq7"h8kJ.ehhd8pVx'ך+i6ݖL)-mSwQO_2+b u d vQRIJr_I>,&t+5(5>K\'uAM IUXOt x8ǸX.h&Z?|Y@M-Hu8P]ur&sI_=%1 {xa% ,nmh$69`7Ojմ ;_ I]oR S|3 =lLĒHC#ܬB) 'Ú֎ntǹP$%,Y 烳H,0rY!6˟q#lʍR >W,._~|n'h@);h'jq~iXt;k[r aAd%㯘zݏSZ" pW<:as+z\6omp%AK鹈V.tlu [m"r99Q gv:<1k#Zg#涞]B{r<֒ Bp>qM}7G&]5,P?2E,#pHcw<*qX-5&Pf13ۄ! #۳3Y =WuA+t SmmiuzlbL/):R jug;dSQ)V]vok?7 bk>U9Cq~k-seUFrAdOFgZ$n9;UB4[) ((((((((((+?}qccG :騢((((((((((P7/<%,'3 gޛ k9W%G+ o񮚊^O|'@KͿƺj({?[m4½-6騠g o k9W%G+ o񮚊^O|'@KͿƺj({?[m4½-6騠 +;O6 6!kEQEQEQEQEk6u{miJtQr+B/~׼q[i:UeB1FxIpS9|s&5KIٝWbv,{S蠞MzExφ$`\XAX㕢||ޏp |((((((((((((W5-͞,7[2\o;K-$Yo$[* q:z/iu ;Xlv]4lHANA4tW[H(ןϨykW&ލo\8qZؖW:tAb@NO͗R{P=w]mW4\#ybC_b::+{[?H,S-s=tW?C~lGuOeQ\z^"oH|5#~:*+_Q?:xzo"g#ڏtW3DG?tW3W#m:?|DJ騮g{QC|I/hC|D G!\*騮g{"?Z? xZa:j+&+[XP*I'zOVh(((((((((((((((((((((((((((((((((((((((((((((((((((( Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/factoryInvocation/images/factoryInvocationStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 44158 Text-content-md5: 259325235bf23ac364bc8a1cd5283fdd Text-content-sha1: 07516979230851da11e3cfa63f0a642954a94a89 Content-length: 44217 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (R)Urz hw g-<C. @5w g-<C. @5w g-<C. @5i ܥ'Hnsy>·((((Z:m˹I$$&(Q%6U'nF@EGam ?N@EGam ?N@EGam ?N@EGam ?N@EGam ?N@EfK jq[-Qyjް,!u Ebj1ޗ1[K`k?Ɨvc!ͧS1@iz-ko$%!U-}q㦿l 6J[^閗yC)b3GQ4h'W?.]^[%pΏjrEDv6ڨnn(%q]@&4kķ0.~~`19>bBlEiԹB"/q@E;sKwD871)#-chh𖧬^ "֗ v`划QKbOoYz_Mi&;9$YPv8*޹N{۫U?/Gd`}ߢN(BhKwR}!Ԛ4o}e|VLDfU%A*{ƀ: +čǶ9o1ido;=ǨX-[5uGA BC"FI<$hQ\ۼi6$M?BRKy,RG>6>XWGSEri>6>X._?SYxNL״.[[i)>!Xr88s))QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW"]KPňI wϳnqJWMދkwG>5ďe+p/*vB_N*pψ#j^ ̒KC*[O!7eWf??M'мKaGWMiYwa #i=[c]ޅf jI uqݗH; 1RJm @0g7)u}cmE粻[ "2IP@݅S,vie έa-,r xIO6%߈cyToX*9-T #NԯoW:shvG0eb2n5]m ]hY>i`%ސ}QHYדH텅y%dEaim ̑LcS7lcOQw4uyK%ܼSE~e`ܶiz핍.o A,V|KHn9s b:[M'u;43aϢ#'U|G:o}nזRʛY@9*7N8!j}/QУH-4y.Ǧ`6#|~j76~,ҭti"T+qmp%hnR7_6sCZ:UvŴMIGDoBG_ZPHom2CS+2HU߆bfHF./>[G i \F*K6 W1hnGO e/A`̓c]i:ef-!XbTI$J37 aqם赑?iR+?5biR6}w>u }Fđxդzh½b6AIdpi7\ p8ZZ/; :Օ۰ȉ%`~a~?iן>ځ=$Hi$uHK;P9$VGMa=[u$J#x$Q*/Iԇ-fA޹9yR)5/mcOխay?HWj$vv M5$t氍bS_8iEWVSEs%,RX\P֮,V2A nIBDI07cBt$Vwo~,緒& 1,l6/pxchkKw LNKgt#֩}xnbo1#Ggе&H{쎗h+02VqtοG}Q:(aEPN";x7z܆+KUpcI,ElvWc0&9*nioS o6`Bhӕ?SOhuP-  q-,tɭm#s)ZDvpѷ꠆zhLbw  xM6/f^t[ Ln)Fq\#Fw ]MY \F6Π67.qG4Gk56WRj6Q4B9[XhcpdBW!I)eRG ºӸQEQEQEQEQEQEQEQExIJ_i[pdgURѕjk޵m4ۈPdeY<1cz$ӚΊ70ч\S'Ӭnkd 2BR01^Sx"5]Y5˸T,8PN03Wֹ=NⱣ<& @ϥDV,+% )W*!_k=ֹ=EÔtvf:y=Q @DH<|c*!_k=ֹ=EÔr {xmјZV8ZikZ߈!ki wjwy7ڕD$UE @pBEQEQEQEr'M_ѵ˦Xf2HDz)'Mnjܑ_Qp4Ct?{{Ǩ7Ksz)Ey#2kXu>"I P?{Nr>l:)"\ #^\9MJI"H&-2PA*{8MP7KszCt?{{ǨrLʈe=r6j'/a5+`*G<m'PG69Qy jwy7D,J{FT}'EY+xkQ,9DqϴWJ[bNMrˎ#{v]&tVT^Im%vPNX g<ЖQK1ƳNRS"(fRAshrOiHTYK4D۹ oQ$dNƺ,qX=6\9289r t4W;EizWYSe8"#&O ^-1ZY4#**x t4W?s=5xm$0&!!ׯM8ȩMjͧۥ쌲qW\0lݘljYu삽.U {_ ߈[] HYnc}z ^+}EҁH-bFv*ppȹ5@me.[L fWC i/ Wj)VG' }k"T_a>?uQpG' uk"U KZt  㹙#tmȋf.;BMvTQpHJ(bE>%Zm|{xsKxM$—$83&=G]qK6-kf@Lr+ ԌpMլug6#ꢚ%xfHkK ]?Qca&XL:vbM~OYk\r\Ij| *IP@,nVΩB~l&SsM?K[^uwYM' ㍔0"%!1b׼1߷'Z9K' ,qFΩB~l&SsM[]/ZuӛNM/r,*!2'U O ji\VKy,~{ pxSsM!!C\8h51|),&ıΡV"d۴aۗ rMMi;}'Ak^Knã4*׎ jl'h?O?$ѠjGTҠH%xg\PG"Ǯ\})>./줶ӭtɧʂ y`}=yuOe4l'h,[F&ggutJOog=p\^͑A ۓչfɼ&^Ӟlgę^:f3E]?O?$l'h5 zӁJ]ur?n ]Vt" ck$,L2J"`@=u iQHaEPEPEPEPEPEPEv\DV I<@ךHnLnY1:?1W,Fo";ÎڊP_ѢuVYEmm p(*?_xrYյV$60©v*ht5tQ@Q@Q@Q@Q@Q@Q@Q@Q@yo i3K] a'o2fw6#z1fgsC޹t83G"0z~Qܭ BD3Iu}rmyc8G <_Wu ޱh\i-Xd*#z((~;wR>'i6MW7:r*$J$\;ס|ާxN+v+;4?wfd ;'Ѽ8Z ޤ&WEPEPEP3kz4YqfcMdּEsao{=Xn A,wP7i_E+hs[ѣ!`Xrcּ7=5Οs+XK{o5P(9$q<'gFMM{}-*\THF[|nxIk>ӟKL4{m6;$Alʤ*@k<ݍ^o躌%JnT8ܠqkMNjE帞KQyaef$QEQEQEQEQEQEQE! ESQEQEQEW3 ?W3?QEQEQEQEQEQEQEQEQEQEQEb>!NNkb em!32FGZ~1YoF3=Ǧk7 bE'^w8%f ^YQDq-ij Vr|"n@\dX@64 Gkbifsu;VHQUNӮ+隼2_-&PYnlvQEQEU{mN6Xۣ)"Q@o!ú]KNU)3ձȎc-tu}2xm) jai-\!=QV:]e&{Gف# r(((((((((((()Z(Š(((a$a$(((((((((+ԢֵRM:&xDj3B=G]Ԯ<1Iwwz #`c̗kpSkRAomڵKR6<:r 7l2HдOowd=\?5 O$@4T.%YfTI6lrB'-PEPEPEPEP\'24mjlmz^WUU5M6X.t؄QסǨ=<9(gRntmUiTREG>\tAWA@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ ERQE1Q@Q@Q@s>0] I]5s>0] I@5Q@Q@Q@Q@Q@Q@Q@jSF[B7HQFxfQ=ψoowYFmQ-#sX؜#g njUi rHAc)n_xW{[+:_V vV U>16Cj"6uF%7F-pMd(~cF )[]ɤ%iƟ}o-Gh R0I>kY^$|4- .G  ,mloRhվGh\VFv }q@5?6gdCqoo PgQAhX3pH)^KrO.n5dM&w,| x! ^uojOTkUrL9&=1E%rIcR Xvܙ"fԀ,$a\%iֶgQO8^0[&,0nPN8v]ܗer&\HJo V;ZԬ[Z! i6Jl6dsihz5[]*ԅ.Af$I$xsТ(((((z,ieK%',EX-mH]& iYR9Bu mǒH7  ;gQYYOE}Zf Gnd4lHF l8l ] wc Y]ÑPT 4)޳>kZ*ٱ4֐!iʫH-$^0Ob8 g=1Y{D}>b(Va0 0<SO4='E 4.p 8$4srj6a}r4ۋ]?HQ4JHiLg%Mjx;Rg}^Si90%T$#=#5&&t,ΚF>/}csIZv CZDs%+'dNKSehS;g g\=nnO?1ךUa ҤTKa5 $dt*+kx^;6%dB+cpjҨ?495FѴ[!rTrzP9mKWīuw1,q[Ie:*".㿂USojZ~e35Z~hȃ̻V?ws :ohza컼ˈdm{,yެcZ2Y[Yb+T`q.cE m]\nlXJ5DqʒK&?R e-(0((((.@2]Cqw Pּe2yjŭomdk`{[4Er ëx~[զ$*a;Uy9=;wEǨIiie##8'C_mN:Χa-͟vop0~a{kխ5zi g%ZZbFd*v~EJ^4X/ZihkOrٰ 6p43+JTddrTuk x<ܣ $I~&ođ,ْ4\aqNx=_ú[YtmxKN]yHYhFbHSLvxMiqLg_GqڟkVl%Ե ;RH̤ w+'gRjv`Fb ʻ$ c#[ Z0>.,[y"HFSvr:Pukviz!ihA(\ރJ[|V}wC65 q~n"LtK[xB{ i Op]2#Iռ:MsaqXx3n+"o1lbr2{d_hkksz\֢s,@#kϭiV:mƧedVY 9=Aڸ]WC%|mA#S=՝@»9p@sE慫Ȟ&`f\{}L;OG`1osw1^{f:+eެ.Vm죆o,h/ (;O;N/Oo+iPp8#[Isuбe{k fR20OP3ZSJ"#OwWwZ}A|_],h#hR媀6c'}Es.MXɾy07n?y;G8^'$N޺\[_ndt Ѱ`go TmAo*j(&~"Uo_7 ߈o7G!6 ⫦9Bm5/QMEy騠 'Úf,#]Lus33Ƕp=+V((((+i"hYW$d<45WVM41OfEpZ2@`v$yAh(({nMGBͳɎS Fc W1H^)GS0WX]6%RQ9}a^Ɖ[nz ufOFSl8 AZ(((((((()Z(Š( چiXM}q#tU?Srq\2ÿڶ2%5vI3l,q9źUޫ,<)Lb_algfֳ]juRiw3 [^}:5djڋ~@VPFr P}Tj>5 FUfQ`[#6F3NEy4Y Y+P;rڸcd!A*<rx{Rv{kuys ̭i*j+8P2*,>|f7eksy9|B7\Esz>~ qϦZY:v[f7xj_}-$+^F)W*}1 ]0]ZLj,hӀw qf|@Ӡĩo4Hc nQ7 ~l` zb&{Hٚ%eyI3hzN -${{sT#!ޏ9j负hiW2@8L8e$a kVi7'ǩ֤Uh(((((ȫ׌J/xZҿVgxE+hU5]:cH.K/ B ԩtP'?GOK}S][i!xtY`i`cqdtI65sKٷ,j%Xuqq,pY*I<z䢆S-2[aN-%Rj$tU<=g@ƒV]CQա-^vؔ±oV 8n:Vv[TMWMꖩ ifY!!vwI9 (oڵ˿NilsHfws{g%'Z>Q]Eq% DZz 0k1|+ k/1-4%dPEPEPEPEPEPEPEPEP#JXm֭ |d$HXbۋua uBr}Wx/ B$,[VH*|)`4Ǿ{ӭ†0TNz`RŤi_K}i$*$qO@X'ִQIɵgVi73ـuۅk@^kze#]P$MXoͺXݳF2p=HtՕl4KUA mXv;!QYbրq{uq6xCd1Pjڶ^Z޹eos9'Ѭ$*2Sqĉ5tԶ=V#vy;"f ~@bSgm"No-|޼9*tO6!o'n1zu;Zi; :\,Lddm 2 0Ҿ֙"aǠZ裊8bHEHB(P:; usi y[3P#="P|]$/ seK@ҺJ(^okpNme'd[ chPЃֹ|$P{ e2ɲ2C{SX-{̖͠&*s9ѶGnav,5hU플 Ɍ%#VA6(+@ֆbIm%.%9h%a)uZT񎙫DžS#MQݰPPEPEPEPEPEPEPEPQE-QLaEPEPEP\ߋdxeݬB>W3?QEQEQEQEQEQEQEQEV_U?o֥eE]cf ?-i_+F?"֕^ph]CQMԵ;="[6񁹈$NrIIsX:U5(uBaĚv":M68i+l@7^++bKm*6Z钌4סX̀UPEPEPEPEPEPEPEPEPEPEPEPEPEP; qj Oɫc˜0] I]5s>0] I@5Q@Q@Q@U gY6Y÷̔m(z@HwsP9$Tvwwvw0J3иta7kt=)؛L={WjM4׿E{ƫS8Bn`ʟj13X9?iQ >zj`88`24?^z4GGK]q ! t^Vujkp]ٜ\G:g@=y(s:]ZB ^kM3|^4`,!Ϯ6Ů]<.~+e/R3=mM4׿E{ƫS`kg9Q`24?^M3|^v"QHTb,KK2۳:x(+n<=FEb&g"T·vڅD˛xI$aW"'4px \GY:0eaA"O (us@hnm# el?@(((((((((.o,A8sFzSEPEPEP?ڜ~ Q!՞K3 1RpRFwFz{Dvo"쑶YZ4jH滷+uWv439dBzg4Er7qJD7 {"8 Mcʢ$Eֈ̞3շ] $'@uTW-=#=#Ӱ]Mbk9_ebk9_eX.忱5z?5z,E>߅&e|}pp+I;vĈ (PC5z?5z,C"5ipDSLqфD>9C\EtsQCoZ$$v*''oIj_Mc=k\&C_G&C_Eh[XZ{/GXZ{/Gtu4W-=#y g­֥kh@ Eqh$;G7|T0R\hQEQEQE%QHBEQEQEQEhc\^YKmp1On|ǨZ(s]}[4=ƺz(tP31W' sQq bT:x?KO*+t+9)>,x:Ԛ\څi3_*9<y*UrpAFҴ'DfU<pp8V h^âiK:Zwy:)<_7t;赋#{ⴊxOa7n$8FEσ`ՠTpQ\R8IB6gcukfGH0608㊻oov (HB({P; |x[Kn?2Q;!p5{DL Q{B?:h-osߤSɦ\ۅċd`ss\h&X4ٳJ#K8'os}׭x‘rh]2" fڬ85|"m]ct wu?OJ \`:5Sƚފtt/.)$k;F~5rJU+ڮ}Λ<ٟ3|/31=cޙ/sE Y@~^žzf&obau).I1Y1Cxt .cazd,Jŏ;|r:s{}RWnPկ帚HR-Ò O[ kӗМH]Œ;w3go'#+˻r%^'%I U!a}œZjʚs\M=ֻ32u*2l''6t .}ޛ֞{UiȒ;Cx ,'ed-RF".MGT\OLxǥiZ=)>Jya$<8q5]2[5ݣ׶cc1Vp  :qZgWԥImd1j ʲnUn1ϩ9C:r^ Ӵˋ3Q%_-^<ȋ T1'$m5o|I`GKt/XiFVԸ8NXsȃO]薠GMnK[DI( 'RTVZEQ@Q@Q@ ERQE1Q@Q@Q@Q@Q@Q@Q@Q@UԴ=_OaFAEZ9qmVWHWY⶝n?V$ֻCVj(k]P+O5G#ZZ(_wMC?k:jiƫ9F5Ui}2Ԛ;xW chI 8}xUe$Of>S^}֧-Pf Xeq]/t]NK`M<'$ d2OZӢ((((((((((((((((i8r+m@0-˸F2Gzm;Iƣ ?s $tЉo?n hVڶo-~W=32ɖ{mxp8ݞ`cX4{N{e M*}gH犼]C,7@&t_WZQfϾyk6z5{KlOjD I]R$妼N-:zة&i?HS@ʬC)GzZ< c ooXM).&$d c5EPEPEPEPQE-QLaEPEPEPEPEPEPEPEPEPEPEPEPY~&WXZn|Qm-/YHCkqn$?.xS@@^/_k6zƳ^O¢F l0-WPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP1EQEQ(izѬWSRd B&V6oip_ZUϘ,t' _Z߆5{xzC./n'2cVRG{Q@Q@u6V;iq)A~D7JŦi %DA'>jQEQEQEQEQEQE! ESQEQEQEQEQEQEQEQEQEQEQEbUF墩;!D:Ƅu'ڀ&@TY\jvˏ. nd|“SRo k|[[z*39Fݘ#v{ѽ:,.c|X^(фd`yĒ}io Z75%-IK:,?,գlZZ_]pu{eŵHT{xLq1}+/YmI8ԠɳGl=O 2c3>7T1V$Dr>`=ȭZEQ@Q@Q@Q@Q@Q@Q@Q@ko-ĩ1!y$($w(9IR9Q"QGIEYu[N[s|l%_0&qs;( ( ( ( (FGC@ _DmU))W`{eF{g5}oY_ZA1L( c&uW/?:oiS]i I]q4O2=Ws M3[xoq]?"w=)η=E(_M;~u?ӿ[tuW*H[uf]r̤~`ԚcROՍW ]$ B^2P's(QEQEQEQEQEQE! ESQEQEQEQEQEQEQEQEQEQEW1Gt,zΣ[nh8^P"y>x{kIN\l}ym۷Om5}>Ba5r8u AAl^s{}qc˞HLtTAkwf[}qttȱFt)B62nFF>Q#&uMdGy v!*Fn 9 wt}j+EطF2qLԟgi_"-O4\\ {#&7C] #x-4(v 7柢k˭Dy"ZJ1aIJBnbXًnէaD_eQY~F>c!#\ze8ҀA/$ps׊{ +h1,+ q7>l`c>Ե+=Kkl7D5X.<.]mrq4 spD9ӊ 7j2F݀.A0S$#,$V"oC_.h: 7j(oC_.h: 7j(oC_.h: 7j(oC_.h: 7j(oC_.h: 7j(oC_.h: 7j(oC_.h: 7j(oC_.h:K{=Ksi1@\ $Wwe\Bql(2楦)5l-tY±?otћ倥~CX5[iV%A3[S&q9<J=+sif%$`9PXOhк4>c1 n-Gs<{Z|eMbU/o"XcIKb#cRW%\syok]aXڴ.;_G.Go304C<ϾVUBsQڀ<P׵5)}7U[(t~\%*C n^:d]k_NN4^\8Xۂ.7cqkDg#%,#KC*z>2:6[L̒l@cϵ`> /\\7S#Yo1]5ju?.aӧi\2X9S'_`/Ꮗqo\{ys7z(=}?G4;wt]>7MR8Y,TnQ }kzM%G,l#`6F Oe ﮯ${F+{˄ayn.Fyi!դ5 XSY0X%w d4)xQuo_k?fy&&B.sB q%AnՍBiiuw%sv&cJ/}"4 U+nL|z>1Ϊ(PQEQEQEQEQEQE! ESQEQEQEQEQEQEQEQEQEQEQEy[ ͭԿeե>2>&+Mv*(+Mvj~t&]k}gڤ>aJjfu "\#\@#;w)@]6L7z~|).÷r_iƛjltK6pR"cv8* P=V?o?McO# /bEq}u-ԑҳkr(((((((((((((((((YnbI`9#qu#\h#Ni-z,K1$Bv z_ w>_ whVG-Oÿ-k#FX쑤@.ar9)W=="dFBumAaw)A+ƿ g}ƿ g@Yh[.1#7-AGYkB]^yHF8P02zIעQ@Q@Q@Q@Q@Q@ ERQE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@~0'|+{UyFR=Ψ]T6Ӆ=+S:ƓqiO+jͶQQS.b 7+cqX'XHJ8`x b!A# ZI9R8==;P.qq|A&ڂ,"\lP2U4YmZFncėvIw0E]IN 8+ML`ыJpHv/Ѭ=BeT ݌#xVZMfm=mVܳMC Sl逥~lg+dzViʲȳ5a%e*Ϝ}  |UsdW7fV-Hr( l02k𾢚cHE! !8 u4J&Fi ooV (HB(Ҁ$(((((((((((((((((@>9ӤPQH59 DJrw"saoi}6a[\ƾkNF`ydf~ [Rx^XG%[ Y%0c<Sk.,~nmmY# v!f*d&@]A_E5C$nV@}ܫdc+Now/IB9T-$w;v5n]k2$j:\v GבtZué\_h nR q ,L,l:cs]:Wͦæ[#ʷ%9]°b/드NQQ"sJHIppAVd%}]8jjK='091펦o }jWdZOA{iňܻ 6c< ]+RRWMM ڠc9=A<;U<᩼5gwV6;[H-cVf#$<:((((((J()((((((((((((+fZZōƭa D(NyȮ?oZǙ;c-i>gktq+wA] xKwn?>*J((((((((((((((((((((+WgC3EW$^ :j\^x&[kPrk*,0H#=*ml&14ʠG1mkVv[[&(!Aq `Tx3Ӧ?5"{:k=oIld⿶c*.Zny<vfE>/Нu]k4hY,qږ)bTmkcE>/Нu]kCq~d,{ uY}[$b0acQL3ދ}m>Ny{^+wfXܾS ặXTeu# 8 sUUPr c>l8[[=U``FCGyi騢C ( ( ( ( ( ($($@ EW{8f{aǚLw}]["8Mq@QT,H3z%>FfPANT֢5-Iu ʚ|-4BU z94Cp>ڛݴE$HHgG:Jd3Eq,m]0?B)QEQEdxOmkoqp+)*y;2Yc'Y8K;P:{ mZJ& B/ ~/ELbWI$ۜt`hqn)?bx;]3L\d؈2I8 F[;nc: ӱ72bx;]3XLs<C. G,O˦B?c'f?!k뗚4p$Tc"5~GlףagUK3$c'e?!htZ]bÕX"b.Q'MYIWIwoXL'e?!ko{xtoo΋1 2w g-moΐ#Q|]bZurA" ڬ}SK֭ l0p 20Xv`A_W:Ll2oE CNAEP0((((B(0(((((((((?N0 ^"=b(8Y9@rxxNPI 21@N$qGl`5B?l e}eW~ &%5=f6iz>gse:,VgKy ghN7#^ik@#Vs@g3|BdGπ&N<%CNTq/tO#|WѴH"ŸHaTKAH'5SV"oK=-RG vd' S͚8 :'Q DŽi?>/*qItK @Me`s= ynW>`Ajo>YtH-<-18Ҡ_4G'Db9 6[7V,MDKڪS$Jxjyn?-5)kkfchLJ,`)+u DŽi?>/*N<%CNTsּ">7G{JX-Ɵs4*ӻ-c(ãS~ xú\vZ]촉"I.%2F8 Xv K DŽi?>/*N<%CNT4xz#TK]?StMIҒ7X⩻sc@:υG7J d!bgӀ[ rAS DŽi?>/*N<%CNTX.=3ِ}ѬݭO/o7{SqH[~lzOlu?<<؏O#Zd\HQQ֟˫ Chu D}0 =ކS=s=j9렢G?C~lGOeQ@#ڧzz??s?͗#AEsj9{T\6_]=ߛ/GS=s=tP?C~lGOeQ@#ڧzz5M2?k6FTu hy]zgt5b-EnC!O?tw` '[F4[F!H\7SUevo>EyvKeh7z,Sx~.kkpJ~cFxˤ|:>#]X.nYZKgZ<^^Ι41E9fby{I],@OKhB.@oF°)'(uxz](r M9lv'_r |;v~l (>ڿkf75?YZJ:xc@W|vuX[э8![5yrO=1޽֘G##T'bhNG *hc_\$bKx  w$8ȡ*YMekAi8"kxQ#&uk6w:5rŭYY*ʙ"Jlf^%r7@tˍrN=Q^H!B n7/ipq;m/O h_̊TDlr$iWPCqem4W$eP99h.oZѸf\p8s6N ORO:\y ֩k7Al `yml-SmQpaҠt2B~cf-olgџ\J[Eo^ 놓uM#@#S20x;S)a83˷{O[Gu>w`L7S5j;[k5U6,0 1L.yq6'6]Ϳ?sNSe ?IČZ,d#@i6[xwC44Vq*x*HqR^N-cv qlyoAҕsu]{+#&:,OD3uB΄C뚶g :΢iQOzfݤ)lEP }3]ZH:\&VHc{S3Eg(72rvrx> M{]7JF]KIyfxKJ2Av8+x[k5ֽ{5֑s* npv@r8AdH DWe9R@@ 5f[;YkX$#5vk<֑yw1$P Pq0((((((((((((((((((((mY!(2&ON7G&m/ LMYcX=>TZN͛MݩH#ֵ7K[:{I< 9qK71Cu=-mno9g@0x"Jܥqgdhc+2@A3AQEQEQEQEQEQEQEQE! ESQEQEQEQEQEQEQEQEQEQEQEQEW 㿈>=Sԍ-q56!pJOϭwU_|D׭!{dɴrviz:^!H[#Kv ev<SmvUY oJ((((((((((((((((((((+Eno5ᢲP6B=gcϭk\][ { G \]:?xUJ2G h(((((((J()(((((((((k45J A!FHI$xƷ7^KMtW'OT,>7zmZ~Ykb%t4y~4΁&(»0g@LGO )kroe]*XIPH}!uR; >X.ʾ_?3oIMmdmSò"t}"b` |(c>E%C"@!LgڑSe*">h-fSI54kY5($R~f_z3/p #8 O )hiA3M[>ݫjvq&wޙ{ FsGjѢ»0g@LGO )kr,f [Pfh:QlKh k6ڭđ;E4$E' ?A%8">TC/5 *QXGm[tmJBLz%d\eX mPEPEPEPEPQE-QLaEPEPEPEPEPEPEPEPEP9*GYֵd??h txXcRg{H 6l#M5U^=퟊"-7_j判`P2z 95jo$ETi)V5 =2x$ 1X+#\46l ՛g}+1b Aiɂpd 21RV4ʔJ۶BXW-ɗCm'vێqV+[!YoۘV<3Pi>-嶖[u/7{X~s#ۻ;]k-svcZK6l71-(Q{ձ XOw$1fKwU_DW{A=0t _CfHե7-?`J =YtVq Ei}hX619ޯt}M6ּE>iVm/o&9~S?d$u  ino߷ZyXe\JmTjOiw yI1#F{t>,1ѢUkX.bY"q)||6[$uSLF\&\]V?6a.3=>_qY|A&'bmv@c"/## tEa>VKys URA?Ym5;{"î@(oUѿ ?Uѿ ?QQ\+ЫG+Ы@%¾o 7G¾o 7GQ\+ЫG+Ы@%¾o 7G¾o 7GQ\+ЫG+Ы@%¾o 7G¾o 7Gvz>-MX$X($ @$jaeqso!{hRybfQ8E9$p9'9t-.= ] dkhP"l|:;nx%xVJ(4GARvi>f]N y!/:X+CkG}?jۿyoo8}:],/VGt tgBp2O8~ |o3yuqpIB۴wێ@ t?Ng6Is7O/۳~A~&3Y0XUPdB7>"/]wRk滝eZS.< 3+n# LJ-izw[,I[܂B OɒIq]rږŊë\"ʇb*}oChCT}x??tG!i@5%t>D4ºC8( Eߋ٠ӯB_!`WI 8ar*׍imRFonmle#8k5>xׂݬ̛P&5<2`ncTc=}wh^5b5]77W*d sO=b8!444*;+ J񖍬Mm'i.,9g8.Ƒ%ӭ+g &3Dji+2rW~qP;֎,tKŭêI4 3x OTRh6ǃRD _N5;슙5s瑉C76XL 8gd RK/ww[ϴ8`&F_&;[Yz?%%eis'3Z(aEPEPEPQE-QLaEPEPEPEPEPEPEPEPEPEPEPEP^ǒqYxoKhH1c_bYwzp-]~URBgBe"lj60:x'~lj_g*8bz+GYZiw2 Lwr#p0JUF3]UQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQExsFJ# CvEQEQEQEQEQEQEQEQE! ESQEQEQEQEQEQEQEQEQEQEQEQEW5c=iU3^lueLPMEPEPEPEPEPEPEPEPEPE>nGoZ3ǨY=nF,QW*%IȠPh淙C,m]OBqSW̾֟[~+]\XŃ̬ 6FsVԾ(׬}HGl!YW3@}h)KAL'י:/KvKKdK=F5Ar2NI*dI%4khb,If2={PW崷SZj\z–եIƲݞˋXɨXj,RtON@gB]suag#@isKF~^Fti;y Ff1T;qwPjYʷrhySj=vu]mGPVsBn?*?/j t;PkGKPa&1=uȮ,[{Bo*nSR^k:x_ -o#K&a|fHp qfkݾuI.k"km { eT{IӦof G#H[@11 AT]4Mqk 0qW %D/j{Ky $\iE{jpk oKEy $ʌͻ{x\߷< z]햵%իŤbno]Cq`&8t8=p)$Ww|ǯ5^?M}xZ9rfZ0-ykk+y pD$rUlaŲiAWJ&A A0oo(H& Generation Pattern

Generation Pattern

Definition

A generation pattern is a solution to a recurrent generation problem. The objective is to define families of assets (code, frameworks, tools, etc.). Generation variations depend both on the values of the pattern parameters and the ability of the pattern to manage flexibility during the generation process. The intent is i) to encapsulate internal representation, architectural and implementation decisions, and ii) tailor a pattern for meeting specific needs, either with simple or complex variations, in order to avoid writing many times the same solution.

Motivation

The motivation is to produce assets with systematism and the ability to tailor this generation.

Systematism is managed with:

  1. Pattern methods that contain templates, typically text templates.
  2. A pattern runner that uses a genpattern generation model, which specifies how to transform a pattern into a final form and how to execute it.

Tailoring is managed by:

  1. Pattern inheritance: a common pattern defines a common generation specialized by derived patterns.
  2. Pattern configuration fixed by parameter values, condition to apply a pattern and a context (set of keys / values).

Generation Pattern GLobal View

Figure 1. Generation Pattern GLobal View

Structure

Pattern library. Patterns are organized in pattern libraries. A pattern library allows both classifying and defining pattern execution blocks.


Pattern. A pattern contains an ordered set of parameters, a condition, an ordered set of methods. A pattern can inherit from another pattern (simple inheritance) and can be connected to other patterns.

Pattern Parameter. A pattern contains a set of parameters, possibly empty. A parameter has a name and a value. A value references a model element of a metamodel (e.g., Eclipse/ECore model, or a domain model). Pattern parameters can reference model elements from different metamodels, for instance in order to work simultaneously on different perspectives. Pattern parameters are defined at the M2 level, while they work at the M1 level during the pattern execution.

Pattern parameters have two usages: i) a filtering function for selecting only model elements from a input model (at M1 level) which verifies the pattern parameter value, i.e. a type of model element (at M2 level); ii) a function of parameter declaration for pattern methods.

The set of pattern parameters defines a Cartesian product [P1 x P2 x ... x Pn]. At translation time, pattern methods are applied to each combination of parameters. (The loop on all parameters is driven by the declaration of the parameter order.) A pattern without parameter calls the pattern methods just one time.


Condition. A condition corresponds to a pre-condition for applying a pattern. The declaration of the pattern parameters defines a first filter: over a model (at the M1 level), just the model elements matching the parameter types are collected. On this Cartesian product, a condition is applied to only accept model elements. A condition may imply deep analysis over the model (e.g., with associations, inheritance, properties, statistics).


Context. It is a declaration of key/value couples, where the value can be a model element reference or a constant.


Method. A method contains a description that conforms to a language (e.g., Jet). The most popular type of description is textual but it could be action semantics or an activity graph. A method is expressed with a template format, recognized by the pattern translator. A method can overload a method of a super-pattern. A sequence of method references defines the order to apply methods at execution: methods of the current pattern, from a super-pattern or even from another pattern.


Pattern Inheritance. Pattern inheritance serves to inherit of parameter definition, methods, connections, and context from super-patterns. With pattern inheritance, the number of parameters of a pattern is equal at least to that of its super-pattern.

A super-pattern can be defined in another a pattern library than the current pattern's library, or in a library from a different Factory Component.


Pattern Connection. A pattern connection corresponds to a named pattern association. A pattern connection serves to reuse patterns. Connected patterns can be in the same pattern library or not.


Process of translation and execution

Patterns are edited at first (creation, update, deletion). Then, they are translated into a target form and executed.

Translation. Generation is either applied on a pattern library or on a pattern. Method contents are translated from a source to target language (e.g., a set of textual methods into assembled Jet sheets) understandable by an engine (e.g., the Jet engine). When needed, the translation is followed by a compilation phase.


Execution. During this step, the result of the translation step is executed by an engine (e.g., the Jet model-to-text engine), and corresponds normally to another translation phase (e.g., generation of Java code from Java template methods). The result of this execution is reported by a reporter (report Class).


Translation and Execution of Pattern

Figure 3. Translation and Execution of Pattern

Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/generationPattern/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/generationPattern/images/generationPatternGlobalView.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 41352 Text-content-md5: 3c3509e1c0551b36d7cdad09b0aeea87 Text-content-sha1: 3a59f205813c61ae0f17b1e0d90a819c0709b6f7 Content-length: 41411 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222e" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( (_^[YXy7G>c#x,#s@Η:gh2q:HW älU,|1iѕK.tMY[I+Mlc1ОHMiI%,1g,Vsp}h4ݼ7;@%͏XFi_75eixsE*kJhĐJz20`\NS@Ѽy?g$q^;~ s ޻1vxǮk:TTjK$', vdvW%_0?MEӰ0AC`,G[Er_Esi:5cȒGpUY6fPq"TNZ-5;B T 0Ўt#rŠ((((((((((((((((((((((((((((((((((c¿Hs,:ub@^?Vu_>ǡWڬmaicʃݛ =y<==m.,/u--mT&>s~VFkӦc=$@rp{./BX.&_c#$w "|D,ot\U950F $9$;=֮][Ip]$l! $IpR:? x~->k--,`ۭb7aЕ j қH:jO(!1䓜w;\P)qgvڜ{6̩,;w|mq|G7zn[JH#M6eV{D Ѵ泷}ۛT1rz'9B:ȢD XgzsB,tWQöG*FvX g,xoW"tKu]^Km8 R*K QҴ^m=>p+"dOj)-O]>}&[%s"=ÒI`$s}iV-|]ǭ_ImZL!D ySH{;M.jMDEE[gHUڀp庯9{1i"[9Fb$]-6(д{.l-\4VȦ`zH.rjZΑĚ%g}J68T۽v+d]no(u Crzs,!s8BmyMOj#rD@% ǢtI&Z =B gѭKC~G,~FC\ǫZQo@Ζ߄`m 98I-[O7 ?1@EQEQEQEQEQEQEQEQEG4FdXug`~&$SĒz`XW;ĺNpcKwϦI*/NSuy.YOьaZxNv.Bsl>P^)<ˢ[,:TW&.n1B2Ť<8 tb}Vtii3m˸5GKqaÇPÐN2py|VA՛Q[%?"BL1Ž~ ~|ppxz>XZY\"Hsɴrq}M1¸5 sbj~a#乕ѾXƺjŠ((((((((((((((((((((((((((((((((((eax bUCrQ@ecn4}V1f-m+xw5Edr[;ÿ?+xw5E?w>3GVkߌ=̶ԯ?ѭ0~eb>g\d]oO K et&!A)[;ÿ?>cx^LXfk\hXp;WQp9O;dr[;ÿ?RPO3 *?ڙuTQp2t=`nfww>7& BZ(QECqxUu ?#Xw,Z_ b7k~$@_+@{ZQ(~/.?+\}֖,NZ(it۰>lmZO4kceџ{UV%'#8wxy#]?Ih@#&RrUw.\O'n<87.F2A^AOk+y yt_ S`rXw hGkREw{}} `lX%pp@^sTcNi-iڝ}n.'[V6+ @(, խ-MVwwEo"Arλ\nNs՛6)_gHL4RF(PGb+܁Q\i:Gl.ITi ҃v7vzmg[F&K|]) 1ӐsU?Oӯ!Lx)`NvA1ԅg}Ʀ:5h@d- AVV%C`UVo=$%Ai.FVF1޹GWڭMZuk7Q{wFccm Pas@ؼi<4[ROH4$ {3MvFui+w=arEVЯb"BwNOܕ?pI#nw'|̖$|`O]b;h"1c@-PY{I_][&b{p03sZtP\K1œX!:8H],b2UI9U$h⺺([;ÿ?.+#[;ÿ?.G);l?5kMbO-5YԎS`X=3^@YVG$Pġ#*%P0(((((((((((((((((((((((((((((((((((((oľߌ. ^Ф@ʊ*-`B=KEE?У0h@Q}(L?PTb@FITQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE[Puwq *(' q dh};.&)mh}ΩRssY˨h:%DDR}kGK+䶶;}NES(ͷٲ\|g^:`E6I TS4bZ{Y9 R+Ѽn%YS{jgI#[3ĭJdN3 ECY;.(4I (O@EQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@SUԭ}&S,-!yع;Tp? Ó&KkS C f}zc4\^֚VQ2T%8,~;Ԉ~,NyZS6׊f/\ɭ[c}o+'N( NC%]Oþ%0a{]$|yVpEz.r Wzۤ1BIT8A85M~ ZKiPZMymllF@iw46ev[p s@};ƱL/sm%O-HHp˅-9M{zuQ@Q@Q@Q@Q@Q@x'nMi ;mKCb;z| S.#Mz|CqCb 8dĠ |w@LIcGV(X)ӌטzk]m5AJ෶Y@Frn1}]Ni~سQY@o`<U@uwme+xAU2JB$=ȩǗ\mZǫ:Z>y:Z[/ʢ8 RSOH֯r {ka([nVP>lԜu9$(4W]^Oԑ,+~k\qi˂Ny%G|C=癦kv@f="X +[_h'M7%PAEsiA5t<yuƀ:jwY5Cnn%_1$(Rpx-8l_kʾ=?XM(C [wC c{B7Gt=LD?k jh>YwT0_d.z`p1:׭_SHhBc|&C?-L h.|^t4Aa?gh̋pA=;Z>] }tOB|'B,lfiZݵ±2mLA$@2JMQaqu IlmK_rOzu=MB|'B?  kc}-t[Xۋyʱ  VwŇTԴ" .R$&;X],*hwA   h'+h.GZIop! ^7o/~lg'T}SrhMZ$Âp8ۏzOV]PX۷|CY3bjm$)jXZ\,m 9XL@Uv&Jֿ9_ ]PƷ:z(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP9I׆oֺ:<$_ k]QEQEQEQEQEQEQEQEQEQEQEQEVk ඝ`D*b@Oflͧ5Դ| BάdÖ%ᐪ8k.MGsuj0ͬKs܋OFbVTO%^L%q-MGOԬ>k-"Ao%+6NsW_Er=g}]֝$PΌF〡j'"7Y,tPI {d?LWS$O o$s* ЃӴ+x{Mgn-b-Z|u.w բH6ԕ}$pJ-/\_鏨 "BVg &BAW Q@N[_HNd!M+;A0A]hwY[[kڭ@d&'y !6g'=EscHM|S},ҙ4gRW(%.C72? Vvq]$huGSFՀ#ү1{94(oMQ me8e1fGoqݴW0HC* #uFAIEPEPEPE0Kw +lf1V9?@בZInZ8^xL\< z45kQ[?G#Zz.dzd$Q0'6l 1 b[ڬw iUӒ۟yxj?8kkQ[?EլVež縊kT y^} Y>H&: #Z"!ne2M1sÜ(ŒE#V(PQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQExI׆oֺ:<$_ k]QEQEQEQEQEQEQEQEQEQEQEQEQEQE0FEs^/c&?Nonl1XV?.o ˭&&h!D%Q@RI=ji%ڵDݒ9訣%U±[Z+g`pxO-ԵrZwX|/<k'v0tGsȀs/\nzEd-4T/%fc1Ē{Eʬ / }jEV  D 5lBOx0K4F8F`܀zJx]FSjgaj.gT!-q{wy։i ͮssk'Y].O"@e_, mz&8-vFҖK @cr 2A9P2ƬΡ~Wk-ŷ:B#B>8^I=15Hoܖ;tt?p6Al-ָ:|Cw61N^Bz8 Q< u#2A חjĶ06Z<@d]ɁG+uQֺG1L(C ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ({_[h(jW(=;Hd*.İU\p  5u'?A$2 `cR// "(Z// "(]m// "(^_EiQ`:+^_EiQ3tZ6-ZG\"/ O"E_E /E_EC?-?,G[Er_C?-??ZX.Z/032uW%5mY-fS8PX7rGս:՞wm9/# 5J4|'Ƞn6gouX5Ev(T$uhzZ R7\nN  2 ntmg_i ^Ũdum?6 >^oϦ^jܿﯮe\bO9<1o:ZH;#E☣C+mg8+]5cxV]yg}7\ZhWQWU#;!c|$c޽x"H$wA(H {pHhx#>4wo6WiGܒ6%[؊M#G{_WOSsޑEv䶸*<(Ln!=<\׫TIw.ŹvH$PH=Jxv+k F kRQaKZF߻ 1 H:WG<:0ʲ C2pn7<'7ZϦ_=ĶSmpc4%8$nO8, 9tyxP=F #I[kV-%6T[ G9  6ɫMu5h h`Yq LE`ۆpIhk0@Mqm=qmsld@ )VH"$Tww.jSZ}9XSxpPFUy*3j֚k[5At,0\ʑF !dGyrAA&g-s-[V1ʇ*v!'o,"]b[鯢,AhQHP @0GC<NmxWO-+K9x<20h2Gdd{k9$ӥV;-R+xܒx85'[FX5 Am[-#1$(d8l Ӻ?/Q&}guhedVYPp8㓐O4 BMEyeb<1"yo ѨTFwH.|awGpr5 WsH=;1GF1ҟqsj$k(ck vg=1SNҴش/>_̲8 = 4ojw jwimk DD2TV]r[玬?뻱h՗K*\|gHw=[GI;o-/c*&I$i`T 皆oӺk7O}l3}sjCЏw1f[L.#H,x]ιgإJWCs 2kt"Ĭ%w:$bmEݧ>˝Mu6' ]<ҏ Zկ>ˍMu6s|A_'Qk_ 0(^V1?CֺKco *O&j) `[~dho `[~dho `[~djKxnh55yu5*(Wo4;m=e-.$*pU V!rpX8ͷ񎵮a..Zg+YFϑ~n[ռ3g_|gpд F+23; >{weYi_`Z .m6iɥ㐀XB7h WCuo̰v2r#"B'$s`v/OΖ6H vfTdKmdAo'eyMxz7)gx )=ssL)̪}2p3g00Oźxm/3 Ӑ|-AU25Q@, U̟M|-AU25Q@, U̟M|-AU25Q@, U̟M|-AU25Q@, U̟Ms$ZxQU`eMyqsֽ6j_6A-喥ms6Y+$V@2?tF2)>6Vuǚ Ayq [ǺH2ٓAAmsٴZ]+K2?ŶI'={z؟C3Zvhimٟ/ayϝӏמhi[Ewk $hH?wJ4}c[#zU[n`Y$cNc 2&p~l~IkjuiG5, s9ݑp@CkQ\[_["c۔ވkcIrٮ4dr'Uᑇu`ufݩh}mO!ء1>{e/]%hw j*COrs qMeej k|*)8;9۸n*}7Ri:m'&ǘM*3ʱL7K񥮩wdjZj%ŅѠ-*˽W AxT:qMV=Ry .JW$oڧ%4MAu%Ηk~Fl}W'V,ѱG #<xH'լ۔?֤H'fiI,^$SUCH YI.TZ2k I>4VDZg SCt?Mt|Cu].Y扱$e `<7<vwo9WD,"k%|_t<)imG!b@I] A"=K^0|_fntMB+y}#y#=8&xV ڥzR"A ְ g@m:ͨjr2>~xS@zhOcnOE$iiȱŨ N?dz8涯mͣ9O]z##kÚiNwD]ZG b62˴nۍݱL[,{4*r#6-B{C{m,<)&V}9ǽp:& gS .ouvDB$ &w9zqm?<-&x1cdX:+:1c:tݎ{u3cEfM'ιʂ㎤TV)潲o[}(n۸& F[ :W%* [mn4%{$so" ù whwZD4)gtM$ce/€JdvY.a;GcL0bb$ r*fK{t Ҫ9'H^{bjzZ-m)3$;Mdr2FFp ^j4dLPmZKheb%28)H*FA jӬ.ЕUhN H\} rfVWZo+؞-o8)|_ ('lnuTQE"Š((((((((((((((((((((y:u0psI)cִuY4;7cgS2^״{ac-R;i8ʚ"$MgOi՞5B*9P;Ҁ3$_ k]dq촟F"Zy15 d=8dr8)cE3ps;[}(^Ͽt*fu[8T ,F [sHӮ,mn.1=#ɓP( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( t~<}a dҺjt>!zط8QEQEV.};U[KgP.up[TP05AVoӢ>re'1V曪XkIyCun !p=#*lmF<# w{3Ci&k8IJř IGZhm7phi0_Ǧ9$D'z0J6F|0DVxJbk;WKi= -[z8 kh(((((((((((((((((8c7=tY |DϮ`-t4QEQEQEs#5+,tS=ݲJ3GXda[p`[ij~0nI!L֣g;%].Տ[c V[MKQkOc !^rB;V:uţB,-gZ;Ea†l)* ^Mj4lZ{zF6O)Bn8 =۝*.m O\8oKHԆS1׆l/-X&iw u)YJ4r"FѲJ0>X]OJ .tkK!YA^(fb\Rp9 Ap#+Zk2\jvWnlb< .A(HuK+)"3upo\n#8 τja\_ďҴ j>1 ql .1?qϮ3ujE-ԄbirZF @%9;I%F |*MgpI={ ߪVm`lrB?h'z&}i*/ſ?M/%VToj?0Z[>wlR3a]sD4Gh&tMtȚY*77WGuMU͞mt Q0r=Ev3o4OKTy~-i*.~!خAm.:H%H >q[V,nԑ ZdxJFUp 7lѠ]' <sD4IIt۽CωxѺ6|GxRՠ Uv.uq总%[AUA&hxX\E{$xMN3$Ng8W#~1$ȍѕ?#E๥'Ie-ݎK1I&)U=OT`Nk._YtׯgtHV.#9^23(+xNԐ~n!F2_f9ٝE&WMք~7eJ9[_Ѵ;hnKq,V Dl.@%p$:vc%yݴvX\:wsْ_ęegǸEHTQP&X:އѥ<sD4SK~&|)=FL rDcM?Eޢ*y\Gc4ļ*^98+<sD4Gh& Gz&}uiu5ϙiMGnHUpziuo%ܖ@Oog,n$sz` Ѡ]y~-i*/ſ?M/%TzcoOqpR-$z[/(v7xZĺv}^7oA.3pq@]h&[AUEuK9dfdhrciJ RNv]?\%3)w)_|Qap˫fmh7n۟0fϻYO|F4GT>m%m!f%_wlT7dw\_g3>gNvV6uKfeu$Mv̌*w0q`Pw>|Es%"g0L{bA9!NX51a͌SLP[\X\XE8Q.70e::vtqtwr,Sv%J$t PQs7wC p{9KŞ#eZ=M,Ms4'dv-x^ Us&Qay-5!!U`76x3N.H>[ghce,8MS. %LMd b2< ڥk:ɯa2Cl2^r{W"c+)m봓c'\F&SGc7[yGw@\(!$E`p0u4a˕Y-uWc<,ͷaFpʢqrINӤvYK_#x OYj3Om Ys @#ԝ'~$1M64|tܠEA+_'?FIkd#O3M,8P xx&e<}#z8+WP4mrV,Q ׶Qȫ2JKJ fP,Լ=@PMug48]̅FOMgV }?#G%@ൿƙ6f^XtkHX)dC,GX9؝1Uufj6:I,yJ |#8ksZG%@ൿƍyj[ I+3m}{`26qs^׼;}jZ嬖ŧN֒I ۔dgq͏K"k' Rq$smǮ94-jqiߴM% M_yadn]>lmEs!ӵ7ִm_KK:7sTd6c5<=m'g5?12lWvy{~;-wTP.uKϴɩj.K!N;Ry^3H9vy!,=q_@Q@K׃nWS5ۖ8/ge!Ks׉3̝s`[?jB|#j0j-JZq HʢHdnw.-+ЙgX[HM>S Gy3pATln;^و3L˧­&6v$0Wt5==2dDGd<1wwgc帊qlFEFxx5$Z9B "$D,-&B@\sGſпq7"h_8h h&Z?|[@M -s3  Hn^xաh_8hg4/Mȴ!%,!s3;S|zWuٷ-<;VYyj 9zj oE.ttW9h_8ho4/MȴΎ?|[@M ->-&\ oEGſпq7"GGEs>-&B@\sGşпq7"h_8h R1t.ks ǟm+"=U(+aEPEPEPEPEPEPEPEPEPEPEPEP\<|OkF_񮚱M8T>j3J͌}Zۢ(((((((((((((((]n>?ʺ:|eG熳oϧ]5QEQEQEs<3xV>'[#A[L%$P،:o(rʌ=AR UsyNdO@QEQEQEQEQEX`21O2Y;y$E;Iw?\?/& OC1B144( й _Mxc#bkn;.iG!sHۢ+izmm pFs1V( ( ( ( &c@acAZi9LW\MԿ i(B{}^D7w^cQDF8TERHO./sy(Βy/@}pqg_vuޛOw_%[;GF@Džm gk&ⵋZo4 zЈIE73ZkEtA=}*߉mS⽆27{%t *@lHږk fhHJyw`~P3МV|5ysqt^60,EZP1+ =hSѮ-.*wm.X4hVLz,汒;U 7۱w79 Y'>kSXEh@%VuX,@g8o=rJ_:L;-UixFp#<`em Ym* RK*)c q 7&,p [ZnTK@MGr`9q+]v5].xn62ɐ+;V&Ѿ5/l{(Db- *wLeh &Ē<ČHyjյսw6[7G,.zDž#mC%,hZ#ÑyO :eJɫ]O by7)<qLCe9{T#{_%PHy̑ FxA~]sLK{P`UF$kw GcrokiZ]މȿlHKU'-Wu;t46k*[y$e+z'<]>=uc$@f5 C:BY)aV;5M>u Hrv'9 C@AT.<[á_0wV.#p672Mg>u vkɫJZiHă4u6לYj^xz[UkUgq(a8U8$2{ucmu+b9cExU#NXrKmoIU?hu'y =}+4Ko,l_j*.jcWfv3`1zkړj]'oĆWZyglb6&8Y~$]=l`d17<0RvYӬw{ 6(-!uZx+[(] ږU82 `sT Mxgc%!nRFQ`B84Kէc-"_.p첱<*qZjdcjpVRi kF@Kc5\x>MNNJ c"w #3=E_]뉢NYܶ#&HQ+f- (i'ҵKo-çʱĒn7PjV׬XiOi4WjWF)W@DrHNFA#Zb",k٫yD*[Í[u4\ii6GR6!c3l8P (1ހ6O??x{㴆tW3=s<;@5Geέsk#9ڼxFZܖRM<2)BbPTA ؠ[L${2{]]K궢yCfBơÑ&,-ſounּl$>U`g ][Nc:D@K0W w HXoM/$7I:\GsMu;,/ ͥ;kzVmv y 2Y~OW I.Uvm${?>e'sJ1pZ!.[zSLVj_#?79.A#TP k"m;pAn.DH{8R((( {U]ږ0qbpqu\}i_Aim[JNHHn-ặ$ PȡԌAXP'DK1:ơf'O,Rpx0|[>F6ii%fn9$'ڪFbKXV69*C`ldQG) 1q"DAP8S((((((((((('5276G#J״zW[mW?j \Ն,CΏ9_DaPQ@Q@Q@u?^Mf3D_6E-KͷՂVc؈hpac QEQEQEQEQEQEQEQEQEQEQEQEQEQEVho(ZM`0$)#!g8?95\Yu /w*9N1Ae24u /..Trxc~dh_']}\9Qu ' Y̟MuQq'^ߙ??:_YZkVvq\I2KOJ..S Y̟Mxc~dkcvek,]7OϱȄ8TEgkp9N1Ad24u /.! ׆?,O&N1Ad255DŽ'PI?w)cs+:|z9?ʼn2p~B6u4\9NC Y̟Mc~dk?: ׆?,O&(r'^ߙ??:_E*9N1Ae24u '.>SMHnP$GaA r=QE!QEQEeyD1(cO|TPvh `͙f̓y+J 9ѣzR@y̓B q8E4F"d %m+$Js!Th 5a$X!R;hKSd`2j->K֭l%cqЀzx#׃W|2~.]eꯏ1nd={P#b֝\mɥkVzFu0Ivw\rz (((((+n>'֌ߤ5W37Ѯ?I騢(((((((((((((+kn:FS2\3w,~urxT-u#IxExJ0`z;p hd9,*$9)dR-Q6oGwѥҀ:*¾~jMcsg[M^u5,a228mp @/j8.4Ƙ>E6 %0)\Rys"*2٦cDf۰93ԁw L`If$+ Bpqk6Z5%:wCIKF?q< I [ۑ_B[d"V vX.;z Ս?Z/E9g2MUsҀ:M/^rakVdʐ)+(GBsdVq>𾭥k\ll9D֖7 ùRȡ 3:QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE kY>pGwAC2\J~h;HOC#Y I&!ZŜ1LY qͯV+5mmOWlԞ8U:((dG}t((((((((((((((((((((((((((((((((((((ɪŠ]>R0I d[$p *e-7VI P@xh$N;I=Cz%啅6VV[qe`l?0ey7X9%,DrHa w2e]8%WI&-"aF{!tC9Xb&vvW\I5"b"FUۃYx/0YOgL \1\rq1@?RR<ˋ{UX'VBp^a] TӴ&Ziۂ[ˉպ(8$#^k CNmV.cga`,|'et;1`C6ێ:qxTQEQEQEQEQEQEAygmYMgy Om2)UW9cqBDk+FSǵ=?>~awxOR^k1a>|)vq:#dm4Ϊ\PN7'Wh:rZ\G+e7BA|dq@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@^YZ6r^qm($ReaA5=k‹7td_Mp )@; ]eCIִnѮtr. N:#WVSM qT?,܏*y ={Ocnֹ.3{9y Y~a]pU*kEa'ku{Ў@s:Ǐ4޶DtsCA4k$R)GF `=+?"ßeݲK7%_eC=ꦀ>Ϣ<# [Om Ǚ!bOJ۠((((((((((((((((((((((((((((( =_FiuږPH`$ $XN*jR5EDo_9qwyzH~~6(53Zi&5LBFTscv&jR5ھ/{FԟV -IѾY4UH l0I;yA &\jV yIgUR |C֋ٟoIjR5Ӯm`ӯ)axD߻Mb]cg4oh:}ԭȅneb\0 QFv3W/h: 7jOiPrA Pȫ`G`ALӼK"kWIU| Iddھ/{FԟG^ѿu'#V6 o"D.˱ 8 sQWMC lijȣBn 3pxAEoI[PڮsxoG&d䫹`pFA_KalCj \'gF8\8pJԬ.Bldc3KWHt o> G Uw"$ 7j.@"3j|bf)]\H_QEs^7wHU4ಙшo)2G#r+.{n"cHjZ<}a 0@' "yֆ8-HDqTP0@8V BB&7(XO%;NfT)x'8M "y?3_|E5Fpq,13_|E4f.j5ځL 6^c̰Jy{=+{ktEE ɨx[[76yR}IR7].h6t/̶"IlIw @$5KggvJ-kbI #h#=}+Cks=\] л/񭭬{ʂu}hs "y?3_|E5. ?Iݽke5R1`2}E];RuLOQaӸh\] л/񭭬@Rzhs "y?3_|E5}jrIk'$B‹1 л/G}1e5 mKK0D∱ (F{VӜ`QWKoq K RHPF z;Q`4(s?#f0{rqm.(Kwr:yђY[o7Z Pm.v jQ@dYgؙ_3@J?1Q cӿ.s7uq!yee4[ zwoWZfɨry*G'<^g:3VDZ-9t9^6$!hܒm'<9}(?1Pg=cD}*{.M^+|<@+yq $Xͤ4b+`[VY021 cӿǧ@].G۳^/Sg]i> MjNc#g'[xG=; ?> zw^t׍Xh+>MffޒLl#hdK^iTҢ_E,UDr&o20Nq&{=+oǧG'N.km=.]Wv6Skʻ3oϒ~l,.M G#?Q^wsx  @k%z3E[b&VRr&>n5oƮ+GV(bA$ס}~a4}~`4;NCPSPI:b}F21Ɍ|gqX53oN,RhE&o-3yg 0+m?0>o?0sm|7-:o ;Vh,'+n9-g$r@b̞ mpqV=LKoN^R\i9TW G)$Ӿo?0>m?0,;m&Ţi׶Tb[`L>$Ihn̰eXOӬ(-2JDI'$Ƥ]Wk?U&{wKr$,h9b!Ԑ2igfGtՉM6LQ/iUU$Fwm}Š(((((YI`U溪W]7ul$=DB}]|{:@oߦ{KH(P]LrO{[{VPkGQҾHmk v%^EQ7bJL(8'bJV ]M Դ-4lHps@U5fN7nCl’f 7k B;Y"r=A( 1,Gbw?_Eu袋+G"ZgQE??r?G]C-z(9kş#C|Y=QpEuWP_,(k>h?Qhj=VrbI: EEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/generationPattern/images/generationPatternProductionExecution.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 67642 Text-content-md5: d0c6711a8bf8658b397831beebf80cf0 Text-content-sha1: 035670672bbd8905f5bcc598ac0a1156a70988ed Content-length: 67701 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (8-WQ{go}=a/6c`8(. m܀9ޜzOծ.u _>,_OGO){y]ˆ]W]kMk;G#Zo/]ƴT>P.V닂qUB0lT1t1giơ%$q^nmZA0_ݻzkMk;G#Zo/]ڭcW{ XY41h_ 񝽪h❯粏wBgp9iԿmwhkMk;YPb\I#91WlMbYK;YZ''aAxk7ڗ iԿmwiqoZiq^G$ؖ&8B0V9%=1X3jhpG5Ku݈Y""u$#nK`o7ڗ iԿmwj6ɦ[\]sFX(GQU*MU!6Rjs^\]-2Ҳ8+w!A l5{R7ڗ ROe}I7*1TۆEv Nx$9ڔ YYt ks$&# ~Bw&Kqb5֛Kv~.>y'O? \ԯb;/;{v̈́ޤgvqg7ڗ iԿmwk+Hׯڢ_P<3+,-ZRX'j9#ig#i,G8C .<Fj_6㴿aєhhr;8e#GKH5֣6.ijBVUu 66AtOtVoizcowOჵVu$򮞀 ( ( ( ( ( (oM ",Q^eiivzf|5DtH-#(pTn;rO8#*{AC5w{/c1BF/7&=O~xblcɶ.kpE 8xnIo>rM:a$np2jExxG[u JW:rܵ.H`2C , K s] v?Y]jW2cǺΕGU 2.  ;%(?{j72A.5k{rmg 1 F<@9=˫kJbsg@ @TQEQEQEQEQEQEQEQEQEnmJF9u 9s9lsT3rB9wqS.ϯpAed6H|rƻgp ^@4֛Kvյ94gɂ&\gff…RxOYյ%k[eH| iI|XmmAnIiԿmwhkMk;ZȻWs69'O#Zo/]ڵ翞F[w![I;1!bH%ppH+/]}?@EPEPEPEPEPEPEPEPEPEPEP(4RQE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@m_=֟v"c+MR%h}91}ޫuK=&lpd/li9/j{n el*psnS;f6504ޡ%h/J2SaP6m #<&Y%U3;FVG 敠oũ$b]1~n-k/!./-, ;#h*>^u-wٌ_ٰtzӍՅAr Iqt%D7rp њ++4{KXms2I#"8;|kO^\Z$- Dfw*ѕ:ðvX\V4qnٸonThuWT4;hb~β3P)Up 3J|E(i<' ;^Դ\]{qc{nF%ՔUOL;,[yc E^jVLdV*-`HeQ46K,HۛY rOޫt;M]6le*bIlu]gQGҡ شURbin"rT^i5 _S\_jhװZiёtb61Mvs:%ʦZ[4j"ڱ^l, Ɵka6dօmzoR],70x $HqmٔyЌ|/R]U#İAK\C* }q@>o}{PYl XF{m>`quеռ~@y_=×8-8\^tڶ}q{⫋+)xEEfXc,ΡdݜqY^[g+%ถ$99\.W P=Sx>3aG;EWvMtb;+S\?#!t>6kGnV7"kb\ƒ+܎s\]\U P\`Յqoe^r/Pk]=I7pr1<{{x^ !+i,Ĩ]#, $V6 q]!hM[>ݛnw r#hĩӃwZ%dj6 fo7g0$~?6~ZԒ.&ηniS* g{FOqܗO)]J4DPڿt> ծt;~+[?V5r~b+7RF)ηyj4%I۠~PMEr)ئ>QX]Hֲ8#7rxxTuK [ wrchyrgeO\rchw= iWRuV}J F"k *ۀDr1֮[OҸdw{TnQ4?lz8 sֺ:ȁу)9EPEPEPEPEPEPEPEPEPEP(4RQE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@C_fXFDs*}³3*4[ԋthZB>KEs"7b^4(5 IN:x[Cŗ(Y閑[>$q0$RkZ;~jh?=Tc~ﬤGT~ +2 ޵`}D0L3sZe2LtUQJcjko.^jKyR8*̑A@|g>M 6xbFh%O[Q@Q@Q@Q@Q@SInƟk5Ȍ&gz3Or00ljxsUGдy,b}*Ŭ;kt1rօ[*U sYu>[ԲXYUm9r{sԢ!KKhKx`*c vlf[+gJp)c rzU(ZtK W*Щr qCZtztU0rlg@[M{k+fEڷ%2( 3O)S3:BL\> jV2k,mgH^O ƤKKhKx`*#/qSQ@Q@Q@Q@Q@Q@Q@Q@Q@r^<AɁmi)dXCm}uż7VDA*92<G6hhd@vaEdůs zsִ?DZW5+KUL\eVKz3lRsMaⷂo^]b@-|ez-ͽ%c}WIEeVݻ8u;;h k yew:|A"cq]6ֺ S͉ɹJC=wz3]I6cc=6Zqk̕˝vԓ7,<,R5k ś^sET3l0j>.w&r%Fxܹ  dsYO|!ͫK>60Zr,n ;eep/7񽶎vEj-,Js `c=~-HdQ>VerlI˪̡B$rs6V̷zvkº|+K®P*O [PX`FyȊ]E^ /G}:!X%Tyc |[_f'{+'U@IR="-p/}T.Q5Q@nh˥vV!٭.1A,.%]cbBiHf5ft? hZW{'4pF r:q?Ji,/Y#\O,h.ЪyO$4QEQEQEQEQEQE!E! ESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQԵ+GIVvHz5?MP+KWmꤜ)o?zxյt PKEscHEڮ9M.#?Le7Mp?V9/ZxúT n+,<2 U/7'_3eNspc[~i0t>#Ьk(r9?w|KCծ'E/nb?8i]=G? |-5 I5)[tC,PƑƣ =@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@sO$o-Ąm|#kic-]ͷ.%7?|=tTP+ZW~wm6ne69:0eU\14x0m.,5k+i$Y(ȸu qs]M$ Tmo<|I ё^)è[Yݭ㲉|dƠgn8,@,{{(߂gOꚊP;.,u9f[ܶ"8 npYUIsQ xZ潚6xQ:!3 tNHtPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]fVnqg'㤨 oӓ×vbN1Y⿶"ơQa6;Y kh-Ӵ mKAO<KEeaPqQ[Znj4ɴ.m-ⴎ&YT2K!`IFIW/_i516|ys%i5<>}Ube:& .=k:/gRhWŵB(xRUcmo?|aKp(dW}ѴAg;ZF@l'e~W\WxyWP#*n č$#R2y<:(((((%kPЍ-)U8u0œvo qS?_5g?Rr M< va{L_?>SO\A-?_5㔃NPx`:+W p*`:+u Douy5M"0Z{{f{d!M$Qձ W^)(QEQEQEQE!E! ESQEQEQEQEQEQEQEQEQEQEQT_Yc /aI`(Wlmy1=#Z@Q@UMJ泰p@XDBrq@u-\ޑ=%-C4/]ZqV;Hhhyi$`>xÎ,ΦpIyXĊ|{{,߭t @Uo rӼ%vnuc dq'T)?r$IWj(:;NkF6OF ^|-hvam7yQ!2ZPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPYz߈ q_e R@fqjW?_ [x—5it*Q7A#r>(aN}j6qHA-˴xڧקW q'o-R46h|I9\z1*kz((((((((((((((((((((((((((((+nl?[_j?M[^.m~Ms,@1O'=q@Ep !d=p)ZyIS@OW?GOW?Oviȸخ{Āe[c[B@\g$+x7?+x7YeoT ?1] x'xa5>x`Lme ͍ p>7?wyhÃ?v>Э3 ~c{uf#՘}jלaA swv8?!Q^s5 GF]#Uеk=>k6_" vYQ+H1PEPEPEP\=> Wu6jLa2#f,"*7`2 wP 6 : a41w)m?t?Q ic]U\9NWo ӡ*M'CNꨢqW%[m7w+}}2mBXpH44.Nm!H"U 2~HQE (((CEB(0(((((((((({ç'-g$kÇ*o/D?'oEQEQEQEQEQEQEQEQEQEQEQEQEQEQEAs}id,G@\<$>l[ٳ4և.~u+sk]LⱑIEsKf`-= PKEsmqYpL-9f&?b񜩇4X ?JZ|Q\{\&zmkkǢs/!r] `]j66+}fSosa-z۹A՛r 4 ); Ka|Jt`xEJa-mgYB']axn5 [:|jP ţ[Lt9AO4=r.5+gJ2{!cǕt$..[-Q]3n/:p~_mh}[- &:u̺|;T1UUW hQB5dji r-1h!Fw`vooG/gm/mZ1zv) 4f-ѓ3i%I2t)RNU i)cIƁBH;N;1F}[>e?ƀ8'N%tB ZW.$``SwqU6Ě| Μ#nѬ&y58kwz}-oo@åxNMd塈 i7Wy[g'U*3݇GG]G/B*}HG@뚵n"E%+F.FrnjmMVM(&Tیs)<dv$sahg-da"pŇd=dVe1JU `ٜ ORn6+'4cU.ēlU~n{ӗ~fqǤ^NUXv୴$sIgٴzqEF)g.Ȳ XČ1$OHv`[A97<2M?\i7?ei.ƕ>m=7#@{⣏2FtR-̨\R%V%Gp'|+Y&6*"#s: 2zr@}Hqmkx8Jhik*h62jsJG _BxTo3YЭ#%?tW6$m>2_m,9i?No!?h3~BWKEsM/g~R;UVуkGF[hE PF#$EE~BHK1OjφêG{p:#]>b?PCEsC ܪ7IKLdAB,ouM93fǷ1`ؠnk;jڴ݃kiqoҠѦ uV+2}|lleAE@8 ]Z>tc>"YǏ]t񎏱xvy{K)tP2|\u{KX$M6VޟUk8s.%U(WUkn?g%Ò"rzFONU|B?_*(;!T h.>#Qסv,umeg 7[|B?_*<-!d%t ?NUw4P w.C⫦|;rխ}6&q `#cՏִzŠ.}SLGgbfnI1Ji &f#8b|wou5LJ(wie3AYk+FI#%I9 $P?!vGaA Q@?#0sکXxITcX62@ sԊ:~ ȏ??!vGaA Q@?#0s?y=9ڵQ@q6zچPIJBrV(vK1-߂<3yp-[Ct͸o1>de[+ZDWL&E2❻vD-V@8(?DbJ(61MufswW(s$_Ƭ93 Q:g|W} jiewai 5N\2 lUEp1|MRwi%Bes1E*JpFs]VMbX3ex.G,W#A J+tk\^j7=6ahܒHG6*,K噹ylK㋨-Ci5afKi `iF   k:W/uK;).I ȅ=S79QӬ۫ǐۮ$1P&ZIWˀC9$vWLk[K來ijSGXHŲFpr3غ,M;B0ɿÂ+_hiw:EzfxA *Hd@>Ex͞~>c߿}-B]M>I;e#p5jM;W6v\[,[xef Gﻫ)OJ( o^ҭl!Y15+p<ad9y= qsxP]&kmJ=w6z)E_2K& 6>l&zKPuhtu}KP78a ` 1sՖ9o OeMrԗ7׺lwڤ4m$"N IyP˶&PAG6Q(h>Ae0OMa7 ^O1lڌo4o< "";$[p 2wsP-6WJ[$m侔|*pLq0$p wvtQ@Q@Q@VF];B'*ey!drYF 8=H z+k3Iۭ܆i!mؐj@_o&}Mv&#"FdRpq@ WխR>/m#$ }]&tq)N-Qm)f8f`XrHKg$EcxJ2Ese+Aǡ VooI.X#wH8ےD6GTEfczOxw0_Ja=2 (0_G_-P1&3}GX/ c"cFT`(Ngo,^k~-'G/oMsdߌ3 Q@@yy}VE h-`X-acBR@Q@Q@Q@Q@Q@Q@Q@ׅ/ $ _Im]-QEQEQEZci ]"㻝A]d"#s#WV|=W/}ja jd#Ҁ8|Cӭ#ᵸt&1\I0V2D '=^>.J+aelBK^ّrK25fu& , h4]#\swIn) \n҇glS@$d jKilK^jҰbܨt$H Slo.㱶}D,n$ g!K}]Zj.=:}Ge]x+J漑W͒Eĩ@ 6ѸF5_\![-cpg*A h`[׎95-sY_ Iiw$W-@d*@ q]׍l \˹`ǠGN3+)آMf C(<6H2Es/cUhtLe$J2b9lmP}WԮ!#y>InAq09:}iwAm;[uwrX aKu%K/۶ ުx9;W,r(2y ]?Ěe B+uLmsW4Kv#[WnbDR[̌50 9'''SZYRSwv;Ep;/SSI4^!Yk<)1f!v2x/3 ֢(j]f$vPݢPCT8zKT5 Iե]KKܓ \vOA@{'|BA4Kk6;Ghd-$(ݳ DRk)ֵY,& an^m@c.e,<籗kiд%D2Т}BG`:T~/ On˙]# FF#Ҁ9OYEj)mu{<6$eU7(¦Ná_iT^6ʾZF"𠓟AZl)5+]ORKer,KמjMm{LBɶKeIe=%nq$qT}l%MZb#,ੌ19'8MF/}A%jsk#0N#5tKJFvژ#-rUX\3krK[x-] zx"<|EyhVm/൸Rj/b_)CXtvo[sjk98է<h d*P2Nz7AME6mRR7c=)OS M"'wgf1מy6M{Zk;-]`y42 [FcpurAIFx! Y e:1b&6:k]I(4+x΍aD &ݛ8M4mJ&ySOlmb20y8\VA.Rr[\L֫oK#Ǵo4aO'ǤVkxwDmWUm<[}ڧ0n8ZTQEQEQT-2HogXS~Cmhcd{r5hd[EE2HB;QUG '$urZIX//-]B]J LNARxcߚ[o%w7hs&KFP(tryEESմuKgX/m䷑ 0WR3Y>$PҮ$֦ oge@Gf/hƏi>)lm?@5GsDI̺goM߉|]xDʹ1K|hg[;r[HA&ic.=ـ n{yRhdP$lX%Q@s:_F=lO8W7 |F`(+zCg:Vl ޒB9A'Q@k)L\&.C%$XS~UljiUchL1g;噉$Ԛ艢Y:?yy %#Q¨tZ((((((+]{Pxc[%>Dhd$28!>#ӅJ]Jp!pq^vTol\'t4mx4 X"a76rqovYŦG;Ξ!;`$ҥ1;N>uK&źt>3\5o%mVg }r݌|~",:Q}Ry 3E>lۃ_VCv􊊋T(QEQEQEQEW)^j1BJ-<`:g|`%L &qdq zPUK iM2w[[=psFx-dօcm#wy7(;r0<u߅ ,4Kdeq `[7mha |x{kMN"$exQWǐ (!=5QEQEQEQX7*QOnǟ&22#*۰A oV/ƣeڼw|;R'5xF ">'di"[1n䪑8s&;+Q?[?G$ h{MGoEj?'(I5cIПH$O$Q &B~":+Q?[?L>1UΕh9 WøE##=@E! ESQEQEU-OHӵQk@8xÀã <}q Ϡ[ l`1y#5<\D!݅oP77֬Q@ޯgYkw,6Ә5e8Տ|9yaд99 VȻѱOOKyu6Lƺj]Vem!A Fo_ {]C˔ۮٍ8 zcע ( ( n|&˨x]ү,?d? @ C*zj(#FחRk;vm7nѿ3z@ ^uo:?tk]BMr&fd~q CQ::rw_Sv\'TW {@D=d].[=.Yi= 4m9^q2;fy[1h) j ZyŜodm7!3#c>@cP[ȰƱ˻1c>}&~dm]A r0hյf-Lb{\Emk%?u?BI< <U<=`Zu̙Q"5v$מ|)Շ55$/.nbyrFXp ( ( ( ( ( ( ( ( ()i+oE؎۸mnFLJ=Td?}6}4uQ+>ïZ׷zƦ>HC J]!WqbV(((((((((((kwG[WK\ׅ/ $ ( ( ( ( ( ( ( 5"uH$Rϖ2J9Ic]KImu:+Fcu8du<)zWk֭/4EǝOQR1/:/~  Gζ"ޜQ.Ԏ9 EPEaxx?·^r(mGbW88pp2k&־'{}u&%A.GnXj!{ t.o˥ l$Ia#c‚zOh)n'uK !GF2v$]6$30Kۧ//f8F@Q@Q@Q@Q@Q@Q@s7eO##4b]xŏM]]^@&@ " Q\__ྺ:uk1|#%@ظ< ( ( ( ( ( ( ( ( ~!qZ[?ψ ׉p(GEPEPEPEPEPEPEP rQCYM;ZuvIecWF=٘OX:?[S׼<[֑Bi`a.ddKex8ݤ`K;]Y[G2K,PZYmBWkn㓻Yxj"ϨG`ܦܶ|UX g[^S2uo WtЮ<1%BAR8@SSK.koj+KdI,FґM>Lp(z}_IZ!RB R4nؤa0/Hך+ ck%XH8RHb3RXbزFѰ2ZԵ+YVh&A$rFrd}/_<[.j,(!1L kW(G>+ ˫X d;F{4S| K:IEIgMEPEPEPEPEP3㝱hv=NrGeB+ᚺj:5q uGY$,exƳI|y" ( (4M"Gj]UIsg &Ki\}8ʟ:IxE_3N7[)<@īi5{i Kp@2J')M> o?> o?jZ^_ڥ͕76 jFU@R,@1w? kym\0M]0 Ã\ ~hiw6ѯdE9FAzʮX$6zGK,/'[5\͜ M[ OK+]X=wSFObj%UxHo\޻wKo 6P跑bwIciz }_+w6^A=\#nTMLec5xn>{eo+B e&??}5o4bj%T˪{=c%|ƶ7SH# #^o NյFIn,Ԝ1JʼoE`AEPEPEP7w]^\Eoo$8DAIW= 3zIu"7e=oYKkAw ,2WDt%= 4 wJҞ4Եk+'\EfOV-V-~Ѽni{6kYP RpjO1??}5o??}5o}M($sEAտKyƪ+xjk[uImFXD*t խ7]Zγ[́*z})U2 @9ǧ4X9z" d}4PW??}5oַ;kU 8eu=#*M`1?}5o??}5ogإNNʲ"I+)wcj%Tj%Uj)b͸*®XQܒ$ ,O'[5ZGtue:ms$ bdрeP*|S\όYi2xtB$*s,,{.Ѷ , QH(((((((]a5o #I-(((((+CXtm.- h.3p@9Xj3qN¹Q\"0o_6hF duW# ?~"E:t« ?7/K4#EiƋ2:+F A_̎~"HDoy&? oB{2unX.z= Ե#oip~.. 9o^@Mud1o*r̠u u€ ( ( ( ( ( (+Ũ63s&;XC\em\cFO nB -gTWiP]Z`su&fliO/?OWÿ?{V6/I(/3٦s9# sԊw){cL?,_)4liީq:A yJ,nھ<%f拢ɩnl#TV<SCcL?O/_OWÿ?_K8‹(3_INSiw_+iQpNSi4 YJ;_K8E|;@ / .4 YJ_OK/ O+iQEÔgƗAK/ OW+Ѭ@EL6r,訧?#I?4*喗顅o S?\ . iVW>4܈UYFP{\=M% ES((((_öZ]3Mk@1 sF3 Es"vFw ɏwz1N73@?$'k2 ~vQ@׊SfS,n?c tPaquu馽6W G*ɷc^G?E4 ROcQрX@rEĨR^82~E.\HC[ܡA 4KJ@I/&_VZYA0ݖ B́q:>uǎY-& Y󰡎(raZ(扺Oi$h)`H'Hp:Uőr[Q2R24/sO6}2g dmʑuGlkuۋ-nCeVyWēįK 0ETPJӎJai&bL0Xrz<+}uqk+j"KEg <dd͑+uX<= њ]g1sP 6W9[^=CzfjAw}:b$' vZٌ%c Y/Oœ111}_O€Nu ?B[ Εh|=\Er-ӒD_lPgO$*k u)ڞ'#VisWv WIkm,q-/l!..\$z~_O=.5֎`h1nI^Vv 4ҵ#[Vk*2I-b%B$Գ ףU@ =1QEimܑ?jiZi:ޓv.B|LVB@IT+oCV::3! TIr0'Ӷ˧t,~f9J UҴ+}/.n./n.Yk`( z{K-u5?MiAk a|'wZ>w?0B pFgUڲ+Ǭu{aװ}Dh?Zb; ((((((,Y4'UuM> g),̮èbw-Tmu*.m5+;$Ib]Y8-֫j'4I-({uݓ P _Im]-fvVO=Bo#8(?t#vƧ~jό|?kogpukI-~NMX zE*+[y5+4nPT~kdWI%ԬR8u$Iv((((Oç:Ak(  %YBx$R j{ x&#WnEhxO/fM.,PF]o=sx; dhaLi;)#ms &.5%Z-l̞XsS&G\ȠZ/|QYjmn/=c%?cIvq윜DFcvPZ28dpq5Mn rj0\E(bT*xu4O6@3ۼ㓁=qM2| Pv?!릮gmu!V6!2Gt%Q@nj?#֢reVOk*1[ B=KLbvO#%r>5[X|56I VFI=sV/_cO~)>͵7) 3I'_هIa["%xm@I mk;cynMmS"np2 khc0Y\Aq z^QIyT+oG3Ҷ]M4h/<!iwd+"|5- 7GGM0$1٦1[2{ f3 jz\:>ז=/a1PJw,S4WWvVjk ao-f;ecU;<60Eoj1.d=8Jo;O47vF;^)L"*T@A}Bx{XBt*G"Bfmp21Z̈́Mk[{mgI*`l AҪxN[;KJH"X W4tny30:zS w7ֺӆڭB7!Gy6>3XGJ6:V gu+X̣@ah՘a [Zv^Kdbh:_i-&I ++]<|!(7OS Яi죺Ѿe=ݤx$QXoMV!i +,W?vMuz)(T!mOʋQV1 fk&+galP#|~g%ZڏEh4cQӤ %Dx!`8|>FrHO$؎z3e'=kV_0E ( ( ( +[KNRU<Ņ<̑Jr 8$aj/?`?ǂƿ?HAvz._ReaM=?_ ?.#{9U%cҽNQU]6`};SO/_~8nxIJjwRijGi/dmHRFx (((((}iYKys C2M3U9'޹sěFa](?s@zLj4VLX/8@bq3K dǵ~qkZ-A<(Uy0 :F&[,-C iF~{tY4uuMmյUUt-_#bvRp0RDIk7[F[QB 26T.zݍb}'EҿnI.Y[ K \c##/Śvci6"hѮBTTpwg#8(#VUŤmO fƓʜfWA^=Y]({HaDH,1I xgYTQltY$(Ā,6S5f[r`GWΡ ?_kM`Ǧc"ݥteb`9S5 ޟ.{6Bkn!0bm巂qݯ+=Fm/TٮB#C4GZ[mt{X.WHAo{-&S3M}v9\s仳OfH) bpO(jǏzSX[d+gO#֣KDQ:\=ɉAQ98GnQTt]GcAӵ?+ew^7lg8\U(4u4tkԖ/&T uU*I*r7v$kQ@s^g_Ew?ȵNds^g_Ew?ȵEC̿T4 N߳gƟw&5ޗjƧSYdxlvΣFovk|AcSsrۂzc>3E|U(o/G_kmԧu?w?ȵuQp9JE}hNmoWf`MOJ.f+ȕ#8uQp ^>֮ie+oT1vDl2Y}εl|=V  ?OmcnؖIdnSdʺîCm&NuoLIܯa-3F[qzoB&Qt L<\ w2'*0 @q:oxijtbZ[AknIF oOz͎[u2 vNdPȠpy/9\<(V`mB;I1wB6za:<zg燭D]&[ s~BS$ҵk (lSM]cP6vp\O 嬡>HS:R_ iRRD@X-*K\`7p+qu &k%ݢhԮs+:]o;su PKA % e_W>Q .mFM7 ۟scPEQEQEQEQEQEQE -QLaEPEP4-5Kx4-!e 3Kn(Jgǩ>׏L[JR9[U I,qR/j>(9-mH .CES-߄5^Ym,7b&dr9ۓź,zcq-o"C"3.,9– cSEM&ilK/'YY䄰pGv7^8%ydt{XjFL:)gh- aH8Z{iuke7nGrq^H8@8QE e6 kI"5b" a76w#|P@q_pZhP[qgGcֳF˞] ̀ᶱ[s^ C' Pqqڀ!Ӭam@"cQY((((`Z RJMP*Ɛ}P6lf1ef,^\ZE{zPګ+LcqxXuŎ{kf[ij3Iβ##)}y8c.g/^JyۄL졏AGoM(A$hhS<˾ABՌ.ZFh9C `p9+`O[4y-ũ[ӾQȅmvW1ojGe[ē l.,XcyDt :z((3DwVB6d񣄝.Уqb .ta$}DigcW˂9y4b.uJDDRC$$}ݩ=H +x#X"(U¹+5w'mu A Omq N(~"=I%2«g`1 c'hgExZҤ[;;Wj pX/B tQESR,>k B;Y9A sx@7۞U [LV̨?>qAq[jwWIk)V)i=~WSǭZ`hU8eu=#*ZDZO{- Ŋcy?R>F띸 O5@U]?Q->g/$[`xeaP( ( (9__Y麯nT|6weP-`w$+h2FWȱNG0m"Bn=kSŞ5OUkf(tm㑜G;KR0 @iq]GSVB2$W++( ($w]}q5ME՝Q#,Ѵ>Er3Y5]SM?m5Q \$R,i#~O sUĖחrZIi2I#(.w#  vPCPӭ.mE8Ғ],~pa!~t* oD2K$vB`Qz{[WF}Pr&Od#@#d'ѵhaΟlI4ZWc$8j~GU"Fⴒ1ݝf/,~@ A-jG?4KJn|OŧVCN9 pÉ8;ȸ3]gZ]DQ-G$$nmlrs wDѵN -DTڻW>:(|=-yVDl6Vg|GY$ ( ( ( +qg'wU2e# E-yE^ǝycY?"D/hR|B厄{ź晣 ^[٤͕c.W#8 =Ih/#~tdzδ  h*h. ̏Qё?:*h.OЩ&2T2I ?]ظKLs 7F !b2*:/xWC>/&Q(8QUQQEQEQEQEQEQEQEQEQEQEQEQEQE -QLaEPEPEP9K"ñ,#{[bXPx\.GSI: SDG]OYpɌ? A<2Z~/es4;7 NI$q^55[^CU_3DcR#oL.mSnپ\ϩ\隕^* s`?2 @#cmU;q=uiXQQbe{GV52ڋ :袀 <,h{帇Lk膧-2[s_)`ݳ]]izh2\Eɮgweyl*q?̰H>.Ua()1,hG`zVi%|qc&x<hnVE>mb_.k;ߵO `E^t\xsOWԴ{#(}ΊI : Wъ%g ?Ωg\4mI$qX}ԁY!me[{tԊiݹV2/%Q8f;y]5K}kLH!@`Tjs|2JIoo3hUdg'|(&Sg; 3BXVmKu?wbYp?>xrufPAuڐp>Z~lXfeԴ}DS.ܼ31%@<{W[@Q@Q@ςV>a+gzu)WM@Q@Q@Q@w8[m@ y4M3ˀsy98 ;PҦۘC#:<qפQ@]S[|1NӮb܆iO*\L$x _LҦ鐴Q߾4B+!*@  5jSygFɍR{t _>XEmhZsAܥ:Ġ ,2~^zV{o:Z$f.e;9@v_t-n@NbNAe\ *D䓹,yk^.^]iM::~6b't3vUZ.d1!\`cZP|Zf;KT@]QP$+=?1[X ڵ/,u9m/m⸶vXzzP]4k%-g[̪Ay, '] `'*HHTm|OEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!E! Edk#{锴6Vfp `pbުDȝ/H3I5/cIПH$ԿO$Q &B~":*dGZkZP)mت$Kw{d~b gI״k*=q4RЎ WȺ/ÍF!JR )sݖ>ŊX%E70=#>+kx(!Aq¢(((((]T5X;tEԆp#?Dl} /{Kox hZ;MLBR88Ҁ;5y4VˢdXvF3̟֮w2ɧJ ,_͏99tu܅U$u:C7k6Eh}ԑX5a6ׯ2C}B:`+"Kaoi^k3=[3e`22adn}12duEծSb@lD*z}|t4b R8@Q@Q@Q@Q@VllVqʨO&לgo%~{xZf|YqUu* [M:L?9wf|35W?߃ۏśm;V49??+j(((((((-!d%tx[B.Kjh(r%=nxv8s4\&Y_]\Osh1 wg42,lHW zJ/O@Rۯ2>r8/NF8>mG&ӵu{؞ILdg|&8++5{=2,TQ $T@I8V=82JBv4}] @r2[Ö:kV]^I{ ;~a㦬iZCgv=Šb4$6qU˩kawmҼ N=r8@ y/fڍ"ɴ[1q]#?HFyt^tksi,Xޣr嗑#=F@6h1]%s %,*(((((kiԴS#F R0y(xoᅵWƞ%ҪϚv^%ԮA[ぅ@EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP(4Rx]<5YHkJ|r"W4!lz>C[mF3Df LF U!F{T^E,;]blI 5m:ߞ7~s'A4wV[ȓA*H2AG9+<'im/ׯgzzن#iKxRAsұ#&'Lۂ3gsNcѧ-,%r7k#BIu8>O<;&O]V[xh"F~11Szkk]%T.aC"wbVB)`x$\v=* V`J#HQGbsYeб mv1s= PVPj iL.LXS(<F{Z\0υ ÏɸI{6n91ڝcpA!uWj I LGyx߷M* zŝONy/p?1T>pxJѧĨdH I(:՘/lji̻&ܬ3Gb^]F>5/ MFZn<%Arwz8XvUb[w5ߴ wR8"ǡjZOz;h28RlּrC > 5hd= .%Ţ[J#"M;JEy'F5u9OO$2H;8 VId؏,p@ԑW5}%_VֵKz[i>Xl~< ^l86D&n #O=CLV,/-@$R)E"{2QZ=:%+G3PO:u/@5/QkUMKR,%aI$,ĐHf+}Ln[5"SJ &Zib=v4р>Q .B^vjdo5 PH,m!,* $J,5wNoȻ6FZv&/Iu B;ص'-^Zd@[y f{x&$.cW`UI/pʲ5Lm>YOEW$ z?%K?6sktTX.a_[)Qmj~h ,zFr?S]ݽWv=9cmzj4X$#3&\@]YhӹEQEQX^5|HbgEꍰᇸ<^G/wcyqHpx85$ zӱt }:!b(vP0?u[ܽܶ@[')؛%K?6 .B^vm; ו-/n ?xi_]N[^[4j***H ǽ '? Zxmʇ>%}тy+[]wCm?hũ,PI,9N7 (<]>q(H} Zri9ī+B5TW8 A#'8fzwKdAsf?-nYZX];\̲m>i8Qf[;[BC&W*G8Ց(o"f{ #-h&uQQ!IE-QxmJM6OoX22HʊHnK`oIu X9;ۉYfD9,v oXt+)H3wTP uaޝS]wCm?%ij};Z7 4)UVHHH ]x+A Jd$K8սEG$ z?%K?6֚Yۖݬ@L{}wgi*4(wn^=\]/PO;G$ zڲS^.-Cx'%~i٩u"S7$x!;\t 8XiYA`bZAگKЗmKK(̗wP[M* g$nt4X.bKЗm]wCm?A<@-%]k "BpqmC}gq;Aݼ* qʬOF9h\]/PO;G$ zMBY巊[B:3?Z=b: ۙII6Jo4X.S]/PO;H13>SN^^t3%Ṇȭ[K!63JO'ڧOX.ZX&E)2: \G2< m;T d#eIBe ;WQH(((]a5o #I-(eNpF+O k@xJԱ_E$,=K4E@_7 qQ@-wqwZӭ/g+yX) M~"&km:"vcG`:AN+Xnm̆hH+ NX/_#tqa@0sI9q7~<_}FOHb?wX![X/_#uTO@hsX/_#tqa@qJ]8cIKZkVMq" f1st60^[Gsm4s*X2_=/ƺg&x-IZT/& 1@ӹVfB˒ #I,u ͌w:/M2;(!H~B}0' X/_#tM"^:\k#FB@'b3UqoʁЕ# #iW28_Gu~"ggX9oN,?/?8_Guk`樦c-WX/%:JžN"1xF.G ]?1cQhG|D-":-qRrO5`88 cw_nN,?/񺱫kn\DcBb@O@ORzhn$yaS-r1=j,)qa@ ŇE;7[89}*nFa5-v1hR3ڋ1 ŇE;7G' l@ ,GtqK3@hMѸ $`J@d~OZeFqIygtuj ;HSLk]OB *KmK}<%f(m@X&hD0d`A'@ t Z]jZ wdexjvB;\Q3.z*z%0)k?ԿoԞGE?Zzu/@5'QkW+?1]Us^#lEcjf--bHngtd/p8^8FK, kFh\!%GSukzQҬf}Z!{{%#y97oG ;G[ᢺX$S!VS@xLtV?%LO>InuȮf,5۸ַGnIIP2N8[?𚮋os'YRjA4|[@ ``oM)UPTmLczO4Rauj7Ss#'p(,+zt5ҤHdow;#gbcH Of(zC?UO0T<%P3gϝ͞sz~#ω땗9/5MBc-EHM_Νy 5]J!0ۆ xBG XXdh`(AEP\O'>"| YMxCX-Xp7!r}3\gu-T5Ưu<7*$bG.B2$̧ QW Œ#qB p8,Xp9jݧot CYǦǠ]\D\$y^E ]akWIҭ?:r+!o!A7bSvp͌^]vtսΙ]~#IrV1khN$^cb%Ǚ[d~:ghOWX.y"xsX[vg3j`gO]5#Bmw琰1 7 eUeVP[0+%u*!;:nŦiv1ntb zd&5=4A{}~6n6Gl7* kS[?H+v܆m(xG>V3yzFOq@-κʦK'RQ/D/*DWΥ[Kifi-Còm9)/g<"$!=RH(?V*:;Z[]h::$kw+r++<8b`Y^k;nﭵtFϪC,daaץH.y:Cz^{b^^^[ncYR Vp@bA` 42&ӵ? _c-edVd0  w?6 ڊasͼ9>Դ9'0Rm?+?@aӟ^SJ.m /6=\WOG@Wp3)X.y|%:jzfK@̶œ @8Zw4[;{dH8):}fY薗$u)V sy6  4 Xi}oi,wDj2cߐ+hs+_k~m:OI$N$Vudb̥w0,;{ :4Rokk3L oNsvv&,nae$=D_%@_pB 0zH..@fح9ؾnQEQEQEQEQEQEx˟]KP?95tEE>ק󺖺j((+?)ag;ZVTI.]i$RI=OjIUK;YLTd3k >a3C<Zܠv;PS%SɯD}.?:&`M7[it4nvkw;0:{Qg״>5ӥ+c+7#+* 7zץ䓜{gfoϕ3C 95sCYk:\3 cym)1'-X^'.k*Pga/)wMvq@%'5fgC$VQ $2L#w%<: t9a kis6XlH!$A?tU]&=<[I6YO.쑔d ddmȯT, rgٸ80I :ngZ}[F˳31,ORI4_İs,z7N`dL/>bkOG]V99'&v^>nbCmgibnyW#Ojk"n|ei~}i'\ ӎ|Yu_1p>ϻ>XOٍuwКLc'4 %^ڴjre+#9=jogBnbRZemW C^F2qFO.y ixa>*7o%27y3KM-| 2-BI˧`H:&N8N=(43r-ዙ/n!c%ݬBGi࣎I ʞ;u}WW强[eܐ-REgG9#$q]$t$})I'4疤moicgǨuMJHfeŪ̻F:jn_u+)*#@܂]棦G](+[]n)#qO-tlaX-HԓrI'I$rI$M!Mm#y MCH]H$[F$H~1qGƯa'wj6MerI&MI#(ulg$/;'JI#Sw,C]ur>1"m2OLN!@2Ng?E7c)lQE!Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@hHGӏjIFypp$eGD*H͟M'CNꨪX5 : a41.+ icG&C?UuTQp9_M|'CN?5 : a⫪)k?t?Q ic]U\9NW_ ӡ*M|'CNꨢrO0Tk?t?WUES41_ ӡ*(r>C^v ﭿyl0d)p@I'dEE RQHQE (+iشCx+!"4flmb^֭hm >As!R;4EAs{kf-PD01$(8QEQEQEQExKL ݍ n,.ݥګ "MEs?Cb "MEy-X[j'QOsǖ>2z? ūΩoza4 6%$`q[ =B:׳|%ֽx-Qqm/K~zx'R{!q/CbQ@!Q_/q 0GkcIѴlW9,9Ėv8f$U((Vƙ%<ȞZYL9],kd{UB_2z騠g` ^B_1j騠g` ^B_1j騠g` ^B_1z騠g` ^B_1z騠g` ^B_1z騠g` ^B_1z騠g` ^4}GTX:E^4AC哰ؐqںJ((B@E-~tn_Q1֗|m4HqB8''tۗ~u0]mp,!HߐF#Њ5O3vi%ַ il_2x-k_ Fݕ$Mf $ዟs^ܫ5;~tRnP:_KnO1]_F#;>ךwsa| j&-[ ,|~umChM)qu;o7s8[BGJQG@S(((((((|"'w2M\,ϬtQEQETs ռ$J$E `ڤ9T ķkvGtʌ~=3c`xE]E_Ŀ72*?T ŋrYI$I95n+W:wwZvykyhՃ#I 08$5Er%:d4`xE]E_Ŀ72*?e[_9j-I@;T  t'tR,3mb ƀDDnH $PX;PO&c㍗~lIe¨OOM ??7Wo;K-KOR1c݆weXxZ/` `kewl>USTFqQ ? *o.HŤEsr$ܴ!@ ǀrT0kvT{dSiۍݷn3ހ1S')>ҵXWzDs|z6T[tB;y.Hfeg\`9lqqE?Gqj/IWp8nם|]c]?kWEPEPEr hVW7]ݻ[*ogCӹBu8XCk|vF!T)?tWONjr؋Fv)=>u{]GT.B%$IR(M絅χxn`a=0fYd(Tfm0]+S{oOkHXL1.p`a3m|mq$"MV帙" 6Ą 0$6j GL@`9}mXg_iy^ZEkrQ\#۳(&m?6F@8|Bҧdk{Ymd),Qv8GfS \}CT}WmdA/V ґ$HˀlGq=+WJM3Q;4C+*u| +Oil-n5ٲtF&3.ݡR` Eu/-&Kܔ#!THYXpW8IGUTxH|9 ''km#zI$jy l~hw0n$uM$e ,f|QKfSKNiqmɭ+ik_ c䂒<~h\8U>Ey]Վg֙6cmscPR7gOy%4-JRU2mlf*($K->5WRn;+It9<FJP܂./nFRҢ7-"X4Q% Å$=+OQ>wȰvpY * Cdc6=17ڮ$# !Abv$dW((((6*{Y$WM\όyo/o?Һj((((((((((((eB-5{ngXIฌʇ*$VO:Oyf/VRx[:)sܨ7"fdO[XdnO } Eujږ FE򅝗ʮd.@ W>Eڎ\}ژ8f ],۲Kwssät_Uxs#E?,>NEYq޲uK_0-ZiEm!#%[jß0G%^H/#kb[+Am {gT 2چEDYlo@;A W?a?:/*J9CTU|7:ڭ#6qj+b$R. @!F=Sju:DwoKamwyPM($;`fUtät_UF<<./nI6c<}kv/oJ9CUHviWj%IOgz|%𾅮7Ӯ5]&h帍x_9=O]+г:|=ܾ.ܰksb39W~gKu߃Yk9W~gKu;i>k2V_隢J#[ i0s+9ls&5i$fo۬<'"Q@sY3a2k{[Cl%D9/#* u:ƁѥAH\Et*䞤2k@ׇ\W =bCá,8u^ KKɩ\%fkpT)'g=r:(>̈́n?>+'Ygn;VV}fn!/cƽq~-饋2#a`(_B,1\jI[v+mja[XK\\`rҖԠ/6 y!'jgJk[Xd {F81Ό6[~ 62;:7ݻ=cVdm_](JWM\xq8% xWO&k%k )LӅyc0HI>Q@<u/><B4)PK|{cծsciKku1][nY+#~*wf(((((((((((((((((((((((((((((((4Ph!hc ( ( ( ( ( ( ( ( ( ( `;~'_[Oxvs{$Rʖ4`'hx޼bO>ȚO1 n7 0M{CDctK=V'8žA 9={((((((|]߆WM\׋9Լ(=u-?ҺZ((((((((((((FPU {='|,1brOأ^7m ?^7m (oV ?V ?𮒊^7m ?^7m (oV ?V ?𮒊^7m gA%itO֒#b= 8Z((((((((((((((((((((((((((((((((((((((((((( )Z(Š((((((((+3]SDǒ7Ȱ[Z@yorIIPʛoIu6ɏeOo1WIRr {o6zutER Ӓ1H*+(Vs Ur* UP-r*+(W v)_9ES^-28$O~e5r}M Ag2U),mȠw6袊((((N Z\+:߄*Eu]QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!E! ESQEQEQEQEQEQEQEQEW1"O|*{m?7]=r"c3](>gs$$1jFIgj>vQs.<{(A3yww EAռ;scں/Rk4Hx)aU=WvwWwc 6ח$-Hj1IMQLJlOoc|\񩦛uMN;IVkIH1 3d\3Gc5^L{2|A'k1T)PY56P [7kC#`!_Oi ]nkY[Y]n<ǖ,nbہ/%Hӥsup-Z\,b,d0AxJU5K{m/lE% FA_&=uèGx|"BqH~߼Gˁ@57ɮYKt4I,-|VFF1R?dX_[g]oo;_ړjSZs{-U boǗ׿\^CKk#Ib++L0<pz:Z2=k*h.OЩ&GAFGsx?M4 4?CAFEsx?M5sMփ\5Ɨi3i-mR&+pJq=Rƚ4L^hki @۷ M6h^#] KVu'{u"+Y~ k1rOqa%n|V `(*Xez _g^ 6 :e.6` ƘA4j[޵Νd׋mqi,-2sP˝-O%#Xi/F.#ha W{W*'pi#ֳwM (.-C$9 q#-'^&4ӚK(&K#1HA9/95;;5i.e+smk$G)dYw* zTb!hWS'-4ȝ9HO sşa +p%Hӓ#L\9M'Wzv[i.avѮ%R@L/(h61}i.T+I}6CGHԟU-mU!-qB!sav3\炯ƶ]:H )he sizUͷBKۅ&o!ۂ䟩=h'OׇF{K/Vii+I#÷6ZtJW١rFVRU*AB^"fCɨh5HebdIfLou: hhKu,r\wp)T%I7`g3ހ6h(((((((((((((((((((((((((((((((((((((((((((((((((((((((((CEB(0((((((((Fڱ8ZeQ*)0h2U%<%qq2tkG;oY/Y/?E\VAЗMoY/Y/?E\,oY/Y/?G޳B^6_~(Yּl> ԄTOү5՜z4Sj_'w iGvw ' ( QE ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (E Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/javaTask Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/javaTask/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/javaTask/images/JavaTaskStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 14632 Text-content-md5: c991eb4fa87efed1b92436a7f63cc0e1 Text-content-sha1: 684a09e8286ee8fa16c440f725088b2db2afd513 Content-length: 14691 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( )"FuEKX>3𵓔&ܢރ.~%9ngSHiŷ ? xu @-&⻆υm_~Ur:xi=bkPK\>8M6}bM" !yŶTPH`r9"4]^:9B<bsSڰcE,_[uYB0I62[=: D=ŕ3E#O8b$ 1sTXh tЮ]6o!u&fPIn\sSxXsyu`|SCh"Xbb͹تr09B vT{5 /5|s}~~',-YR-.$r'܊?Ψ]>= UaH3,^iGV-gm-yL{YϖX6WPI)4YtөH)D8n3ր,K,T:Ɠaw>T b)A@q7tmJS3\iQ lF;sTu/Mwjvٮ.,#TP3T0bqB 3Pd{05Fȃ6rI?憩Mlխif&XZ[ҵ8S6$>ttV6j5:c, ElEPEPEPEPEPEPEPEPEPEPEPEf ( ( (QEQEQEQEQEQEQEQEQEQEQEQE!Uͩj$IH'( $+eB95dx 't(G:Oq?W7X\5hIPXِKf!,fݝ=1ztCm ? 7GQrazM彄lvqFy jM{8y\Nc.$\X(\c99 5%+hQ?Vѿ ?{W}Jkjv0dmpqΘ/nt닗Nf*wASg?Э@OO hܣ ͹6c{s9u.-HUSy8ʸ$n3_8. FY]T em ? 7GR}f?w}{i.#Orr>*Z閺>VǨG;  55 7Go+&^l> Rݣ۳&W w.<`9 S[;fxc0ڼ su% 0IR@!BQCm Ƿf/KK8aE!$aC1i1[44K]|)\jw֣2JGAbixA`gO?Vѿ ??ЭY6'K֝Ju3`, &L?m .0N0W&-'ľ PN{-SRO,6_?kC 7@j^u燃b{1{̛PG PYJ$apOiB[8#?&w.'_ej?g\A2΃4[bOYI$ {=I/O$4[RO䑀y;]-sCZĨE׌s Xoz:E"Pn*WPoi0,}>MmZ|~]vY ( ( ( ( ( ( ()jF#ԴKEdX1n6ofAF]-?6.`:GCp,nmEKL_@r?ĹQ6wPyȠМ.dZH!x+c=2"@v@k~ 4ɸĘ;ff%;[p"*ETp+O>>Ŗ󛵍f1m9U"&[Cÿ?6.hYG66rpц޾v/+uu⡶ue=HGse4(a \Ƞ.[Cÿ?84.㶿H-K)DWSv>aqlͩ*sp)Xex;T2 ;[Cÿ?xW[ͯæuu@ g2sjon{T wk, rBq.sv3+xwgoA vx}61cx[MY"I/c-xHP6O4DI~))_n]~` VhOا|ӊl6-潎Kbӥ̐2 \zsZiɻ!£1U%Js쩤]WZ[He/ 1IF29/|x=f;IEX uܞgҤb>:Z+kVryCk?rXT]j:=|bA ٕ0UI84Y-^K3.P8\k2?FP|زҴ5v*_m]2VLL2"hN ɳd,,?0y/o> bۦ#iô"=^+@{D}jϯ\-܀沬fKPoJM>deRef$ ^EyNMrt=T<'@K)H>N]7? o2xOGI 9l_N=*y-5;Ç1†05 {KHrFTdž`I`[IM"MHRҮYFK8ȂF7n~b{ QYyawLL =v t=0&0>ŪkeF 86~2l mČ4~7`RַaTNM-y玵x^:/YBQu* gæk>kռ4i:ͪi\G OlWqq,p$F dOk7 ,4Mv݀)q Tp{TcUO i̎uߛKѲD!J#@">t|M; B?9G&2Ы/Vg$Wp\r4N+U8GY11_4rLeW_ [s,bwFb,72`: ('Gb?T6;.yd8,T23ڮG;F&yDڍIр(úv4QE ( ( ((#GzbDxz2#m W)sIn1ӍֲfQEܦyLF9Oxd y(!NSS(W K٬ M$r\JyaoWH$joFts F[(O"#Dc>?< o ? mfA$gͯaQWЮqIK?' [ݬB4`.ڟ}5h:^k["Hcaqk, ~슧#b76Ƌm%v\9I,#yg36+ͦj..$2Vr,0I'8W#:5X o6s+,Vdt\P gWk>.]7MWzRiͥw7?k5wyV^x_˥,RXXGpVۆ`-$<Q^AsI4-ӠM&giunmVf }r݂8j]OG3N`X MH2!ހ;+ȼm&ֵI,D"Xdvd*l xjŷ%}[I53 1Xڮyr}ŠU?-=:Xk%#Q&z_-5EuAkCH;-]a&]b^qS^zL֚ڄ*)f]4Vv{6}#˸[]oxŰr:cSWY{Qs6 HIE9<EsCQ|;Um,?QkIgNb?M2v*3]:v: y ϵY FASNA ,~3{_|^4%70YZ1 H5(nIz_ )u- [+Y BF]HqghzOܿ<|?]"J"jEܿc7FMH,۝oi~(e=F\Y  ǻH$0ϡ _=?ƙ1XC-V6u0*,pخB9l &2ۢЭ-[`۟2KcUmO^*0 k?)G#ZIJAMcQ\Ӽa"?Si[?I~/8{/ݏ-tXڷjsbBڛ1 ~)ɴѵZ]OcX6ї9+$W 48[U~pb>Ny;}q%lj5i-4JMlp3RBaޢqa6 MgLf&2*b9t&P@+RsTb7zs*Yh@sOy,˞ F;o85i~/Ok aE;@5̿noApRhaJͺ{^t?)]ae? 76HdU"1P3J3Ŏ2i'ҽVF/m;IѴ+9G# JzX?h Hn:9~Xjzׯ@q@)yo ƒK8Yhg2b*׊uI ]Z̢ 4Č!}_\qkvK䷑vɰ)zHlEW3gPGO ޚ%yW7o]α۠8Qbc\VI`]-9lf.6:a?^5KQH5-8.g<.y:0[9'gXeBQ#+ gke}>/aeHuʌ8)6͙̃;1gS#ǞJuKP?ƀoI]藮tu12Ol#5Eb4 йMmQ@g#h??.i[TP6v6oio+c(MEQEQEQEQEQE! ESQEQEQEQEQEQEQEQEQEQEQEQESRm5:}>:u${PAn(((((((((((Hm"G#E!luB;7m:6I[[U:PlS֕QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE%QHBEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW:=¦ *kl ɏ$q2áZq]a"I}B֠kKF3y(9+8#%}boZP\ZiR] ñk$q%N>OowkZy=:XV ?Bث65.02xP( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((!hc ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (o]{{[kI/+g v<" H^ύX `w `(G?@oxwOsÿ&x릮2vpygeyθ;ʨQ8YG?@]U}G?@]UɫN/4}?P^^=6w((})-;Qմ}BuHA< EPEPEPEPEPEPEPEPEPEk?`77s {K}|-`UUfcp.IǙwfn6 /1;ZXk/1Nº:+ֿu?Q5tutW)5ZXk/1ESZXk/1G&C_b\&C_bMk]c OMk]cؚY,GWErؚY?5uX.?5u[jYks}cxM&s ;~`\ A `QFhEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE[bOӬC @3)g% _ahؓdNqEqM?4K]c&mN;{Us1`g'#+-SZ&,QEI/^uU9O1ZGjwѼ3\B׶Maxء2N;|SMDel a~f[G#H3#sϕO ֚5:B}?X 4 4—bea9PvN%^!u[&lFvk˨fa"X`+N)ޣrpk"kPk7"5b$ Z; o$f)Ahك=GE__[Q9_^nyHsӾhc\ ?ֿy{hG/"?綵;G ?ֿy{h]vWԛO43^ccc$n̲a#M;T~x RG,ot۹Kcm#tHb71[z.흕ιam,…A9֤>&4[}0gq qXz'-]mk #$\YN2$d9v-5vLmXߥ\y9O@1PI8 guaAY~YIAmHex`=)xBW}&-Zљ "A2 @_ ?U?63j|㈚g]/z/|&F.aYD_L8x=Og rŔkg?>O8?0㎵cI״v9_LDdyBFFAdr=kW6QK\\"I,*R $YYWG5A$mcBoh6'mc b|UMVyosqԭ-nb%y ˂9lj$ovтێ}Dn4YG-M#68 Q c=G/eº:Fq o}e!xO|/*I'-rp>:7یp?^5Gw⻿Dy黯j4Ox[MGK[}3PHi e?{=—$b6 9W7[ iZ֕}<<&jҤ{9<{ y8Hb'i?~͸98koh&chlB3n3`QGsDzGt65j+#8Ϧ9R6V0_e-Vf#@ @"| -dž?DE&l,/$E8eQ4CvQx^!dSM吶 vVݜ̀)a}1葱G(>}Jӵ{/k8Q5D"Fmp9`P; /Q,b Чu=B+[{k_e:c"xٲ)zoSwzWUkbjWIwYfF򓃜y9bBK_@ư5A&dREil*,)˿XYYY;5Y K1̶緑q"x0FJctP'+"EBᢹX$C2b?O ѡ*Y-ᘃ$1 3V.SŸ4h1O ѡ*/Zϴ?Q+_.; ?hcG&C?Ut_bhأV\9NwO ѡ*M<)CFk>߱Gح(r&C?UxS0U}}bZϴ?Qp9M<)CF?4  a⫢C~bhآsxS0TiO4?WE+_>k>߱EÔ4  a⪄xO\VQ]_j3 yN$Hb~1uMrA]ح*l . ( Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/javaTask/javaTask.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1627 Text-content-md5: 26f422d3881292d26b6450b0bc685c54 Text-content-sha1: b6edccaf70ae3eb1d25874469fdaafdf02128084 Content-length: 1672 K 13 svn:mime-type V 10 text/plain PROPS-END Factory Invocation

Java Task

Definition

A task is the most basic means for producing assets.

Motivation

A java task is the most basic technique to produce assets in Java. For instance, generation pattern are produced by a factory component; however, this factory component uses a Java task to process patterns. The interest is to use any kind of tool. A java task can be a simple or sophisticated Java call.

Structure

A java task is a type of asset factory contained by an factory component invocation. It references a Java Task Factory class that executes the task.

Java Task structure

Figure 1. Java Task Structure


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/mapping Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/mapping/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/mapping/images/mappingRelationships.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 16730 Text-content-md5: 899bd69a069c408ed63c4ff007689503 Text-content-sha1: 718a344b8f564bf26d5971de7446d71449ac2f60 Content-length: 16789 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222?=" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ű_6Vv2[Dr^Y K&`'s>[i.>NX$Yʜ>N$mn- OIp>u ,nKʪ GBimmm>v}ǪQ^Mi[3cco&o,ZL qH|ÍT &WjYivv ~I[!2G,7ez(ZkJSRc9nM{ᮣ=$.RpԀ _M+&hK$q3JbZR7P8 5-ol0I<3D[y 둼i'{|Oi~Q\ /<0f iIH%C9(|T=88uUL(EPEPEPEPEPEPEPEs^,$EZs};̘a–PAf8ګdϭ*X:Ն,0$wvg,\7ؒ8s Pz_#f϶״{Fm:V\H8;j%GOP]wL6Q?%ȻGlGEQ%V Lc.2~#:.}it7@ܢ GOtESu}7G[OPbs2ĥ gVb9Ibu7PrAEQEVnW9-O1乶IsX9*(--2-s,~T}G'sY7T\:Eg|x^/&9HTu`Fzkuc0:ޕpmoHPC$p)z˷f:C-[۱`TV'#z!*2O5Sú5i:L:m%嚆i@.Q[995kzB{DԥD\oQ)3!mp_h0 g%4gy>e睷ݐF7g9lg.&;fHQ/_8>%ÍTxߵ&dOABzz[lx\,<7p X/k7P.FkrbrrG eޘ#=3 [O¾ñ[`j$;r>=YuVCfΕL6Cyi pyjZ\5Utuk_mz{REco${7w 2A~|Mi"S4)ʇ\=O:%qi@KX''{Pk84 2 JQa3L<<rxY]V(h(d=Zi^ [&I;D̰Z_dr+mdMhcJse;&wXÆpv}r}nV}(k+>cMsOo'=8G̋w`1*9$T:aiۨᾺYm[l"Yx9 `IvrwmAu+~3Ȭ1y d3h E+,abH #5otm3(4Fe]jIr\0RSg<3cWi5嵤CtR sk(/<Ě]ýV=Ewj7⹸Df: !smumk"DlV@5-X(EPEPd"ff8 RMp5/P<zĭO:S+À+#hhox{RO6"Yt񖜕03R20TE݊4/yZݴd`;!2˾F퍤3^E([s5e RSq&w{ƙ1W Ϡ'c]-|acuw+7E-No%.$]˱6ާxM~[uoO3EƞdP$ !K!;[VkVmG''[+~V]ny͖/ú_PMp 1W##W\# E:wț_QHe WYaK֛1$NY5f?*K]sWfsH-/}u^?2\2\-/}u^(-/}u^?2\2\-/}u^(-/}u^ҵ-jiq/*Oo$[$Ua򲞝{C,Ek@Q@5=sHV6uK)"3upo\n#8;ס*(z7mtw?Q ߃kc]w?Q ߃kc]w?Q ߃kc]w?Q ߃kc]w?V͝iݍ7VRh$pyPAEPEqoY_^ ;jWXBԨ"Hڴ \ \/~(/~? \ \/~(/~? \ \kH|>$M@<+KQf%@$@ xO²tCEu]QEQEQEQE{C,Ek]s?+ZAEP?y%FU(z7mtW#}CRݞb5 L[O,1ϳvGj뫊|ad_=^5 &}GLq]A[lj19E'/]e.na˅d)SNij^"!C0CmJ#h^_p}>7z{wk513HN3#U.ofw3VY5`뎣ֵmuH#e$)k4AbC[aFwܜSQiSk'clm$[r_+8![ԣk3xZfZ>h9ks?+Z CXz׊s3M iT+}߅?f;ݧ'1HyEsl?ȴ}s7"y%FU;uh0ijҕ+%͐AہF9g?oExv^H+;6][]C,K CGְH5)-;)"=A%}#k+s] A,jRL@Kp~*!AGzޕ%R7c;iRh%PVSЂ:/de-IdA9PO 1?cPm'Mnt/{W(}dsO8ִk^Q&ug24@G:  ; _[5t7@w?Կj( ; _[5t7@w?Կj(( ̰cBqJ((º]s u/-sH?d+(((((gc+Z+ot'lz+0y6Ɉ;FN @w4W? uk7g̊~"Ώv~C2Ҁº]p~*G6fS$rC}mǐ 28gO1xm2O*E@Ma#i/7v{ԥʿI<5UдtXG&h+6ҢӍX>q<6 I/2EBI {o#FWҭef;Yc#XD{.LN>*hmǸB:: s?-A$~a B}cgߘMyq=e<0 sHřƒ #۞o99iZ]`]rrǹ' XɦQE  ; _[5t7@w?ԿjxIˤϥohZ"LO˗\OnUڠpOrI$VtRS-/}u^?2\eϮ+3Xz4赏[k$Kd_*x88A=s?+Z >iAEpw^,ӛZLYؚet[imHY#9 `qdgs-/}u^/? ѶP? >iAE`/4`[8B򫞕=Gs-3KY\+7`c9'+c{qq-2Z\cdp'iNp5 _o6myvߺc8e0RSsw?垇cY%j[[OA¬F :팀62z"!OӅئO-aJ "Q^oG"V櫭]6$@DEc(Ǧ[zckT/u v2:Iq ZGpFuO徇ylf٤#ߌ? ^ #\'&IS3Ҁ;+xZ忩E7hZzx]zPWR٫3>$n!Mbu;қr!b+WWP9(*:qvrzKAȠ tQEQE7@w?Կj+o+lxCEu]s!+']WA@Q@Q@Q@Q@s?+ZA\9 VQECѿm+~J`i]QEQEQEQE7@w?Կj+o+lQE_OnVu!?QV[>,]4;^! o+lP?k6ɪN}ـ:_Hs~Q~f (Wnj2JmR /m2&In >5Of(4gB*Gb1][k&x׍FS؏אr ϯ5˻ZaXad+H-4&? j,n|y–iwwo ެ!ZHTid tlh=5VNtdGe $›x#{ݒ<鳩]ɭh+k;QwZGc3nqHI u=]GYs&6%Vۄ(*.Y%:qhZZ+KmxDž-/_I_n r[`AG5\sa]KKfº@Q@sa]KKfº]QEQEQEQE7@w?Կj+o+lxCEu]s!+']WA@Q@gi xm%4?ʅH `,t4u4{T3NrO\t` Qkv/tg$ufijoZӓ6 0zFrA[}DIff=`R% $$i_ \C;D./[6Vq2z7 ?J{ƒI]Uak̗AL[dWF#qu{C,EkG!ls Np\Xzu-~^D(sKsQrHyEsGx=HG^''HL4^Cѿm+R&kX٦^O%'cmN@ c7?6z[l}|\PA\W; %tZ擩zyT n氹LZ{+t`F~k^LjqA=:KK<+;G2*tsº/K=D\p,ln0͜ `Yjn(UUe<RZ4_=FF_' »xWo2C=zys u/-  ; _[5tQEs u/-  ; _[5tQEQY:涺DPibfnv'@%',_DgƽʆLz|'q\!EPIe# b*J (  ; _[5t7@w?Կj;Y쥞9H$hՁӆz_5Kj]GLi"H-sp22ŸR:*F㸕ފ?W;-|*ѳ'/Rڟ OW?x±">|/z9?/4EXzxoSdtEnB/Y`6 Wk;Q׭di '2v(޵ito.Ͼus3G#8gJ}QY%]2 aL# B/#z7?t X¸麅͖zE0^\5Q*$3I/9i$¹º]seM阀Uԉ$gCEd]ö/]a|c b}Io6t*ho+lW=zh iVND7spG[m\M2qaH?tW?OOWmT :{(jS׊V{ך[#KGG[UyI]kV#:Am'm rp1*pA*6;[xIOӵ[e͢ݙmNT˱Hy dzn{XbY>ۇր+vE[Kn>jxS׎Վ~chݳ%G`G"7zk?QP^`&t )¬X=R]mβ5+{oe'v*ف+fA'`}ޘ*̤| R]'W If`=V3[*j/N?Tb-SI%`#(# _ᅋڂGbOI|11bٖ @L@L$61mCs]c4ckNJF ?3Ķ8ni14`|~}vt2G[_4n??_\2DAXn4.]NU -ʼyzu <u\ueny,ϵbGIZVGxCa`09um4+ggon! Yข!-(0I@sa]KKfº]QEQEQEQE7@w?Կj+o+lxCEu]s!+']WA@Q@R8t}&QY2S1ܜC[ZѮ&@2Qʶ; _0]6rEM]}J|Un1W6vWvrfG7+ 'N1-Au.G6*#N8誩Q+kIw3jOjGQ\qe}@] ngksWw4}?:Ήu[xzQ[[I<4m)ur3 n zûk7J%嗆ol-,KjHo|v]xZ5 'f5!GnįIpҴba>L0 O_~ǿ;mg߷9&O?wF埆< ;;֛D{F%R8IQ${vN1@im=ómO%)@<;xdv)@XCm_[WOu94mCĐ}l-n5wE۽TW' W!ٟX#F|aixwQ]xL}_x-nTf5;ᕕFP2^6_Öw7Mq vw,\#)D 'Ky-.EQ^x.mn$ةu@m+|͔p4DxRO>(5qi%Ԇkf͌yz?x/plu 뚅ͷ̞IFnp;7[PQEQEQEQEQEQEQEQEQEQEQEEss*AJ^Id`I$Z9x3MxVmJdWL U+yn#R2#y"q à~]sź5iKG3j1 O%s~.[ö3h~1ss_[M?Pym@RFI<â? /m2Vt<;xTܛGYFk ndY-hLF6WStjHKź?7&lPA  Ekזx(~X6mksukR?nmᵝ*rWc_5eƪ/كI w^mw>Zϋu xjQ [U~ό>x?4>&tsmom3iuV6O$Q>\if1߉4=&OxW?ftj֗61˨-ض|fc]: /5G2o$>jW >6|H<(4 ?7 <_jfXDaW_1C o|`h^"]~wԮ4y!&shbȨ"84i [T+EA՗:K/4(Vh|5'ls qz-%SE(]1$$RI_ė6}7 y[>kVIM9T1 S 5汣I5_$_M|/yu%ŭ71$dJa`uR~oڻMek)j iǭ\1+[h2'pK sJưwGUmCQl-ā#{c漬+`ZcKi. 9b=0 `R^-c Ũxmz?眷+GBTKT|7H=)6\EnZG$Qxm⯉<7=]]ղz2Ab.ˁlzq1"EUQP_|RgA5xrŬs}nL~3mPt[my'#ܣky Q?7G=_CKOs/Us`.mGH+'|Dk/ þ!AuH'?gX0kt?(.xW? tCRi]m mG3_7=w?bُS$wboBV)'?ÿ|MzQ@Q@Q@ 0!Zm/xQP +]>}Cn ц >?aoNuբ9|S;~.]A#ךMԮ-.bK4Y7V1 B[ 9|K,hnu=:ōmb qe.0Π>suO :/9=ZsQe0Gi6 s5O"m&w&iW>/&,A'Hc$*#Bb=[Ŀwem'CJҴkڥZZ_+),f4)ʀOVANӤ jwͽOq% ^gt!o1*~:Sӿ#>2RgD7k\&n I ~=O/>"G'^iV:t*8XnZH8`oo`afϧ4/ևOӚ DHم֣$/WP>߉:xmj:Nir>`0- SJY>m]f0+ڍ"ᢝi';-`0Uzj(~!&_]SNwgksƺͼ,n5àR@ފ}@7q`u^!bO4φVcjz}}2 b\-|=Z?rO -kw/ |C¾%X JD??%k'P5LjtK8$qs,ѤHfyYKy3P~|5𶏫iZ?9麼ikkBzX)v'mxVo f1x°kpI"yR.ӆ+`P>&B~zzxV#ּ#m[nQ8H65w>t81xſƏ[mƱX%K$zMGe,| /O>o 'Z֝+voe.g *O`Vs'd ?6afҥE !qʩ(>$Ú:¯xJzM֎dBd<qcoZ׫Q@S ſB~ okG._ z?|[D'{oZ׫Q@S ſB~ ok_֟gpt)QK7|BEմ,s3FrrX&aq\W/a~ο>/XM_ɯC8t?×:g?Y!*>Ƅ|?gWڍ=I▱-D,D _r'о|#OU`.Ze滹ZS qDW&9KH@VJ}:GޙuxvK-7UӤ bi-Gƌك29<; / 6emV kvۺ2JѝJ3J)# 5 ;=g.u_i2Ý{*P5&d fkß<==Qu-6H[{`y^$fسV.v.w1Zdg?"Dty>3+mbe1[;j;@#>9~?~mRu̾yB.,-Գ=LfrXeHr%~|~~'E<7+ό{mB/u9,bi #o%cH۞PI^'4)Ikb:5u}|UmoX|Aݛ[)81ltf!A$(rxUi6βOׯ5cMV 9C<CX L,5-[Ieic(0!D[xBWR#5 +\^UOEUQ̃go OeњHSto3?3n:/ͿgӠХ  .QܓaGTNrIEx Wx?ʪ9r2ׇ>x;kePA.u5û03<䑣%KbG~+Wx?ʪ?Ex ;2 OIxATȿh(M;b<8?Z_?^5ߒ[q,;xLp$hT$^RbQ3|BQKV*jc&:lP%B;`Gj_]%3Ǿp`W]j&LR;Q\\G ?㗆'X?`_ɾ.qݣ7}3L?Wş-+|3v~_H ntHLuÆ 於~|Ckv?h֚ kqi9?>3]u+&$)$'63z%ǽ>"񕦿[Ck\iaowu},$vq<];ǚ?Ft˝>c!$A+ @Wsߎa.c]Ocj-.$y#XNeqFejj?&׮3x>Fޯ]K9r1ڨ>2z5&Ey?+Zܙ/)Smg𾤇=c/iZ=Z=)Rԏo+(ů|6[h&1jpD3W =-M#:ojq wZKR}W6Y<%xbYɤipZ՚5↺I(Yk[k $R;^OK°~k}^?غk_½jfXo>%@:k+*Gh[Z 7^9|uKQז!nZ{XJcٝQi v(@uO9|?ikh:t^UmDI'1$f%I$^n?g+ <wxGgy--o$v,92@ |.NԓiZ Eo&lƏT͟״QN\T͟ oY(T|kڗs_]OHӬuI -ԗQ`lL,3g5w¿uPt]*<_,3g4 Eo&lƽ.Õ/ oY8/xWiɪ$:|e2khM@S#$#(fըvAERQEQEQEQEQEQEQEQEQEQEQEQEQEg{*GxsĖ>%Ѯ-WRY].i-YLo8V) A  w:5v/%nnmS?U''̕C|q"GG'; _jW%uu{˝[Ub$Gj\ )#GhPuPEPEPEPEPEPEPEA{}muwqc/4zx9u`rs(<+'Y/ ^^\n+xƿ+"Z6ǒ,澓߻ch'wU{0HbFἷdp}h+[ I S# ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<6ck;5}&MI%᲍gL*!W ,/7/|)wRgԼG N!þd+Fg+/-AW*LPzCv妁I!ഌ4si5ߗʶԽv]/6⿉fKþּܧWκScp9Ddm}Oxwĺ MvϣiЯm VId[h 1ExOe/aޗ1 [OW_YI7G wPj((((((((((((((((((((((((++Q96<8,B7Q݋V B0Iف_:ω(xgJ)>4k&Eyu-/I5 -pTr\o )wZ5ޑc>i,ͤSyAtY6 6ќg\(((((((((((((((((((((_ ]h>0G{k+hUZuBǾ$܁Q^ _[ԕ&־-P*7gwmŜr+xB8ݹ՛'(D*Y:=ڊQMQ "_)?~9XsݩDȪ+ PExg(D(/߈??E9/i{x^ә`&ᦔI/Eݸڔ$p۹WxO(D(/߈??E9WˆoO"QMQÝExO(D(/߈??E9W0{mn]9mI'RҤek+yZwm| U7bV)I=Ί(PQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWN{% oDz,?f,$(X4Epն편F=&[3;<[Y-{ >Nxl,xG|G㏄ZFog |wG浞/ء|atzkg,>+;⯂.|7q{&VwFx;ou$}_lc:&-"}#ıv@څZKj<0IA$^cCcѿi}?Wty[:ufmKL[cRcYL RBB6|+mzOkVx ZŤz^4e"ď$KRʹ0Vf=O|?u5#&RH.,i%d%w0[`ٷSxǗW=lJBw69//XW$b@g<]#Nu#~5)^. '-s4+ D#bW}mb֫?Q<䵎Ijbp<+#moޏ\#Ed Fұbo}ßEᏆ< B]ȁZU9Px$.qC|?Z|oKSE]BLݖ潙ZCX\>6h?ſ;܄+|UvC-'A<+$OWgP2n~x3|EY𶍦&pf18n8Qӿg G^>iZ;דjZӵwk1UUPP8xzѾ"\6}s+ \VX-UO=lЩ^)xtO]}k` EmuwdGtԩpI NxÞ,>? Xjp麼sŭĐ(h.r B'g_Umb[- &M$tX|F8Ok\^j6@MNC6F?v:5ksDtKI~},2@ 0ǂ39jQ¯ : :a?$I¶:ƛ[.>ɖ%qۅ8|W'8Q7XvȲm:t4pZ(6 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ~,0⇇T.L}ګ +Ik#r;j(馡?xL@ m|zo|))1NDx~8Ѓ.OG~8Ѓ.O^ϊ1Er#>u{z>u{z|VwAxGڞGa閲]K!4.I?J.ÑDy/e_|;kIdxȈ1_|Дlt5?~8Ѓ.O__g*k:I" lY9IHɊN~VZg4HLrIgG<ŝ31$kv$ERQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW+CឃQzݽ̖*+#e` Q9Q@M37nF<; bTIw[X 2s~ţivvk @s3M+*P^G%9f$9.gĿ<3zzQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE_a4]N-3z8I-U9C"o+ #׮jgV6sr ?R4[&'m C1 †O>f N9~2J32gr#I%;<\2rHe`BV#;I|e8w}#qu!my'6萴 d1(BK7 E]ZX$> ԼT6wKg4K%QBˏC*Uf`QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEj/4o7"B\Vkh3r{^ZE-RK+ۯ xz lj3KְҢ>0̂Xr3QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWbxç_Mbxdl 1, I1y4oseRO]IK⦵vDϚ4Qg-RiZVb?ݎ4Q@#~^gz^oek{AqY]6ז$ 9y"Ff6xg s_u>8 xHXy׍n^WP3;*FpV,Wijԏo[#uoHՒ[k.xnZI>YV1\}ܸ,7/~-qOz@k 8_O42z]w? _@ZXxGG,˘#Eo*X)HI1 A6|iqij0Ete%8Wn# c| vEٞETQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@xJ??.bWehpx.h9ŽJ!覽? ]3TkYm[ OOɼӮ`u ÐUY&r~o]xpIue{I#-W1 К75 >ĝK[|f=:h>Rr,A[ .Cq x~&FTh 5_iwcw(lF{VfW.dl EBB4D F.sYK{k\Ny4 '#zjzjcj^4ZT/t qgpCT|U$M־)i~q>OJr\O}rg"YNz%x gt Lmmb$F$,ĒI$I{6h@(((( Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/mapping/mapping.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 3322 Text-content-md5: 1ef31cea3e263dbb3703b9c46aa2e3c8 Text-content-sha1: 387b4aa6a6df3892d9ccce308e701862acf154a8 Content-length: 3367 K 13 svn:mime-type V 10 text/plain PROPS-END Mapping

Mapping

Definition

A mapping is a correspondence between model elements from source and target models.

Motivation

Mapping is useful for several types of application: model/domain equivalence (e.g., Eclipse/ECore or OMG's MOF to UML mapping), model transformation, merging, comparison, migration, definition of bridge, problem to solution relationship. The objective is to explicitly declare a correspondence between a source and a target and to use it in different aspects of the production. This allows more flexibility when the source, the target or the correspondence evolve.

Structure

There exist four types of mapping relationship: [1-1], [1-N], [N-1] and [N-M].

Possible mapping relationships between source and target model elements

Figure 1. Possible mapping relationships between source and target model elements

The [1-1] and [1-N] mappings are the most used types of mapping (e.g., a concept is mapped into a UML class for the [1-1] mapping, or mapped into a UML Class and Attribute for the [1-N] mapping). Model merge and model transformation are examples of [N-1] mapping, when several source elements allows deducing one target element. The [N-M] mapping means several source and target elements are jointly implied for the realization of a mapping. For reducing complexity and maintenance, the N cardinalities can be reduced in applying N times the same kind of mapping, such as transforming the [1-N] mapping into N [1-1] mappings. A mapping is stored in a mapping model containing all source to target model element relationships.

Mappings, such as toward UML, need extensions (e.g., UML stereotypes and tagged values). Extensions are to be managed as model elements. As a consequence, there are two target models, the UML model and the extensions model, what infringes the rule to have one source and one target model. The solution is to compose the two target models in order to reduce them into one target model. The same operation can be applied at the source level.

Model Mapping

Figure 2. Model Mapping

A complete mapping management environment provides mapping services in the bidirectional way.


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/productionPlan Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/productionPlan/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/productionPlan/images/productionPlanStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 12228 Text-content-md5: daef2e9ecdac998aedae9a8a3f77e95e Text-content-sha1: 9c73b9c8e7ff7372d5e3eb71d46d45269889b70b Content-length: 12287 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?SUԐj3$3=&gv]˰mYT( p[p 4dG?IҏDXzΥ vGm g2.dF#;CLE& ?OMCR.*Y\Ƴ;kd(%bϜ~\յ+Ӵkyl O=GxV`6ݻ@?OM& +BV/;%入֫ğfvQe#$DX}=jx赭/I6-¤Rp̅vvr1@j^M??/7T7qjSK+e2]X^chmB`>RAIm⽷U5{{khRp Bɓ'o'5܁YQ. H0# }s~?LI8fZeC}EQP~!l@QTuMbFKE5Tgy\TE ‚p YxA #ig33٣] `=h~=2+ۛoZimXJV، d|FF( ~'{n"#έiZZ}Hk[`V+R IG]˕AT?X/_#tec@C-K85}I?6)Kٍ6)1ԫC896~ϺkƞF]*f|(uj&V? X/_#tP ߏaEţÝeza+rI#XX/_#uI3MԬmnPq^mQE|! 3m(,x[Z_ \j&}:.RV "S, I֧ WCt_MmVF#$ `ʤY/?U]I/?U]]GG4JKY1G"Mdq,|OKuqb,la#זۧh!a, ңv~q}ZsIN"mgdZ," xoA''A_QPMjIu#zXԑη+h6oq%,>c/ Q@m7u4"N}JK:,;% $>\滭KCuu].b$.Pqү@C]4 t?E/?U]^R>.SQԮby.T1mAӀ^Ep>!_׶.BKve,Iw<O'FFNA/->!-MFa8确b3}1i&u#a"e5$ڥY[zSBhח@o d4K}mNG-=9ۚAh'zڬ{"h =RGIГmo_'SO;@)ϡxQF(ؤA yLSG&X3p1N׼wN>֖^JMO.Fm_z :?u? HuMհѼ%X㳐G"o, /9ݐ? kjiזr<5XbKzqO{Om?z :RDž𦳤C~}{=J $o G qY1xXHtfçZ)-iF_q* I6Гm5)j>佹dfXGrɑpzf𞫭BT;X"[Usq?I-3{0:kOo_'SO;G޿BNvR:smGU2)K[xx]{6pj2UlHĒI9$9lFQ]o>^>mCR;Ua6Fr1':+᎛h.Ե4 bd\ (8P(h(((((((CEB(0(((((((((((((yᶁTF =I=<'K߆BBZޕ :F}*bx{LҼ;6[yv؁wc'q@QEQEQEQEQEQEQEQE!E! ESQEQEQEQEQEQEQEQEQEQEQEQEQEW=˙l\PK\d)?B+M W0<3Ē"tu PA(uMFƏ%֧vtmmoslR&}YؒT 5[ml--A8A`%kLmF8ۣM1Z|#jZ}jܽ%@YC 0pO\PoRTЮ.kQptu~]B(ϮK@Q@Q@Q@Q@Q@Q@Q@hHBEQEQEQEQEQEQEQEQEQEQEQLhy#5.I$Erp["Zntν#X݂G8?4Oi?#:+?O}Ɵ 'ztu4W-'4?OǔͿbIk=䍑m`A?ӏt2N>֐)g$"P3~x;*+?O}Ɵ 'zh[4Oi?#'4 o>M^ Ґ\k د3M^5¿h4,vnoMQCwmʹ4 9#`FAus ( ( ( (A)((((((((((+b oP~r]Dث0>ƺ*e ;o [ iWIwMJmH w3KG[(v04{'Bw!bI=Hfϵ57R׿MM6)[ YY!aoj' Fjh;eYV(n3Óy}o5K8-L,(S $<*}+5uV׺YAuKѕ.yE.kzdN..gSYCs!sq椑FPJ?"?q6fFmef7mTf‚x{ԍ"KӯuMBNtK$I5dNGGښJ[2nyg^)|~i&D2sjvK,ܤq BJ6zBz?KKl.k{قU0O~޽fŲι&% ƔDS{b 8S:uo`O5ඏ`8rx8e Hz׉4+-AtgOy.Qd@ mFA}Gjr+]ޡ}x-ciwCgQI+Suqtɒ>瑉$rOt # 7}_?+[.G/ ^>Q\&Y|?#,dO$=^O\,W϶+3G%zok"5G$sDWS .G/ ^>C?..-Rqk)GT:1]u\,z,eROp˴+y;1liE!Q@Q@Q@Q@hHBEQEQEQEQEQEQEQEQEQEQEQEQEYCiu])har|# Ȍw*kIz&݉ iHF{CwnK{}(ItAŽ=IC"mds^\?wy(eĘp8EQEQE5ρNK HŧK>O&HrbWp0^Zsk4s*X2ApEK\%4;y.t}D2'--vFutU]7R/wG* Z(((((4Ph!hc ( ( ( ( ( ( ( ( ( (-ii.,΢R:&s€/QT-*SkCFhzzT?ūX(L 11c ZuӼ;ޭukm9#- m|iờW:ՄS纍6P-WXYȵXP.ש$xh\ۙxH*9## hiE4Ln; +E 3ԒNQִF[kJxT4A: = FiZi[NygѶ^M{n0Nu},iH m927yk'9$pWWPYZMws*om$9EQOk^$ȵ][Qo͔ \\+1;-K9"N[)9?(LuI9c%dF )= :vռ6j7xjah1Zjk^}Q6>3-MKeEYx3!9&YQ 70z #Zk" 9 l-w=׉5jZnKmkk8q22ls:#ҵ{&lX/F8VWPA_j6zƝo /<5wpkrj2,,̠# NoQi=;\Y%y'V M+#s`zzw_(,w_4d*vT'vO5vURpI ;{8n&IA$R!u# >)צLk{rl뉙C"!|ܐ@> -,/!h0'J< Î4U^KHbKR;PMô@Pyc 3WMBwZm_Vir738 \Mg`> \#R[i.-#7T0 7!`m1@C)H -qIn5SO[H BraVVOmѐC}%"Sޕ.n0'Es`;ɦFmK%: @] L xߔљ?MƚEƱ{uu5ƍix~2I&r*ޤ1%$&rYAOs"etFL;@$3\Ϗ&tSGIrg.J+U5K{ۭ2 :lo$B\DS{a 7@uů e$}rbxЗo9{.G; |qjWQKd{ViXN$־е5ּ?ρr@QEE]a۟&,F;1 ]u H}~&C5 Jo4J|(݂ܟ4K_OK-t9P{^+[Xc% QUE[ͧ4 Zx+EE\#eI'((((((4Ph!hc ( ( ( ( ( ( ( ( ( (15r}:Km?M[Zqr.7#vQ$P9`\<(TJt3NU #Tb2SG O`\jB?tKf󯡶{9bN1)ޤپ(?V]پ(?V]W?cY4ke#d#:5;}Zmwy !3. RG G ?OE嵮wgONt71cTۉ3(O\.C =B[{-% V+A$bԓ76' ]/Wq *<}S|Sce5Es@<@$! Đ9'#>.͞vlF/*+FkB[mOOKN?&>q`Q J(um^|6FI1\\IKӢ|_UxG?hRx"N2ngqsS i}ZihV%%'02}x_'D?8 :'S/TRڴ0ڲlhN]@<`y P tͬV0lW'.`/'D?8 :'PW0h1ê)-/Q7ۂ@GVFP@\to"WjV^3|_v,wgw>{Ӣ|_UxG^GU-5-Li.[|(d_)$SJ^Eѧ-Zien͎#ɇNmqtOӢ|_Ux?RbHmEݮu]Z32+G n2A 17vEpWOd'=1ǭM DŽi?>/*N<#CNTRne󍕬v`](\g*/ c_HjíXj1$|Y2&Bv!Gr+Kmݍ΢uFcGޱ1UEs4Erƍ(AEPEPEP(4RQE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@EPEPEPEPEPEPEPEPH:QE-Q@Q@Q@Q@hB? Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/productionPlan/productionPlan.html Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 1649 Text-content-md5: 0204b3fbe5d4d9a40a72f59f2c530a5b Text-content-sha1: 1f192a09ca26c226727ef54bbafdded927bff211 Content-length: 1694 K 13 svn:mime-type V 10 text/plain PROPS-END Production Plan

Production Plan

Definition

A production plan defines an orchestration of factory invocations.

Motivation

A production plan is a kind of orchestration that meets the need of ordering asset manufacturing. Orchestration with a production plan is simple because it is just a sequential set of factory invocations. Complex orchestration, for instance with synchronization points, is not addressed here.

Structure

A production plan contains factory invocations, which declared the generation steps and implicitly the assets to be produced.

Production Plan structure

Figure 1. Production Plan structure


Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/Icon_Live.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1347 Text-content-md5: 0bf6259ed99fa220357e0abb270d5892 Text-content-sha1: 626f6068268233cf3849e12279c9c7712629fd9a Content-length: 1406 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRr ߔgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxVkLU>٥)IVS"ih"MSTZJCk#Lƨ1Tn%ik.Avز3sΰ3;M&_Ιǽ==#n2 i ۈ9<"Iʈ,px}8x?A21֬.m[QV2 I"H읐bEGZhrqXy)2 'fLjll9(f5d 7>8OXH8K\2OhjI򑟘lnsё?1Bo~#E#KiHLd ((Aq:xx=~*gd16 ݟ֟' OJ.W үLņ@ 9eĞyDsKv26=l|9 F++{đ|f=M6GDFww_QH,Yff7LLD?wF5n(m}7}>1J"T3G(:Nz%A[[~ 07p(idz2'=BM[FF -kа DtF֐UGISFF6}|ŽPT1|?w$3%2H*vnrڣ <\Sv0![ٶS&I)BYL-ElP)K8, V>UR% Sz#J{H$&Jjn|Uճ"Jo*G :td~4ؾc+|M_ ,餡5Lw Ͱ H/]!~j \I%MOY;ᅦ#ظ?]5t9h}rs`Η0r-dEBS%Cݞ`wm9 |lYt`|H'#_!ImkIpFɘERMI83qd:Liz:챒uOÆIrT\:᧲nj<\}}Sd^L x'_y}x K$d AJJB2vy}FǓ(¬[ ^//:X;/o[ĵlUX/, Y.)SdDvրY&/Z%!c&=IENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/Icon_planet.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1249 Text-content-md5: efab782a72a7cfd4901749828393259d Text-content-sha1: 8e96da568752e32a9c5ec729ad01323bc5bd95b6 Content-length: 1308 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRr ߔgAMAOX2tEXtSoftwareAdobe ImageReadyqe<sIDATxڼV]hUf$&YbDjKSPR+J(/iժAb hEP"DP M Q}SJېɦnfxΝ;$[833wsEVC%%ss d9Y`d du?,CvYVhf ݵz,NHu%\)!w=ﺡg޽T4f?77;9>>;ЋB`;wS4 MF螼7`YdTٳ$n^\ġ>f,|uUZfx|̶qZ:Qg{8c ,&eQIqHEqHj='g)eg&rM&^\ \f͝+ ¶ԽW8rX,'U '4)xR3\ ,3)Dλ{P_Wf8il}h>M f61ϻ+a(D--I1K%^%ƐxNB`۱K ?P C8v, (l;CNh#/H_ϺFe%2*`8 ]IENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/Icon_plugin.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1215 Text-content-md5: cdf1eb3d0c125585db0fdac5d0abad1c Text-content-sha1: 4550612db5518418e1dac49250d0bf52b15b1310 Content-length: 1274 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRr ߔgAMAOX2tEXtSoftwareAdobe ImageReadyqe<QIDATxڼ]lTEϝ;wWd$MT?4 b&HP@bBSe>l]Zmwpܹݽj$'ܻ993s,l *J4G'/Cj+ͣ͢͡\hj5Ԇ7\ Fv-uf[5O=mNB R BP^z^J,ɉTzk ּ}?e=xfY3zf`wd2 &q e̵|ÉYTVA(/m V?,03;jj}ѱ ̏cg=8!,^EMD/f1?T(v0 vf=jU NC+U.{3 F04C>Qb@ K #Cΐ e[3Ǒ/z 7 `O|&bX?U}f(CIrsHuhj 66oChS4 (Jj|̄<)UQX@FFQMT{aXÎQ:Nu5>8j}8qpXSÎ jaXl8s<}A*[ J'vWjᤏ^L4o0JI(I#YD" 2? ya\a, 3qSXu=< p` _l8jaX)痷2[x%3kq:r=a;i Kxߑ6<⚐O9Yu BDzQJnm4tU(qP̒ _M Xv+~LiVyy?ƌr31w5FeL%juSX Oo`5Ooc#4@$)#˃$S,eRC~GeECoي 11>\KyDHPꄅ"( >C]Kk2 _- wdط𳮊uRVLc맶P⡫tSIlT=SNbU!9f|y\iBCuFeT3)L9ĺ* HH Eu*.H MA!CK ryD3 [ .B&B?ENu"vj Oobdc: Ooakz5SXd%:.RJy<`A頤k"jaPD8>F 2]TFq ]oX:ȍ_T{x W=uA: OoajWV#>Ed f匹{ƅ`Պ!ZV YU2>PQ>P@( Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/header.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 5402 Text-content-md5: 5978a51f379500e3e63e10e3a3ccefbf Text-content-sha1: d78cd14e122addaf068918631eea76cdf8c0f85c Content-length: 5412 PROPS-END #header { background:#FFFFFF url(/eclipse.org-common/themes/Phoenix/images/header_bg.jpg) repeat-x scroll 0%; height:70px; margin:0px; padding:0px; } #header .eclipse-main { background:transparent url(/eclipse.org-common/themes/Phoenix/images/eclipse_home_header.jpg) no-repeat scroll 0%; width:131px; } #header .bugs { background:transparent url(/eclipse.org-common/themes/Phoenix/images/bugs_header.jpg) no-repeat scroll 0%; width:240px; } #header .eclipsecon { background:transparent url(/eclipse.org-common/themes/Phoenix/images/eclipsecon_header.jpg) no-repeat scroll 0%; width:236px; } #header .ipzilla { background:transparent url(/eclipse.org-common/themes/Phoenix/images/ipzilla_header.jpg) no-repeat scroll 0%; width:356px; } #header .babel { background:transparent url(/eclipse.org-common/themes/Phoenix/images/babel_header.jpg) no-repeat scroll 0%; width:356px; } #header .planet { background:transparent url(/eclipse.org-common/themes/Phoenix/images/planet_header.jpg) no-repeat scroll 0%; width:336px; } #header .plugin-central { background:transparent url(/eclipse.org-common/themes/Phoenix/images/plugin_central_header.jpg) no-repeat scroll 0%; width:400px; } #header .wiki { background:transparent url(/eclipse.org-common/themes/Phoenix/images/wiki_header.jpg) no-repeat scroll 0%; width:240px; } #header-graphic { height:68px; left:0pt; position:absolute; top:0pt; } #header .eclipse-main { width:131px; } #header-graphic h1 { text-indent:-9999px; display:none; } #header-global-holder { height:68px; position:absolute; right:0pt; top:0pt; } #header .eclipse-main-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/eclipse_home_bg.jpg) no-repeat scroll 0%; width:395px; } #header .bugs-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/bugs_bg.jpg) no-repeat scroll 0%; width:442px; } #header .eclipsecon-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/eclipsecon_bg.jpg) no-repeat scroll 0%; width:313px; } #header .ipzilla-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/ipzilla_bg.jpg) no-repeat scroll 0%; width:518px; } #header .babel-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/babel_bg.jpg) no-repeat scroll 0%; width:518px; } #header .planet-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/planet_bg.jpg) no-repeat scroll 0%; width:462px; } #header .plugin-central-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/plugin_central_bg.jpg) no-repeat scroll 0%; width:417px; } #header .wiki-global { background:transparent url(/eclipse.org-common/themes/Phoenix/images/wiki_bg.jpg) no-repeat scroll 0%; width:466px; } #header-global-links { height:26px; position:absolute; right:0pt; top:0pt; width:335px; } #header-global-links ul { margin:0pt; padding:4px 15px 0pt 0pt; text-align:right; } #header-global-links ul li { display:inline; } #header-global-links ul li a { background:transparent url(/eclipse.org-common/themes/Phoenix/images/global_links_divider.gif) no-repeat scroll 0%; border-color:#FFFFFF; border-width:0px; color:#333366; padding:0pt 5px 0pt 10px; text-decoration:none; text-transform:uppercase; } #header-global-links ul li a:link, #header-global-links ul li a:visited { } #header-global-links ul li a:hover { text-decoration:underline; } #header-icons { padding:0pt 20px 0pt 0pt; position:absolute; right:0pt; top:33px; } #header-icons img { display:inline; margin:0pt 0pt 0pt 2px; } #header-eclipsecon-info { } #header-eclipsecon-info h2 { text-indent:-9999px; } #header-eclipsecon-info h3 { text-indent:-9999px; } #header-nav { float:left; white-space:nowrap; } #header-nav ul { margin:0pt; padding:7px 0pt 0pt; } #header-nav ul li { color:#2E2C51; display:inline; } #header-nav ul li a { background:transparent url(/eclipse.org-common/themes/Phoenix/images/nav_divider.gif) no-repeat scroll left center; border-color:#FFFFFF; border-width:0px; color:#2E2C51; padding:0pt 5px 0pt 10px; text-decoration:none; text-transform:uppercase; } #header-nav ul li a:link, #header-nav ul li a:visited { } #header-nav ul li a:hover { text-decoration:underline; } #header a.first_one { background:transparent none repeat scroll 0%; } #header-menu { background:#FFFFFF url(/eclipse.org-common/themes/Phoenix/images/menu_bg.jpg) repeat-x scroll 0%; height:33px; margin:0px; padding:0px; clear:both; } #header-utils { margin:0pt; margin-top:5px; float:right; white-space:nowrap; position:relative; z-index:20; } #header-utils form { float:left; padding:0pt 15px 0pt 0pt; } #header-utils form input.input, #header-utils form input.button { vertical-align:middle; } #header-utils form input.input { width:120px; } #header-utils ul { float:left; margin-top:4px; } #header-utils ul li { background:transparent url(/eclipse.org-common/themes/Phoenix/images/util_links_divider.gif) no-repeat scroll left center; float:left; list-style-image:none; list-style-position:outside; list-style-type:none; padding:0pt 15px 0pt 20px; } #header-utils ul li.rss_feed { padding-bottom:0px; } #header-global-links ul li a { font-size:0.8em; } #header-nav ul li a { font-size:0.8em; } #header-utils ul li.text_size a { color:#2E2C51; } #header-utils ul li.text_size a.smallText { font-size:80% !important; } #header-utils ul li.text_size a.largeText { font-size:120% !important; } Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/large.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 29 Text-content-md5: 814b753ae1d76311ca2944f31c3129d5 Text-content-sha1: 3333c1e4a93b6d0969cbe7db1d0690cdbb5c65df Content-length: 39 PROPS-END body { font-size: medium; } Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/layout.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 4683 Text-content-md5: 8bd79c11912fa5731559441f6427e614 Text-content-sha1: 44c87ca69c754dffc5ceae1ef32a4a43886def90 Content-length: 4693 PROPS-END /* bug fix 118981 */ /* General Rules */ body { margin: 0; padding: 0; } img { border-width: 0; } ul, li { margin: 0; padding: 0; } .clearer { visibility: hidden; clear: both; } /* Header Rules */ #header { height: 68px; position: relative; } #header img { display: block; /* help IE display the logo properly */ } #searchbar { height: 68px; position: absolute; right: 0; top: 0; width: 400px; } #searchbar .transition { bottom: 0; position: absolute; left: 0; } #searchbar .header { bottom: 26px; position: absolute; left: 100px; } #searchbar form { position: absolute; bottom: 3px; left: 120px; margin: 0; padding: 0; } #searchbar input { border-width: 1px; height: 15px; padding: 0; margin: 0; } #searchbar input.button { border-width: 0; height: auto; margin: 0 0 -1px 1px; vertical-align: bottom; } #headernav { top: 10px; right: 10px; position: absolute; } #headernav li { border-width: 0 0 0 1px; float: left; padding: 0 10px; } #headernav li.first { border-width: 0; } #container { min-height:100%; margin-left:155px; } /* Left Column Rules */ #leftcol { float: left; width: 140px; min-height:100%; } #leftnav { margin-bottom: 30px; } #leftnav li.selected { padding: 8px 0 8px 5px; } #leftnav a.selected { padding: 0px 0 0px 5px; } #leftnav, #leftnav ul { /* all lists */ padding: 0; margin: 0; list-style: none; /* float : left; */ width : 11em; margin-bottom: 30px; } #leftnav li { /* all list items */ position : relative; border-width: 0 0 1px 0; width: 155px; } #leftnav li a { width: 140px; width : 140px; display : block; text-decoration : none; list-style-type: none; padding: 6px 0 6px 15px; } #leftnav li a:hover { list-style-type: none; } #leftnav li:hover ul ul, #leftnav li:hover ul ul ul, #leftnav li.sfhover ul ul, #leftnav li.sfhover ul ul ul { } #leftnav li:hover ul, #leftnav li li:hover ul, #leftnav li li li:hover ul, #leftnav li.sfhover ul, #leftnav li li.sfhover ul, #leftnav li li li.sfhover ul { /* lists nested under hovered list items */ left: auto; list-style-type: none; } /* Top Navigation Rules */ #topnav { border-width: 0; height: 2.5em; margin-left: 0px; } #topnav ul { float: left; height: 2.5em; } #topnav li { float: left; display:block; height: 2.5em; } #topnav a { display: block; line-height: 2.5em; padding: 0 10px; } #topnavsep { border-width: 1px; height: 2px; margin-left: 0px; width: 100%; line-height: 0; font-size: 0; } /* Middle Column Rules cannot have relative position with dynamic menus */ .fullCol { float: left; width:98%; margin-top:10px; margin-left:5px; } #midcolumn { float: left; padding-left: 25px; width: 80%; padding-top: 10px; } #midcolumnwide { float:left; padding-left: 25px; margin-right:215px; padding-top: 10px; } #midcolumn li { margin-left: 16px; } .midlist { margin: 10px 0 10px 25px; } .homeitem { /* position: relative; */ border-width: 0 1px; float: left; margin: 10px 0 10px 1%; width: 48%; } .homeitem h3 { padding: 3px; margin: 0; } .homeitem ul { margin: 0px 20px; } .homeitem li { margin: 5px 5px; padding: 2px 5px 6px 0px; } .homeitem p { padding-left: 5px; padding-right: 5px; } /* NEWS rules */ .homeitem3col { border-width: 0 1px; float: left; /* margin: 10px 3% 10px 0; */ margin: 10px 3% 10px 1%; width: 97%; } .homeitem3col h3 { padding: 3px; margin: 0; } .homeitem3col h4 { margin: 3px; } .homeitem3col ul { margin: 0px 20px; } .homeitem3col li { margin: 5px 5px; padding: 2px 5px 6px 0px; } .homeitem3col p { padding-left: 5px; padding-right: 5px; } /* Right Column Rules */ #rightcolumn { top: 0px; /* position: relative; */ float: right; margin-right: 3px; width: 15%; } #rightcolumnwide { float: left; width: 200px; margin-left:-200px; } #widecontainer { float:left; width:100%; } .sideitem { border-width: 1px 1px; margin: 20px 0; } .sideitem h6 { margin: 0; padding: 3px; } .sideitem ul { margin: 10px 2px 10px 10px; padding: 0 0 0 15px; } .sideitem ol { margin: 10px 2px 10px 10px; padding: 0 0 0 25px; } .sideitem li { clear: both; } .sideitem .inset { float: left; margin-right: 3px; } .sideitem p { padding: 0 2px 0 2px; } /* Footer Rules */ #footer { width:100%; clear: both; margin: 0; height: 30px; text-indent: 14px; line-height: 300%; font-size:70%; text-transform: uppercase; } #footer p { margin: 0px 20px 0 10px; padding: 0; text-align:right; } #footernav { float: left; margin: 0; padding: 0; } #footernav li { float: left; } #footernav li.first { border-width: 0; } .bold { font-weight: bold; } #rightcolumn, .homeitem { clear: right } Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/layout.htm Node-kind: file Node-action: add Prop-content-length: 45 Text-content-length: 6216 Text-content-md5: da5ee2ce84baab972b0cb2433b97a9bc Text-content-sha1: d6743da7590c9b64c4b45807ad7c2ab0c59d64e0 Content-length: 6261 K 13 svn:mime-type V 10 text/plain PROPS-END 404 File not found








404 File not found

We're sorry, the page you requested cannot be found. Below are some links that may be useful.

Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/print.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 65 Text-content-md5: dd3e110dd6701512fa6ccfa74ef6673f Text-content-sha1: a0d73d3dbe54b1caded7fca7fa69faf7a489cf4f Content-length: 75 PROPS-END #header, #topnav, #topnavsep, #leftcol { display: none; } Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/printer.gif Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 1033 Text-content-md5: 3f3539a63b0e9b598a7bbd59f71d96ec Text-content-sha1: ce9729920b40945b0f3dd24cadb4e32409c60b03 Content-length: 1092 K 13 svn:mime-type V 24 application/octet-stream PROPS-END GIF89aدڰ::C^@]VtToXqfivzQrQqUuUvUtUuUtUuUuVuVu]|b`eehhЁ΂SuTvVwWx\}_kj΂΂Α Ŀ”•ØŚ–Ŝáܿm͓ѣC͠B!, H`AA T >".RǐCF8qѡD~) 9qqg  8 47c A_\0!B0\"`NTr b` 00f؜`TbH+KD&XJ0D )H葄&r";<1HdĀC60! F2EqP@ @>BD 0 ; Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/small.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 28 Text-content-md5: 02e23c78cafb983d8268c5479e145dfb Text-content-sha1: 52969a259bd0840b0675a13920e8dce35864d045 Content-length: 38 PROPS-END body { font-size: small; } Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/styleswitcher.js Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 1840 Text-content-md5: 36f2dae0bde09d0549bf746a33348d4f Text-content-sha1: d0cf6e998e216eb62139fa75ecf2db254f5ed94b Content-length: 1850 PROPS-END function setActiveStyleSheet(title) { var i, a, main; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } } function getActiveStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); } return null; } function getPreferredStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title") ) return a.getAttribute("title"); } return null; } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } window.onload = function(e) { var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); } window.onunload = function(e) { var title = getActiveStyleSheet(); createCookie("style", title, 365); } var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/visual.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 7725 Text-content-md5: 2413f6c3df3b03eedafe73a4d87b42ab Text-content-sha1: 7d9fbb55323c93103f81cab3e7cd88409a572f60 Content-length: 7735 PROPS-END /* General Rules */ body { background : #FFFFFF; /* font-family: sans-serif, helvetica, arial; */ font-family: arial,sans-serif; /* font-size: .8em; */ color:#000; } body { font-weight: normal; font-style: normal; } h1 { color: #336; /* font-size: 1.5em; */ font-size: 150%; } h2 { color: #000; /* font-size: 1.4em; */ font-size: 125%; } h4 { color: #336; /* font-size: 1em; */ } h5 { color: #003366; /* font-size: 1.4em; */ font-size: 125%; } a { font-weight: bold; text-decoration: none; } a:link { color: #636; } a:visited { color: #336; } a:hover, a:active { color: #636; text-decoration: underline; } /* code { font-size: 100%; } pre { font-size: 100%; } */ /* Header Rules */ #header { background-image: url(/eclipse.org-common/themes/Phoenix/images/header_bg.gif); background-position: top left; background-repeat: repeat-x; } #searchbar { background-image: url(/eclipse.org-common/themes/Phoenix/images/searchbar_bg.gif); background-position: top left; background-repeat: repeat-x; } #searchbar input { background-color: #ffffff; border-color: #56548D; border-style: solid; color: #333333; /* font-size: 0.9em; */ font-size: 90%; } #headernav { /* font-size: 0.9em; */ } #headernav li { border-color: #ccc; border-style: solid; list-style: none; } #headernav a, #headernav a:link, #headernav a:visited { color: #ccc; } #headernav a:hover, #headernav a:active { color: #fff; } .smallText { font-size:small !important; color:#ccc; } .largeText { font-size:large !important; color:#ccc; } /* Left Column Rules */ #leftcol { background-color: #ffffff; color: #fff; } #leftnav li { border-color: #7A79A7; border-style: solid; } #leftnav a, #leftnav a:link, #leftnav a:visited, #leftnav a:hover, #leftnav a:active { background-color: #595791; background-image: url(/eclipse.org-common/themes/Phoenix/images/leftnav_bullet.gif); background-position: 3% 50%; background-repeat: no-repeat; color: #fff; /* font-size: 0.9em; */ text-decoration: none; font-weight: normal; } #leftnav a:hover, #leftnav a:active { background-color: #8583B2; background-image: url(/eclipse.org-common/themes/Phoenix/images/leftnav_bullet_hover.gif); color: #292556; } #leftnav a.nolink, #leftnav a.nolink:link, #leftnav a.nolink:visited, #leftnav a.nolink:hover, #leftnav a.nolink:active { background-color: #595791; background-image: url(/eclipse.org-common/themes/Phoenix/images/leftnav_bullet.gif); background-position: 3% 50%; background-repeat: no-repeat; color: #999999; /* font-size: 0.9em; */ text-decoration: none; } #leftnav li.separator { border-color: #7A79A7; background-color: #7A79A7; border-style: solid; } #leftnav a.separator, #leftnav a.separator:link, #leftnav a.separator:visited, #leftnav a.separator:hover, #leftnav a.separator:active { background-color: #7A79A7; background-image: none; color: #fff; /* font-size: 0.9em; */ text-decoration: none; } /* Top Navigation Rules */ #topnav { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabbg.gif); background-repeat: repeat-x; color: #999; /* font-size: 0.9em; */ } #topnav li { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabbg.gif); background-repeat: repeat-x; list-style: none; } #topnav li.tabstart { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabstart_first.gif); background-repeat: no-repeat; } #topnav li.tabstartselected { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabstart_selected_inline.gif); background-repeat: no-repeat; } #topnav li.tabseparator { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabseparator.gif); background-repeat: no-repeat; } #topnav li.tabseparatorselected { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabseparator_selected.gif); background-repeat: no-repeat; } #topnav a, #topnav a:link, #topnav a:visited, #topnav a:active { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabbg.gif); background-color: transparent; background-repeat: repeat-x; color: #333; font-weight: bold; text-decoration: none; } #topnav a.tabselected, #topnav a.tabselected:link, #topnav a.tabselected:visited, #topnav a.tabselected:hover, #topnav a.tabselected:active { background-image: url(/eclipse.org-common/themes/Phoenix/images/topnav_tabbg_selected.gif); background-color: transparent; background-repeat: repeat-x; color: #fff; font-weight: bold; text-decoration: none; } #topnav a:hover, #topnav a:active { color: #000; } #topnavsep { background-color: #7A79A7; } /* Main Content Area Rules */ #midcolumn a { font-weight: bold; } /* Middle Column Rules */ .midlist { margin: 10px 0 10px 25px; list-style-image: url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); } #midcolumn ul { list-style-image: url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); } .homeitem { border-color: #669; border-style: solid; /* font-size: 0.9em; */ } .homeitem h3 { background-image: url(/eclipse.org-common/themes/Phoenix/images/header_bg.gif); background-position: top left; background-repeat: repeat-x; background-color: #669; color: #fff; /* font-size: 1.1em; */ font-size: 110%; } .homeitem li { list-style-image: url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); border-style: dashed; border-color: #669; border-width: 0 0 1px 0; } .homeitem3col { border-color: #669; border-style: solid; /* font-size: 0.9em; */ } .homeitem3col h3 { background-image: url(/eclipse.org-common/themes/Phoenix/images/header_bg.gif); background-position: top left; background-repeat: repeat-x; background-color: #669; color: #fff; /* font-size: 1.1em; */ font-size: 110%; } .homeitem3col li { list-style-image: url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); border-style: dashed; border-color: #669; border-width: 0 0 1px 0; } .homeitem ol li { list-style-image: none; } .homeitem3col ol li { list-style-image: none; } /* Disable the dashed separator for list items */ li.nodash { list-style-image: url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); border-style: none; } /* Right Column Rules */ .sideitem { border-color: #CCC; color: #000; border-style: solid; /* font-size: 0.9em; */ font-size: 90%; } .sideitem h6 { background-color: #ccc; background: url('/eclipse.org-common/themes/Phoenix/images/bar.jpg') -20px -20px !important; color: #333; font-size: 110%; font-weight: bold; } .sideitem ul { list-style-image: url(/eclipse.org-common/themes/Phoenix/images/bullet.gif); } .sideitem li { } /* Footer Rules */ #footer { background-image: url(/eclipse.org-common/themes/Phoenix/images/footer.jpg); background-position: top left; background-repeat: repeat-x; border-top: 1px solid #7A79A7; border-bottom: 2px solid #7A79A7; color: #53528a; } #footernav { list-style: none; } #footernav li.first a{ background:none; } #footernav li a{ background:transparent url(/eclipse.org-common/themes/Phoenix/images/nav_divider.gif) no-repeat scroll 0%; padding:0pt 0px 0pt 10px; } #footernav a, #footernav a:link, #footernav a:visited { color: #663366; } #footernav a:hover, #footernav a:active { color: #663366; } .poll_start { background-image: url(/eclipse.org-common/themes/Phoenix/images/poll_start.jpg); background-repeat: no-repeat; } .poll_bar { background-image: url(/eclipse.org-common/themes/Phoenix/images/poll_bar.jpg); background-repeat: repeat-x; } .poll_end { background-image: url(/eclipse.org-common/themes/Phoenix/images/poll_end.jpg); background-repeat: no-repeat; } Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/style/widget02.css Node-kind: file Node-action: add Prop-content-length: 10 Text-content-length: 4337 Text-content-md5: 758f5922929c48507a99cfac2c87d234 Text-content-sha1: b820c56b421b82f8c41049ee0d6831c64ed713ee Content-length: 4347 PROPS-END .at15a{border:0px;padding:0px;margin:0px;width:100%;width:230px;height:0px}#at15a1{border-bottom:1px solid #eee}#at15a2{border-top:1px solid #eee}#at15s{background:#fff!important;border:1px solid #ccc!important;padding:1px!important;margin:0px!important;float:none!important;overflow:visible!important;width:230px!important;line-height:1em!important;font-family:arial,helvetica,tahoma,verdana,sans-serif!important;font-size:12px!important;text-align:left!important;color:#666!important}#at15s_head{position:relative;background:#eee;padding:4px;cursor:default}#at15s_head_brand{position:absolute;top:4px;right:4px}#at_send{background:#eee;cursor:pointer}#at_share{padding:4px}#at_share .at_item{background:#fff!important;width:104px!important;padding:2px 3px!important;float:left!important}#at_share .at_item_hover{background:#f5f5f5!important;width:104px!important;padding:2px 3px!important;color:#000!important;float:left!important}#at15s_foot{position:relative;background:#eee;height:11px}#at15s_foot span{display:block!important;position:absolute!important;top:1px!important;right:5px!important;background:url(http://s7.addthis.com/static/t00/mini.gif) no-repeat!important;width:50px!important;height:9px!important;cursor:pointer}#at_email{padding-top:5px}.at15e_row{height:28px}.at15e_row label,.at15e_row span{padding-left:10px!important;display:block!important;width:60px!important;float:left!important}.at15e_row input,.at15e_row textarea{display:block!important;width:150px!important;float:left!important;background:#fff!important;border:1px solid #ccc!important;color:#333!important;font-size:12px!important;font-weight:normal!important;padding:0pt!important}.at15t{display:block!important;height:16px!important;line-height:16px!important;padding-left:20px!important;background:url(http://s7.addthis.com/static/r04/widget02.gif) no-repeat left;cursor:pointer}.at15t_more{background-position:0px 100px}.at15t_000{background-position:0px -0px}.at15t_aim{background-position:0px -16px}.at15t_aolfav{background-position:0px -32px}.at15t_ask{background-position:0px -48px}.at15t_backflip{background-position:0px -64px}.at15t_ballhype{background-position:0px -80px}.at15t_bebo{background-position:0px -96px}.at15t_blinklist{background-position:0px -112px}.at15t_blogmarks{background-position:0px -128px}.at15t_bluedot{background-position:0px -144px}.at15t_buzz{background-position:0px -160px}.at15t_delicious{background-position:0px -176px}.at15t_digg{background-position:0px -192px}.at15t_diigo{background-position:0px -208px}.at15t_email{background-position:0px -224px}.at15t_facebook{background-position:0px -240px}.at15t_fark{background-position:0px -256px}.at15t_favorites{background-position:0px -272px}.at15t_feedmelinks{background-position:0px -288px}.at15t_friendfeed{background-position:0px -304px}.at15t_furl{background-position:0px -320px}.at15t_google{background-position:0px -336px}.at15t_kaboodle{background-position:0px -352px}.at15t_kirtsy{background-position:0px -368px}.at15t_linkagogo{background-position:0px -384px}.at15t_linkedin{background-position:0px -400px}.at15t_live{background-position:0px -416px}.at15t_magnolia{background-position:0px -432px}.at15t_misterwong{background-position:0px -448px}.at15t_mixx{background-position:0px -464px}.at15t_multiply{background-position:0px -480px}.at15t_myspace{background-position:0px -496px}.at15t_myweb{background-position:0px -512px}.at15t_netvouz{background-position:0px -528px}.at15t_newsvine{background-position:0px -544px}.at15t_pownce{background-position:0px -560px}.at15t_propeller{background-position:0px -576px}.at15t_reddit{background-position:0px -592px}.at15t_segnalo{background-position:0px -608px}.at15t_shadows{background-position:0px -624px}.at15t_simpy{background-position:0px -640px}.at15t_skrt{background-position:0px -656px}.at15t_slashdot{background-position:0px -672px}.at15t_spurl{background-position:0px -688px}.at15t_stumbleupon{background-position:0px -704px}.at15t_stylehive{background-position:0px -720px}.at15t_tailrank{background-position:0px -736px}.at15t_technorati{background-position:0px -752px}.at15t_thisnext{background-position:0px -768px}.at15t_twitter{background-position:0px -784px}.at15t_yahoobkm{background-position:0px -800px}.at15t_yardbarker{background-position:0px -816px}.at15t_netscape{background-position:0px -576px} Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/viewpoint Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/viewpoint/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/concepts/viewpoint/images/viewpointStructure.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 66616 Text-content-md5: d2aa8f9e232597271d8c1816c48db18b Text-content-sha1: 9bcde1714001b67bde04180949e6bdfc8f99e87a Content-length: 66675 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC     C   V" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S((((((((( ~2Ӿ+^Nd^c>u qF#sܐ+4>3j5>1״9}'>KRZ!2ٳ5 wW{Ug6ǖ;8|EV?>"uEx?SOB5'0&-z"H&Iat@"]erهm[^4捣͢ˤkz>=-щ65[b`猼h"3G/Z$Q  [)<)>Q&qo0A 3Zauy[V^1˃ڹ?|S]3BkK$~&{vP-S2H-"@ >"uE?տ"_>G!7I~-)⻻1G1T_3̬r6Fh?Yx{z=ބ&} :w}_w!IR ;g}]jG3C_.oHt_k66kPK xCr$Ly',Y䐢H?o Gh-ԋ 6]Ek$yn G/Z$Q  [+7SX:|Umj&Q좽XMԟv;x]Ʋ?!<ͷMoxOÚ6> ӴLBR7#;Uj @]=u??տ"g}]j\k _iZ=冁xIMj~, y# `I6Pdx(k_ 9_3G'+x"޳Hm|C|/X1߀Yjמ'2xSûgAmj[ y yccyj$ ׆l_O?j%EL *M'o>3}૸tb[Mc^ƓdCF~GH(Wu}'2^>^2]ɵhaOFگ v\3 o¼5شTMWurDդc&og}]jG3C_.oH/5 i9y\u{ok6fNհH/$Y V3HqBVj_j/Rg{#E\q4K2G$bVBr^GE  [(wp֭㿊cZZƚW4ek+KFLa`۲ʻ@z`i?D4V/0ysHuҼ3o\ u ;8|EV,M|AߡwgWW?M ojb/.3fP"uh{S,Nǟ EQ_s{T#mL UX'{DαfٴP۬4@jܠ*6o]_򚏶o]_Yf1KJ:ׯ; hm6%ŰGCK.YY쇧xm~-5CS%Vl,,Kw J@wY- 8yxvwߍ  SQߍ  SQt9]Keo/?5oS5j+kelm#Ɛ{'=q-M7ïES6 56h-nF#H],  }>ՙ\gok> }cV_7/CH^G hĐIA"K/WnozχM_S: Лdxb\ݐ[5|I_W4EQQKH+`C]FAo|)o|)Yo-kZk[LNe ,S4 #If9IrO٢o {WѼmyauڹ6wI06FP!Hbu}j>u}jWA#kFOxZ펝qp[]%&O2"ѣ̛JUmAeqwgmhɫGjb/u9c; Oo]_򚏶o]_򚋠C#~+0Wk ̓Kk$qF;2Hux>:|KԴ}/JKp-\UG1",Q"0 M&idQEIg[ȑ~^6#JAŜt=Et~)=53 TH,gsjU˲9Uo %ƍhܾgj.#1Kζ,G+ a/;H3xC"poŗBoɼw|xLQw6A%n#W[A_*Qr15kEk/u[Oz:hh..x!fh̩@$ab_ AWAWtO,royYz_Pxf8-=iC!EpAf0:v“ E C侎i|~˂ 4ŹSug֭l&)o+ol`2g?)u~u}j.D^;sIV—7zk{WϹIfUM,. p'Z>Mv"u`Imbc"" U ߍ  SS&owEo#Bh?!fηqoznhY ^!tB'O'$ǸkWؾWz >pιqsC(H]U(PQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE֢QEEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@yWc&gHfU+%|tmԵUl K=#9Ub3H8vQEQEQEQEQEQEQUῶ).mУ]ègyN'oo/+׫>.j7~vz7|yg߻jݣ3 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (PTX((((((((((((~?kxsPGpedXjN$$Juu%O />4e՟l47u xgXI$%êSh)g)xXee6[N>T6: EsWi3)RՒ}^OM,$wFB0y/ >ž$=4xb}jka1q8h<`koy|_5jiz2%iɃn|꤀\EPEPEPE(k3&BM#V5K-2\QުcoQzm7þ62Ii|?<$?)#F3eXSwC?.(a w4S&iΕ}"[IZk-2͸0!~+2YҼK])tӵ7tAk~iqj^K&ݢD_|9#-VZ&j io HH\O5|"6Kx3> 7j\K9V&r$n'8v[EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPZKEUQEQEQEQEQEQEQEQEQEQEQEQEO >14mwL4W67Ь̟d`A:VƏ!j9k=]Jw/" kn;\j$PD< }p뿴_xQ[ *S򩴑}j,.Pf!厽Ѿ+ixVo:^Ak;m+im<U/#$ $1/>9o_.] Mf)dz|$s_i7ǟnC4Px/<wA.Z   o?h ֩ ɯ&_|y?\į7|h߅uBW d[Z&\)mp I 'Ư*wjåiM[WD!wt 1n* #\Y8*/xͬW=w7ICn{]?o#RLE4kNq3Ou٨!~~^ > /oih[RpDqMY(#P34mOg66fgmgg 1¢"@0*PEPEPEPEPEPEPEPEPEPEy>i77{^dT_nJXPgtVfVٴY|MD7x+ _!3A֋0=~^%-x<-{Vn,֫iY-O+B3"29f ٘B}i=s.\\x~i 74m2,[0υ0+`'n/i7ڽuă3Ct:1QČW~пGӌ4W͢ti0P;'|<F2qu=|s~ ?zÿO_[F')\ t?h(#> ~)]LQ4@>1I搃릠^ i|7`j_᧌tmzT?ZBɥiT6$א;dþ3>2fSL2 fkK{w;Ư0xÿ.u/E~ԒI/cL0ͧ +&REy`Sdžu|YVӼ]FmQ~\]_j5=ܚE 硉Z2FݸikxPt MSŗ^~%̍%[hZP+O|>'x4$m":~g f&BVs>  0 0<bTW'w/|SqxÞ>#Vɧv ktu,|G xPB)`c8~_t|Rz5X;t3r!UP#0_烠sGh]K̷R2BrZIeg9,?ſ ZRs6xNՋNh$۰c{Flm]/W~)l>oJ|>t^NF[D}=fq G̻a59FxM}ej9Qlx>΁s2rFsñuOz^#<=-ěOPծcxnQd-b e#Bd&X+So>Zn^ r{U̢X#3yi$eP>u48ɅV,%*0Ug@OQ~)]esw {{ۭ:Wɶgt~Y#u AO~ԼKxg3i^⧆5->JLV,:k\ hK"J]m XOoᯅ<~`\jkj>:N T4m#Fܝ7z̸6im?/.o1!IpFֹ`NZ_è4[MW־m2~x~ѭ6htٳ%ʙ"B}%ZGyQXkl.-x,Rvy _t<'N|%5?ZTn͊x[պ~_!\(fbK+#O7&{{uy#a j!Y&k˼yalP[j{@76 ^O;n,u?8v+KNIPةm|{-:9n(.LQdtrq]Řcg]t4aK!>00## jOaIEy)/+Ƭ}%Ҵ?M8:?OxOftEy*?\G=(OxOkD=v/U_וݫ??BI &"=z/V6N΀=joD6K_??$k +6?_N3/z#?/sA(_ȗs4W;!oqI/}z+ɏ9rMܽ?{{U-h%C#/mHt/<|PYo4+]>3(2;Y s'''O<<|6%Ǝt>$f|fk|+[xTΏh6]Ra6DUv|'~Ͽu]=6PЬ{'$5B#|` H98х%HlⰲMo W3cQl̯m'lIdQN`>uVúMd1?q荫n 7t | ?'zͧo&2KbxNKpZۼac | ?'z7|#DF捧E|?LKh#$p:Mjw5袊@(((((((B@4@/*X~G'>G(/?N|%;_"0,? ͣ|_U+C6U?(/?N|%;_"¿;:}? _'#o.u;i 4SHFf>/*X~G'>G(/?N|%;_"`~d+C6T ?T9?A|1s/s)]Ovk-׋4;khTMB:K`k殿~)xW]n>>kF-|)XumJKi-Mo77L/Єf(_HN4:5:0A }vJNCPKQhS?f]b@u~MZeˋA2 *eCv̬ރiĭ+P.."$[;+$11؟tRREPZKEUQEQEQEQEQEQEQEQEQEQEQEQEQEQEy5?,5OxU?5{I$x+ `-i4H[!ge*I|um#DŽ5okBI k tDQ;Prʠ@Ck+-S>,kx㻿yDK@eӑ`GmpKq $G5t7<_vX_-,F$z ~e|>([7dυf j Јge2$(dm슑H6J3 ~%OMgomիmPCq H"7)@|:Υh&;jVV ֤l?j:cם| <>!;o7Oeo H|Ι5QEQEQEQEQEQEQEQEQMg'x̿ߋaL>ՑGgdlYLdSß yWa{B_mo2J9;A 2BG 'oo?&/d{~ձ٧Xu~ nug//c1^\g nT܈!X'6:?~OD`k}>LVeƽ L+[Kx(`$h :TPEPEP^SL7ҿr:}zyO1$JŸQEQEQEyǏ>>> 񕉻n SB\@.N efS||}[Ogi1:rwp4Jb}e݊'f<~x;k8޹(tmNCiȸo:$ Sgo~',c6;32KܘcItv^8_|q7mF]/C ^} TP@--9,:OžEo yF%hє;?Kwzń r7Ca>d%< l=(mO|3v< pue7IjR;$P#.pH{>&iwg ]Y< !l6Ȫ:( ( ( ( ( ( ( ( ( ( ( _gTb~r׭W?jOZR (PTX((((((((((((((?>9|?i 犧:~\+ D?z+h!*,*?9?~2}X?Z-S^2FG;VW=ѭHls4~ Ҽ5a`q#1ygY$gǓ]QEx4/hQHBc|g+4ՏuWG)º5Q{֒^[W̊E(#i>U|W~<1F'.Sv7a`B <). |p" Si]cuk#޲˨=ΡʣK yX@p T8hx{zM%?%gҐl+߷L*@:yNTH}#8ab5(((((oOHtjcIc?!ը(((((+MrRYf?*Ȓ k{+4 Ok<`$]^Z.έPݫGv2i.p8C^>_?֏`!OAݧ=}s<)7ImO^#I`>yNհGq]%p^7OzzƳU^ӤTFp{n:'d>ESx01x4#mU$rNx:+W$x_F 3C9s~-_zޝ &RDwUw09q"Zע((((((((&վ1؝5cHW_)iAK@Q@ j(j*Y,uQTPQEQEQEQEQEQEQEQEQEQEQEQEQEOYl|;_j~c]]("E,;UA$ڟoXck-m'FSuIoAu5cz[JnQnC=ѵB?I!$= yD`@ EPE[Q->O*&W;QA,p9<Ҁ,׌|j ūlǧX(ѼVIL_NRDŽ[Ԋ_ xOtwIV{iq͆Da`p@#!HMGÿ|wMcNҼEZh-O lp$WgoOGZ-GWuiZ}LJ&O*gھ$lT`(x]IO i6UfR]w$)i|#&lI[Svm,wV:%e4=e473ʧLkbcD<'kZtj֚FӦKnI˒aEwUI&h iN"KCe]YꚖZ>6Ie` REQEQEQEk>Ҽ= j5?!#܇ȌI&zƮޮ~`qn ɴ,=3 | |5O樞,6{PԺpKѕHNA?=1滾ּJ ߅\%M>Iw˾)#$1$jHfk'-m<-ɵ xR̺R}6uif# ExXl |ט|Y/Yh&xW6 6ʮ}+x <+SIxzC26 XB#B p%In\"⾗shWi&$F-x-YNCPڴW~&{τ/u| W^Do@Gm Z X >alE=gkhjv֧cegp6SGO;Y Ei\\) |}7]f6'is%Ǚ=OxNΕqSo}?Oiw-l`04$K}:k_Ӵ6M9V"4HahʩQ#}L Ҽ;TO$[iGSd`6(#,pBX}E|zOm|UVB fm %V.յa'j((((((B3^u+'t?M3>Kԟ<ˋvGG$,j(φ>/Y|GӔ? :qyx`5'W6|9|3 }[,W<:IogGAf)hzm&T]WLA%43)Ha ^,fwZiwOܷ6L=E<9&͇Ư=K@(m(3<)%-Lc?kº3;ۻ6mee@#i, ~Q^ms WJ6 dGހ%((((('1؛?gHU- K@Q@ j(j*Y,uQTPQEQEQEQEQEQEQEQEQEQEQEQELj4?Ğx|[mY-t*$E%aQHZě=MޯæxDz 1w$Zb%a3f29C_f}8'@@*ē4 Xa(GG?4MF.'Y^IOjiu-$hV5RU_V<_[ͯ^ZuơxLaPbUؼ;@gRׅ1zgi[3C IglH{=0Ena"RsP}x (+2KD:Mw}%1 Q*Pd5}jx;OSƁ5 +T+&atmHhmҕ偉/Ķ 5n֍[ͯW6zϖ X0xasP^Ywu4vְ#K,8DeM|=O֮>15x-nռ1ܭ[ژEi<dՄk);L,}pұyvwwு~'H-+!DDCۂ]|XFա_/b!!o~ϥX?&L5WO6A3xSupkF~R+s(Ƕ@2|cHKѾiE46>$o 3 dTȡI0e6! />:׋xdsY?ͮq97c[3GH%}.| ( ( ( ( ( ( wk Zjv-YKmcbگ:(bגO|֮}Mϧ[˟o@EPEPFM+÷h ֮6fC!bq 袀 ( ( ( ( ( ( ( ( |,!~˟6ɮW/,5}օc`صwgo<~ Mfo<S>)d~t&/ëdsh?ߴv?BwBRCyra=甉*ae`n Okh^%4rF6ts ddGeWx$2q\> x_| u:FQBYЅp |/~Zk 24v^YA $^HtVUf}J6|K[G^%47Z{9ZUF@(DRXs\~; C?P%xm~2Hhaik,de69#猾!iwzQƚ&lcF-!Tmхoy߉:Ϋ\jhi:NI-L1p |A cK~)|{˨ǤK۫mF[X&pvIiX~ux ·kW@t2*@ &kȼmƾ'Ѿ1> };*udL}ŔŹLѱڎ vx[3 ozt *Qw\FOD!ïAB#m&MKúj~ xRU8`qȮRwT!֧ohekaYYYHYH Emן> k:^x[բp.lr;k(*Fe&k?C5zy_\e`u> @AKMƬ9dS(E EK%* ( ( ( ( ( ( ( ( ( ( ( ( (9/-~(x&AOfROĶ1l |w³.ki}fw&Q&<W|\_T>6jtV=#qlߐIc=李|)2 : ( _8Ig' Z$B,Ep:ݼog=NMV]Sz(Š J~QF$@;Tth (;/YGy\F[ A,K"%Y8x= WŤ|M vyv|-?L$}zAJ$ k/9n䈮pRP%1 Yh>YMyv}A+DT{@]߈RE}{YH? YB`|%XY 2E`$44TDUT`:O ( ( ( ( ( ( ( ( ( Os4|IO|.n\t~ ?P(E-5et"@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@_V&TTm;X@ҼOicgׯPEPEPEP^[Tɰ|`;X)ԫ?j0pG"K@i?MU[M$䘓$Y(5,:(((((((((((((((*85 InthU !e`x A і;i{+幽l;.'m<3AbUi7 K\ȸ`]䪒2PvZ(((((((((((((!???G{Oz ( ( ( /}w?|#6~,o#;"!Uʡzq*QE5dQEQAEPEPEPEPEPEPEPEPEPEPEPEP^oߏ xc]o<52Y2j Jmm qG,FIJ33>cf>^9TswmT}HHn[?YVU\~:h7FWZ+K#gg]]K  _+6 ҴkSzrQ ȇcd2*Bt!X:FV[ïh<`ܼ3Gc6!HF!h;ȧ  _(uѿoޯS/ģ?k:'<' ]vDUT}/S>([ цj__Lt]x)ދ۟fZ-3<#ބtu2ǐf.:h7FW?4o"wEv t3'k>g1 ps+2Ʋ3"m$ ߡd.g .ß<sshp.q*/Z~Dmk? wbFKkyT IJ(If)$3&ZᏆ_GOkz/3m4iM޼!MKE} Ey5)^G5)^Plz?_?x{_?x{z?_?x{_?x{zx_<]kP-geRzu!XzOOŞ4Դ &[֓ Q%0m6U#M E|ڛS/%(5mK^Y H|,0n@Qe_ԣZ߇4x^;Ӽ] ilWnqeGSy$p uDԾ.o xgP-5K}Z2~m|$"$ "?1nۋ' -O3xVaHl̒TD)- +cCduC]UXEKmi$)s:o("6`WB㯊>c_x^P(@Aq@M?_?x{_?x{z?_?x{_?x{z'kgx3Def5tc:K/'#6ʐA_:Ykk|jѿc(СguŶK)n  N, vmfS5L}NlH!'KUؑ#_n R}xd|Eo{)̕h]nĿƉiN \Π$o{+@# c~{OZj:ixZ2CrZ3,Slc&cg3?3?.)?e?TռQw-gRPS4${e\Sn|nծx+ҡ-h/R+g{HbQUɟ'Eɟ'Ep_kVKׅ&*8:u{JR2| -[|LK6y_U؀y7E[ 2N+Ke602g?$~ G2g?$~ ^wXơoXzm׈|[ ﵘ/5; na yo |Tq"|=AsUC\O BqTUgc4s=OeL'D? (L'D? +t?$Ķ vı.֣moi%G2B48y+g@|A?xf_[IDAc{ pn>+?i?,> hY't_qK?24Ud<>x?SˍmT\$rS.PzkR=?u}7WK𧋴Qr3b \QwtWϚ9ޙ=.|ٞ.SPʢ';r~*2x{ͦ{/ ^Z꺕ixkoo<Oq#kpM++H#,=P*|w~&C"Wx9#+#}ʢOb2nV?xƖq}[[xfAԢŵ-J[Vf6H# $җrĄph7|yHVooX6wǦpHYG)їbd Y8 ix>zxk:E/gox\F(n$ICeAQ_-ީGxQ𮩮W;^mZ96Q"c˸,5 iR?g"ܴh͸$eVU6,#66^!PDtym˸i$; `>Ul wį-Fį-FO z4^')>[f>$1!_euS::f 0PnE&;ٞETy)&SMWHH:?EOC]P䤴xcE'!iWmV+V (PTX(((((((((((((|u_7 o彇u|3|?.&;j3?!Y\*g͉У*E r#,ӱ2WG^[`{};OFYXdm5݆~p:~</ /rW}/Ǐ:#Qt.Fz]yeYiω/,|9m#!IEֳ!Xq"*M\5nBVTv6Ff wV^ŇMU{KWԝ^PeUie*DETUDHUT.1iݝeQPjQEQE:?=G~4 P<7j\<>Vӫܾ:4S2p͹cըo1xV~:Լ?h#3}I`cC|YXm q|+|+4K=Ni nx,FIo4tbR~g jjwsZP,ڗu.eڸy,eͷ|-/12Gumz/&hy "FFF]J(¾'~ZşUn,ZRPtٞVgv7 Qo8WB 6aeomv529v :((_ρ).VXvm*.FNGQ?Wm5HtõYZ)Ӻl V2GE}IEx/L,6r"'_A|z_# Wnlf$Impo u?Iڌ:O|<>5fP{+7/n_$)mG hZKz,j-ţ)'FSؼHVthk|)xO^!ìMͨQ(#T̡]P5c92MISwᎡoڜ:C*ODbc]Z[)%[hbKZ. %[[Ȃ@#YK(clSPvk>5xźuFU1h֭-*c 6$Zo?G?EkZ/|/iѱXm'0t͵.ͶNIf/ävV|e8|AOe/d?"hH'&hM譼1Px^ GTKY H)#~$hԨrHP tZ-S1{1s^@ 3hlye k<^=bZ,cȉm^5c;[dq+oO |@_4ZCi$MQ" dWKEy2$jV0k_<%֤vko Ğ# t6I-z%ŬRb}oSռO+uipZ7{Ĵk$N1i^Zi>7_Ч-<xGSդ݅wn sq 8d+Ogg}x/Fh&lMg||l_t({ZgD3ǿZ ?C<{B W;%|Co<)׊4/F{6%8d w^6DwZiZumc7V>4b)p[⻿Y3-h?!=֕" t?0x/J6aRG˝brpe"|Κn3(-n}Xz7O-}GOBɨz}l-g ?^;ݍϋ/--[,:1TbQڰU* R߳: $u*-G$gSdAX^`trZݠ(5,:(((((((((((((y猾;_ZԞ{T7#^ߠlmiHKdlIpGz%q>F/QZZU=֡|A{H#F  4R^HHc2>5booukP LFx2;`p0(Mw ҏ *9ny%^i% =t> oq;_Noo6wYd99"J(((~ Gc=zyO(r{GV(((((((((((((([bn3WWkMj+Av?V ?TFcO"+Y>ѧ2/ep 2V x}~[Y-n`Ҽ{K H/|LH31YFa%TiWfeoi͝K,3#H$F4k-xTzw?f4/|)BUX}d_wOe{|OA-JW/[_YL28?jԢ(((((((((((((((zgÚY+'^_?.}3m%j|93ݥڜy ""ѱRz(kQCQRc(((((((ȓźD>,ޢR1Ymogyc~nk^ (G&tέqjKecdsf $¬q6H; u+/+G/nt]jheYn5"2Vy97J?g0p(Nr hr>Qu,˜D+ִ6F,-aa1q"* _U:gO#IcE< q5Ddn5||-Toßt8o hZظm(cXO$ݢ ( ( ( (<9[=׫W+oGzj((((((((((((((+j5_&?C5zy_]&gHfJҿg\SAj_ )@Q@@=kSY>G,kۃyVCd[|"牑Wh3ōbj0X7\]aռ?F!4eVh# )"@ Fg^3 ִ+:&L=j0ʇ帷b?yJ:g0]kOC~76{)ٛLU/%經FtRREPEPEPEPEPEPEPEPEPEPEPEPEP\oq:]r!Nsr?BWW\w$v4QE֢QEEQ@Q@Q@Q@Q@Q@3 xnx( j_Fn>`DV:]-hRxmXH-@H8d'e#)qހ9_ZxGNԯ5;HLؚ֙,_+Mm$rm0q^V_ßZ|UqfŨ5jPԦ2 PCe,f]96[;T ~~xρ~7Yuk?^xc\HImWf4‡*~AAPq▀ ( ( ( (2m<]߭[k:}-\K68~fO.Md`^[:e~0t>-n8"tb;0 ᕔ$c"Y׾|F|k 魵-wMW7wqvǍ?Q|\M#\IWIMZTIg ~bE 3+p~-׎|=k7zï 6Q]y!gh H s~ xᮡ犼=?m;m^(nb*3"P+hLY0Dx Y/F_޽%Ա,ZDv&(dqbwc>:ޝnoܟvFxe'IEz=7N񍆕hZ>!YЗ2 ;"L~ƭsz[$ ^8Eh5[b#{d΋jhE< NJ~44xk]|C4a޿ywH^S*]$ӗO5NNhf2E?)Ӑ :j(((((((((()3T|tk4Ky>ӂc; cv~ i Ək/7y :P\ܛEܷ Fd,_Tې-|;|wM}jTTjzG#VSwrFMB&?/|K~"[Gf$!x;ؘ$*P?Ds\w +Gφ5/Ě60oOq< xmvpï:Ӿ (5KÖ׋ [>?4!P|1_94e#JWx?լö-_KУF+q},Wee;#m{? 6:/5Gh^Fm,4I4q n`Hں?4}w^ Ih"ce^,1l8IxG|IX4 F#(f# u(F&i;[HSx^z~# He1'le q^k\?Y>=u9VA4uPEPZKEUQEQEQEQT}b]֥_[ium5ܫP,u$.RWKS>RS6ᑤ 5Rs"||lh⛟;:wӐv4vkensR4VHw|Ov_&QZH:΢2F`DMUU8Rizk$X-PN@+FNh;M,-l-`b1q"*pVh í&"Y,d-1U'ǒy$PEPEPEPEPEPEP`QZ(1F- !x᷀|KN+LnUi("i\ bT8dWkMj y9T(p\~* ?TR`zR@i?KbRivb#J#U'jKHD۹EQEQE<;t!B xXnd i0j7~Uq4c,}m'$UtQE֢QEEQ@Wo+U]|#>-ZfM*EȉHJT 7Dmc:冁 2r8E1k؃ڳ6ho*hz׈/jr{e ;x FhIPl0O\ Ww{j߰cjZֱ>x&Wn$־dWb$k|f%a5 Iw2DYt0K|d? BMPgRKg2dl[sN9x_{\|?B-4kгE3~:z:} o{p{Pՙ]дQYkPŮn[It-ULb2V!hQMޣ<:P\p=M:d&HY!cY+yg;Fc90# nsqK@ E4Ҳo^ :ϼQe'kx2@ !l#rSCV tG:DŽjizu;YKY͑޹-e(PcBpx,KFhj;WQԵ[}>+0EBp)3*2e/^&ld|aM $}՝= ewp\"Kֽ9hD`2B+tuIJ Ep]Cñ|Azxw,cAmO8C$F*Zq=&Yw MxzDYhi @$"]`94(̴滨Io{1,g,v 7LF:E7xsC ^a|e@-7K]yڙ<7޸=B[KZcBpo\dj9P^Kf|冓Egik߇C jנPZ?MD7x]ZwV|@^,F{fW@VsjڔP\VYHbVU:pO9Pى C~ gkG/o tx9M>,;|Rɞd<S",$g\xYAig*BGw7 DKYxg$hd $2T6j6W0>vѰppG6<3UYgbRVOn&,pkRՊo*MB(((Go(u|):aBN]DH[bܘ -qPƹmxSd#AO2(,gR$Po10?|oA{-Q,{Ԟ K1ϧ`KC- /ٞ%!_J%"GIM# 4MǸF(89 iݍ֋i |:_ZǨIt؞ٛCq)׷~&?x+aw'РV32C,1eY` vTF(?Cžվ.x|=|h/ Xy<7wےX.Emp3˛kyjWfNG#V?x G֭B'HLU$#o<-4Q.ua[ZHŃBbW+/jqQ|Ki|9`jkkõ ߵ.&iOZWN@[ ^{lCr"er8Ȗ?u/|&cxJhuRNi"[еɴӭuERv쳵'i&}AEh`<uU_O㑮XO`^uC h"%sῇuڣNŦ;1}G=B'[<: &Z6Br߬D2eCWtP91x'L_ }-bCm>Yy {s`'vqyOt 5}EZ^ {p q$_r=S4m:P.G1,p@xW-[7+~ky#>&r=RyR8*dS"OZxC㖁"[r%QԟεVD[~|v6xÿ1%AOOhWZ/wGgmx%nG#P01PlyW#?>5kI~1êɩzjLuoi& zF+H%[>E|oֵ⟊ZΏ\|9't+yQ6d Ƥ1+k/à~ 8HR X_Km24]ܴZxvd1 xGOW!Ӡݖuu>X3 [$D*IU>(?$ʼn{^k1 k]2=);Td{#2E| Co iZ>jv1[:pho(Q+SҀ>*о 2Kռs_^hiCEK9eO/y?IRm;w<;c[/FV)Óǧ1NSe[3 &gXdž~]?ƝB:4^k־NY-c\F+Cfc6#O9Y36?/mկWޥqs4uA[t޶m*"a |ۏ`zPw? {[Am|quqQoxxw3EMq"Kv6JďvQx L/ áZee}O i,Rt&eK2G#f*߼1@ 'NЇI4/x/.[#NџJVc2n^6`@`xg<exž% ]ZBǨL1B)̊$²bݘҀ>No S~wpPd%aV#N 䩓TQ2`kZRVs}GJ)fa >%HR2WC\ ~ԗ3j+Zx:~rIu='Z4W"/VXg#zUh9夏>3KT>4fּYpu56bn#1PAYKj-]/9+k~ėXxF}V-(XԆh!q%v|߇'潆oʧJ֟!!5ؙ#{b?eix7Sx{W0} - ^d[0D/CQE}T]Nޕki6^j;{;(VaAU ,>#[ZE4+?xc֙j6S26֚ze$m5Ƨ#푽u+$4ȠC '/i^)lun9 rL-/#F,m@Eʶ4^+񦝢xbּcib>,/cԵ9D۲c9+0,.O> ^"MzD1'N-cIO:FԥUrVX Ģ >Ҵ}K:i+=M zHZP5F  ; :؛O-+̼?z4>ץN_ﴝJrc3%C$qXos0-=Š(Š(((?O^ Ӷ lTq<6qAl4\HO ~~*nkrx_ ڜW}٦ M D,D~>SԴOGkk;G|n2cXX2oֶ>sj_OKyQӯBͮ"&EO,/p [7ڌxZ- Ǘ^/R٨[<0 R~~=Ҵo xzŷ^7sD?FI仌z?Ywí 2Yl)/]VyE%Ԯ!، o!FO߳|?7%3ė'E\^G3~|o3)_!rp+_k#ӭ|"߄M:V>v֐\6 §wHuC~ B'<1js*9eTbKeAP}Ŀ4?xPmvUhV@gR(4Q"'BXP<Ūxfgn:_/ak-_FXѥ,^am@ _T^eox'Ė}6Swh`&[Y#e nd 7;+ xᗌSk]/]]4vM(.Չe+%?g[R ^&:jIrFq<|q,[vٷ7OhZm+_:ƒ[ޙ`MFF_%B9jkZ_]OaCiLtf?r~#?ӵh:Ѹ2xj姲,`[nn\d"4i:"MUC0# BS6hs3"><>hr:qu5ier+sU QEQEQEQEWZ" ayj#=Զ{A1.s(|',nj nچxsRӒ]h-#Is?"` ;cHt[^!SoJhZUw+ ڔF .|!9Br=¾m9|4Ɓ9Ԏ.r ?ڢ7q+xW ~5OKeҟQ,GpǨNpcHmotn]ŝr0Mm;1*d-f|amwDo5W/XƝodm͝ {1S % ׂ<:ЗG,I̚IY,K#1$1k7akbo|axPjZN%Y(X.QM2ؑ ;rgΥw5 =t56^.uK5nlchmdέds>~x?>2Q mm&yC3YyfiBc$R@5zPw zwe?jGě6톑v]ychŢ@C2LYYP|brwLЯ.tS&5,tX^)yVk7w.P,7"# 0=(?dᾡxV -EcXڭmdXۺ7e,h-E 1KE&(-PEPEPEPEPEPEPEPEPEPX^56÷:5m2}U$FdN]He` @5Exܔ&|Dm>]F=<ۘnƏg+_agȵ$X*$@>0_;cWz&T9PU?ulE*<5/]0u.MG2@%DAr''ڟ kGM]@l}oӑEĒI/~|*|OMėf-,흣6yX= #_g+_agȴ8Z ?EeM2 WM1LhNRHHhSȄ2 @5-6IK4@Ol5O6eozJ(ƿn|E" uEk/ ,dx30Z~+*a>2R{Fg<_/nݴ9_GוkMjɵ.maU>3ϭK uEk/ ,oJ]qOUg+_agȴ8Z ?Ee]#W G`X8߇_uĨ'@a5u*Bfu%ehn2{QICeinK/>7[Z͸*RFQEQEQEQEQEQEW!ߋ^e$ +cBs|[{Xшk:86ŸJ#\1Y-yVaJ|C][厇`\DL!QY$l& |I*<%>9tEdn^،_<o{x1Nou'Se1#g@8A(/mmzdJ,XJH?ݘ { G,42J -U2{;czG ‘DHU`(S`R@Q@Q@Q@ ^UM\/u[χ>.s5m5 p~k&$! 6TV+|Ykk˴'\-v,x $#2#f|(O}N^5 }R VMacbp)g ǃuk$;R$QR<"2Ͷ0I$vyQEQEQEQEQEWx7*"Oxbv6,)!$0i'CwYQhj~'ζދnڜ[ $d<6ui,P'Q| ?#R7HCZT[Ĉk/ 0%Ƌm4%]Xנ<6Rkl"?#p|\o?k߄ӧxwR͆k'م-m`/Z+ϴ>ķzc]|BݳK^bJܦ gpE3Kk𶳢xO.n&֭ 1ݾGYTe0@Ep &._sĺvR D9ڌIPYr{n\p, x[ 7K.մ}+>.>5ɭ5#1lǗu}SN?&:A1K7 H'dœ2a 5|gH|M>#O񅇎t >_gKFKi: !%Fgįt&o=ͽv7 [C]|$ (W:ŝO^*z~aiX58B;4f8Ի]i |E⿋-U`R0(_t-N 5(|kمnXu RU<̥w|$gk]_xì߉oEΡ*`q1 36Ïz_]2+9.5SPZ8S38U*FQUG]@Q@Q@Q@TsEk M"C j]䑂$ހ$3&pZZx~Ab9mRvRpi/Yϊ/|;CN)*+<&>Bt ɪ^o&VϱX]97G"j ?3'_6ɜS÷' >Nq~ʧïh"J,-t.1 + 0"( @*bC^xgE4 1iJI9$$y((((((((5,:((((((((((+⿃G xDW7W+˜C;幑~fP~ԤUTPz@>WCQ]񗇵 jײz}>o]?NO*8ZIbhaJ x[S3Xxm'75CA'٣7i ++P~37x.M>%}{]r+MS^ &)0eG=e*PhۏB4'a}ڏYyؑwi2OaY K$LU`5+4QG|Y%6{i.0jI{bi&cDL '4PeWy񞞚VW,|0لA~l @ vK]J{ntn  iZX[&tlm4%fH%@9\Ǻ>'Zom˫iiK,$)b*Bn"˟[ҿg\SAj9Aԥ w0JA`1'}R( 5Yɷ}Vd;n[8?fCu#7+GBFҀ9_ =BL-?>f//s;H3*:((((((((((((((?o |QM{N2^XIs=!綹d+m[oosk4#6if@^~kqVj@߀$xg~گ}Z9LL- 0 9]sכx>=q|K_x;?zEDs+Euˏ.tFIP0Kz*j:CRI-@bZ/5ȆhG,@QTtMsN6iym{e2 He=8QEQEQEWkMjJڻMo@.*Uҿg\SAj ( ( B@A85!i+:W{iZ KR4W!u8{M>EK`AY.HOޕ4I,I,I$IzxcFt}3K-l"j0~ ( (+? 4YԚMjKYhZl^wu0­+vV*9ֹoO{kV`ɴlsy/h@O!j{ (1k W#ghx?35Cr{GŸ g49]F"s%r|s)g DcSUh>+AJx[Bᾃ _d~*~h4p" ]H[5mx3/)GKP0_awyl[qHeMzEQEQEQEQEQEQEQEQEQEQEQEQE֢QEEQ@Q@Q@Q@RuڮyX7W2$RDžUPI']S^YᛱhaP ;[ F$o|rGpNA z|ix7bL5֛E{ $V[\̪@ XOw{zSo_WoY,9fH24qv )HߴZ47 jYtנSQS<JO:Q$i#NTc?N49'wOw{z۴MJY&ãF&)X[c |`4 >w|76C_:+U72A"'_ Suρ?=uwmcQl,5{ 5/mI-YJ6:n^5?Q9Y#E$+)IEAS?N )>%7e'ß>*ԷDu]SKkkr[@ !w@վ/Z^*6xvSţ]q"i>Vr1֢xA@Uҥms23*)oe\Y;9~=xG/ğ/t'`%. WM?5xm2dhtPX{Baҹhom' rE*GR0Tq\W쭾ཎeym-[YTBzĹ>mΊ}z9LJ c*<.b%̸^U=2YӮl5 XonhgI#+H$x G"hO]f1N7$]rVP[I;gtx_Z}|s"'ͪaWsLWhbb1,dL(O?!ii,ouXUtgO_ZL1VῊ%5= l$B q9a_k_| O(?yOy :OjRվr<`J "S4JO|cc_|C񾭭xV>]lX^iUb/U&I;oo¿ xAQhkl7-O'-,$qXk }3?WxgI=jG~'?Yծem,7Qcz@9VI<,PƥG *O@ri^'Դc;ZY%;ZKGb\2VT˲Z 8xgᦌ4 v:I!]by$Wₓ ס|P$VR$= aubGl!aGQ6lwS+2. vQEIQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV|߈'k=wJk[D}\򮧕u)ޢ u֭vzݣ-ܬ/ĊDurT13nz.,?}QVu:ӯ.tU̺唭z]A)KXK̩4X+ [iZ.ciK8"\ y/~|V{^m+!M[RE[YtWe][mdMF+RK:\-nm͒v ccٚDB)sqWAW[ŏMIþj4JI59pHC+ro1b?|q? kVoKaKm2?*F-** MXTCRpP!؁'5e*N_xG:5ٓǺ.|E}BU(lY=A+q"s$s1>|D|Bþ)]RQH[O[KRfyL:d0􆳡k⇄ZS|QVG2͵L#U`F0 ywM5Jim-nto vbYWaAb~P?<㎗mN |dr2KqUS8],ളX 8y O\KɜGRKijy7|Xz17D *D-WenA8T@FI<EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE5dQEQAEPEPEPEPEP`Q)h`z Z(0=LAFҖ((((((((((((((((((((>?\G8*&[Wm/.F[[xُ '.*=Sl5?6VMK*oHk2zPG WO{goYkww6E,3 t`) ''>.ӾؙZ|iXi&_gmR6v˅c :Nr=G'ki$+?22G$w ;&'o!q?<;Cg?.5O?Oz_/~#:o=ܵ亭wO;+JҪ.VYAbrD3G.|ScYxO[pGy)Z`ط|{_2lƩ\ ?9st6~ko0ѬPĊQ`* ? x?'Hռa6έjmlDq˽KJȦ'9F0|\/=o|Iʂ w_umۋ2e' ^񮃮 Hu-Qlq$`p01I Ƨ>7|S2k4J[qvwbIbrO5ռLVx,MW-UG|RXQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE֢QEEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@U5K-Mu,4H{V8Afwv * $+7ƾ6>xn_Zd@X$*""#1 3PIFV >.([#7%KIUJ.@d _(5_ڢ$xk|bK:8サK=2Nӭ "H-- j"T*QEQEu?-ͪP]=7,>ϒ;$tk?g=#-|[|AjVo:pP;iqTyC8UdgR/X3fECs͐*GV C+*@ n? x_-x;.ɒ9u" pI $ vJ@(((((((((((((((((((E EK%* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( +#|7Ӽ^n,Lv#4˜MyexL?K|}jzncvzŹ%v[G[\bv _.EfV0^ >xW:Zjj Zhh7b'75-jHv,Zvln.dw0Y.QFYT={Σoiۤ|9u┋¾$&IЅN nx֡Z6ڞy:j.4YH̚L1YT :|05A㿉kyhG-˧xr6b"@$e% ?ͯ'6>K8.Yu_|/Dv ŕ6>1Wv^ ''u KNmZ)8muԆQ"K#op ,石?~ C]cVƙ{tʪf[XG!@,9Wxk;Gu/ڟ45ΥXe3*DtyJQ\I]G<:njܨYV)YP8\dF{([/\E4Zl>k>d,W8` *z ǹvPHl"`H%ݝb3t ʁ8e(=G|KvpCssƍ%I"C ̱ 05t.TVt_w>,> 'hԎ;ukf@c2 h:ot[#X4Z%aGV0 A;ῊW$k$1et]At]#0'Íc0[onȸ$ҕXa)PgxƏ6zOnsCmF'EԬ$i~ g&)_=ԑc:+_Zͦk7⷗R-4-RD3FqD%uψZCt>;3zzhwz׉ohgkFH Ydx lytŞмSxJ{N߈Kk;ukz>E֤hH'YR%nPGFY?gxW]>xڝJǬY "qya\CYZěM@Oi>g+MOBeVI9b#񎍧Y]a6c4h;'ُ( W,6Þпf mCNՏx" xCO{ Kҭ $pD+>@N+4zh]IJ4gͷ $Hq \|ǍmI{wjZj-issakzEUH>NQTG@>okK>A#(Wݘpَy#P qqΞ Ő4pjkhjSɦéHvŊ hCP~ xL G=ɟhhnھ}>\m❮%j;xIM[ċDITa幘n\~/]Yk33z|^*cG{GrPAs,.&/x[u)SN4TyUIe+old(p2Yg` ?˾ Q>[j]ykc}*DCqƇ`1U#~ xKUԮot_<.$-ⷆ\8"]tk[x_54eеey,"A㵖"|ӼSfk^N R,M0!5s+4Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ j(j*Y,uQTPQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEq/xkjW72ZH~Y{zQw?o #s"n]̹o +CNu)[I{Ko2$2Fñ#Cz"ǒ4KQ Ip\|yVߢ.GR}ڏh/ /Ya]!~T=GoxJ x@l%G :HQȁl __::ۭ͝8*`H AGX 2^^We6n;7NUaUrpjoI?d ^Ӽo -S[)N| ]O!_%I#+[pGWAxg_Ώh/ /YG^5Hmz? fKM&X쑬7Jr0 溴5Rϊ)YYh.]َcMs.OwD]F&Kҿgm+okght%*".='MWF'$i_..&b^Y\$ךx+<[<7}g?œlͬ*.m9o"I6[t ((((((((((((((((((kQCQRc((((((((((((((((((((((((((((3f%|~Χ$ķ,4۹$F ^?~+ԃPs%v<.$kV3jPylw[$Qa`+~#w|GxE44 TGp"8B),O5࿴&^RiJ֡s^ȶhKhT-yfVeX&NPt0Jm{!Lsid*^{G#Sh]ƻx'TUu=fO. ݦ+Bew2d,bGTW/u+?**zսzd8KKiVp('ō#Rƽ_QGI]4Eot]\^5vڃqЍڱ>Ilc1|= MB_xR/ &{O4+gEQ)b٣ۣ=Z. .#: ~!YR.$DeȂ3@((lwӥpMEUQ /\^U|D^;♶QLT aAݤ}I8^" 4;z}oTݎۚj@$4A+u IQ8;^];xZNӭFg6508հHMzQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE5dQEQAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP\/x -'5Wv%cm G,I"Y>|&⽟O{qsmk̉QN#[; g=F&k%jz^qevQ˼%* >NzfݟboqVq_$ª[$lcFKw4Qp.R2C> |[~7?n wژfJKA&$I"K]((((((((((((((((((((kQCQRc((((((((((((((((((((((((((((((3È.|5<#-iꑤf"ȯu^a/}8g![1jv#HQFmF $j5_&?C5M{5z.o>PNm2FK(s1WI~>}Z7ͨOBww-iH@JEZ((((((((((((((((((((5,:(((((((((((((((((((((((((((((((*670ۣK5ā#fcrI5ew4@< [X[Vy"?,(%䙰XFQDݕΫ?Qckğ>_VaIg$.VF!C8$N3zW~D wJ!@ڕV!$)r2@+B=V],jIylq*|g~n9qUgrv_W+k8"oG#88|c'(>S+ [D񆁬iZp-{}a< S+(捒DWFeaGr?\yoJ"I#`FApAZOT:[x+^ F}.4KTۨ8[f@UxYW'64NEP0((((((((((((((((((E EK%* ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( υW<e.μ#O'QukEħ-.T}!/VY%#"7Kr'г~I)4uy,g7z^oq.OwE )ò7Nܓ\FHdI=:9U/_\k|S1Z=,Z5IԨ`p~<s>.k.-d𩅓1lb Viewpoint

Viewpoint

Definition

A viewpoint is a perspective of software generation with all conventions for constructing and using it.

Motivation

The notion of viewpoint is introduced to decouple the generation concerns from the logic of generation itself realized by a factory. For instance, instead of declaring a mapping in code, it is explicitly declared in a mapping viewpoint with a mapping model. A factory uses all the viewpoints necessary to perform its generation. Then, the set of complementary viewpoints must cover all the generation concerns for the involved assets during the generation, and this for the complete lifecycle of each asset. This set of viewpoints is extensible in order to meet evolution of generation needs.

Examples of viewpoints:

  • Model to model mapping (e.g., Eclipse ECore / OMG's MOF to UML mapping)
  • generation with patterns
  • DSL (Domain-Specific Language)
  • Functional decisions
  • Non-functional decisions
  • Architecture decisions
  • Software product line decisions
  • Deployment
  • Licensing
  • By homogeneity, a factory component contract is described as a viewpoint in a contract viewpoint

The structure of a specific viewpoint is presented in its own section. This section develops the generic concept of viewpoint and is to be related to the IEEE 1471-2000 [1] and ISO/IEC WD3 42010 - IEEE P42010/D3 [2] standards. The purpose of a viewpoint is to explicitly describe generation specifications and decisions. A viewpoint actually translates a generation concern and helps an actor of the software factory tool to express or understand a part of the generation description, and this without being polluted by implementation details. Regarding the software architecture description, generation description by viewpoint becomes a sub-part of the software architecture description.

Structure

A viewpoint implements a software perspective (e.g., producing a tool infrastructure) with its own rationale, that is a purpose, choices and decisions, and practices. Several viewpoints can mutually implement the same perspective. For instance, the generation of a tool infrastructure requires mapping, non-functional (e.g., persistence), deployment viewpoints. A viewpoint is instatiated and stored in a model. The metamodel of this model formalizes a language, and typically a DSL. Then, all the viewpoints jointly formalized the software architecture from the generation consideration.

Viewpoint structure

Figure 1. Viewpoint Structure


[1] IEEE Standard 1471-2000, IEEE Recommended Practice for Architectural Description of Software-Intensive Systems, 21 September, 2000.
[2] ISO/IEC WD3 42010, IEEE P42010/D3, Systems and software engineering - Architectural description, 2008-09-14.
Node-path: plugins/org.eclipse.egf.engine.doc/html/images Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/images/contract-element-mandatory.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 648 Text-content-md5: 8402caae5bd21720eaca7600e037b766 Text-content-sha1: 1f960af7ed592339fd2a7498db9689cf280bc757 Content-length: 707 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRusRGBbKGD pHYs  tIME .% tEXtCommentCreated with GIMPWIDAT8?hSQ7j Y&NtrqqtlȠqpRԥRR R,:B'XDp(uNB24}y/}߽p=g$10)ɕ{)U (N{}_b.٤MlR7jlwK54o^'bQTx-\aD,8;yӎOr">Ι SȖ5K)MTmtSꭼx*ԞyOhj@әց0} ƒ| 2!G76?JTTxL:uSrSa-7n^7 v}V̿QFm}{ܭKqFC|"Xaq+X u0ʭ58_ &hP;paWrkʵjg9:dX] izr{c&\9ɁOhd IENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-component-explorer-context-menu.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 15473 Text-content-md5: d6c245772b72cbe25fe6a3b11654b1a8 Text-content-sha1: b7905139f8839f6fd8e57bb973889fca7da56b97 Content-length: 15532 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRM5f ~sRGBbKGD pHYs  tIME )ftEXtCommentCreated with GIMPW IDATxx[՝ل.l˓;"鶙8"F˔d(cLȶefz03mT.¦)iRpB;;v~<;ϼ/W|ֹ)uċ}m<[eOAD4x}h{΀xDSoƖ} r~7'Zrcҋ6\  LI9McLL>cr҅@}̔IʯG]ݣCX)R4ڽDe͙ K|+  ŋ+\r+W>J~.^331|mΝ=˿'^:Hċ2`0Bzc0`025N"|D'yĕǀ+ˁ`rfK3-oZKړ ;4AaD+Vb Xq+W@E\6[u߅[Oo<v?ewuq+AB)7VjXqM {O4Jᶚi ^+M}*cO~+RZzyP Ӌ[AYM sosA#蕤BS_S_EԞ@mO amhaUS' M-:|3ܧVe}P\ifͼ.PUJY; t2. [A#q҇^A R^a|l{ UPm,(b%5. ܓtۜ};aξܙS?6b\Uu^/1|>N/_ sNw؃րa5lNg|8>ZCwҝT< (6ڝ ؜N`]4#'um[ Aa1\˽+%,[V[}&AaFxʮu+\/ay q1:M  ]42A|JƹXW+>/VAai|G  hFWgwQ9|^Z\G}@*A5 IAabZAAXI,M  ,4d_אָ,ӊ<;'G~i2oã_?ʱB2nZv-SA&3'_9>wڞ7~aڢi|lo|vϤ$8 l<~x&a|eA= LµmLqu||g||Q._06>6>Ʈcjq6>iE%pA~lzһ'O>ϦiUݻۥA sįhR0z˻7pyL7C;^:/^ &6{~é{V!-\O;w2F/8ENjx:=sM.>|J<<S=WpıS=Ϧ-w˺na??8a5<ϳi^De GqZ^#-qlFuy6`rLv>kPrG} _yT@j(27~g+>n~N,)jfp"GhJ尣ߩwOL;.Gr֣.y,Cp_Pd(=x4.<5`fvG|sS ?téVgҋ\;Lw,‚CE-^r\~759asMܺfu|y[wk0MD8@Fܹdi~3X`s UJf.QS>zhjR!~?5Q@JnGx+WSO&lswSStEpy뭷Fb1FGGtg}5'>ù'~o燘XK\R#pM|cMquy>g7iN~M>(&z "3$!߄UT= 19޺udm\mõ0&{Je.a|⥾4S`(M9c&իWSQQ17[6d#˯_1>^z%PJ'-䦶dpJүob9޴aK_R4e^Wk.&^jxCY7ڰկ;"=jcjg]ݼ{mL&uuuL4}]&GX~2bJ_@?D(ц500@M ,uGڿ-PǺn/rO,0o^MpJ0`z/iMCO~ ͭʎf aVv41MW7q+-l8́Cg f U5 FO3x*# ^4WW$ko<%"ėJ~?v*y6^b0|^=v62Z^1u`*0i#o5(vGƆabc=l#WD5!̶PHPO,:P)x&XL xnֹ8sno>IiI %.\aiS{ j[dWuaA(c<ʚh7t<m،Q4q`?,Y+ VQł׍aCͶV6tss nO5[w!&erLds,8!^9>|~!ct}%%n\lr *lt'Sn2;[ jƇ力{40aY7,~r=Qؾ@>D3>>(/]v\?W 5A S!XJ)EAAXRdo.良aA[ia 4^I/^^ą'iBVvk {?Nʍ5a j8p$S΀mZ'LoS. O6s'Lo9F-},b sR -hb{Tm\|/~{yv ܪ+xyОUq:ָEDM|ho6yIqiW^Mۆ;^`nN%KH /,d1A}򽩽-G" (jB111G>#:qw.m]v9Ia5~hnjܽlv'1Ö+<ttsp6yj%QH 0,9M;{{sgN;|.Ċ{.ҽ`*mܼ >xm ,R | ]NSkX^[DJhb(ě C5''I9ugox,Kx!X2:r׏O/Ui4g>]k4{?ECX,D^0M|pZs_ Pi=g p5 ` f ~_7]@|"4:,5ON OdC->ɴ-JU;^&Q´羦O'?羦?YKVxaB<*<ݦ<ᄛͣ<Δg [<;U@)RiiTXyl8mpr7Nx]D\K~Vt;K}oKy>cGSՎS+4 ,kN=F?[B!5<`t-NzR汰0єdZȷ~MM>oD'  Nu'-9q6Bطv 4v{m?ڰjěX5',6?N*ꨪuEh8 (oYm(ۛmu+R^Uq9Ahq"o40=#<] }<] J. #3`-ht_CΗ?2ay槼V?_=˗/.XXj+V`ٲe MP$sAiI)˖-cx㍬Z뮻ND"bŊtM\RMS=I BVTZ_ի1L|ͬXBD"bٲe\ȲeD49APJJJXl7p7|3k֬IZ$Ł`24eR`˶VӦ{)nqKAaA 뮻+VrJE4-2ѤѤK&v|nKv[-Sċ}™s|\ ̳)))4H* ",M~D}$\lP|3jAWlpgWts  Xtciz|q*6^f}̧y@|NOWmi /mIJtbOav Z$C4ҏ9)uI)l½m3y ӷݚ$X#^A03pσN*^;-m6o8pt[ h 'KQ#B7s .f- Bdx.z_Lt#iIXݨ'ImWK@ҹC#T/m㷰֜UhԆ!S]ޓ+O Umq?J{7!7d5v-p =r `اe0ٌbA4^Л6$;|2]>ִ!)-Mi$!},jkj] Z9|w[ MfulRqjk3Np2n OB-Mq[1q N֧XpƗodXؽmJ%iƊwC1Vp(j!mM#s햔l6mR1 y4 y0c̩z_ARR Þue>dyl#:njc_-"4 ;`zO*IAD `i{|GXH 2<'KT0SBc>&*]R5 ,R 1sf,5vmܰf9^?GK(&AL!kb}wo?"/Q֝h!zU,һ]@l'c6|o5Lؓ*1#&L&AL3&7GO%>ӂRiIIWu7`Cs DuOJ/~N(P\0,iE.2˕~ fb5icF8~0Vy:4D3 3ŵb/fb/Dfq]&q܋-!M/խʎm՜:v9 Q-lRyܷoB,PFc1遱Vvlh4â\b'8֊XƜ<ʑ!#CILw-8-87f|m-*+-lيbiY1q $&CxŠ6i'kdt'}@; cBC.h(ц!Jcn@f92E@cSy6T3 āN▞; +Ř;|V%TVSqtbO,fwk"x{"xw9'e4LS{x#YƳO M'Nd-nE;({2RGtk osqrS9}#_u#WKpά{2^uVɬtמ%!-迉\ŵUZ/j\}(뵖q\uJs*4պK/_hbhL2TR&[>IP9L,;\rJbH:Wo11C.a9a-MF(Ur` (zt+ C +Tąq/C Z{CʝjzQm m7~ڕWҴv9,T/V r!T޵B"ksݜcfƚ_:Z#9ʘ9LNYeIlb66375o}=X|AZ#|u눗=Z=GW]^zײ7G[ř;Me߈#G?+M +n9"&]k9ٕ=W-Nz!5 kh5f !#̶(]05Չ5lnu'6a;/~Κv#UaN $ӣie?FxO '+Vm({|vkF?xk`lƉtss >M<CRl[(ͣeéz\3/(ͣs*y򮏫2 ʉMyw|,c&9_{,pp&saB반/H4E8MSCk|DSbQQ?951&VpOYF3>YՏ%>`0ߒaHOry-8jnl2:O2 'LgşʣZF!=s1ZbkH- %a^ u aQ|?X񾠫ڞnk j\і9Pk-529Xvl^E[A*TqF9UiL /Eo:x9 QMsPr߾qNKc-5bQ*0f?b2aݴY0bz+T8tpm"΅9MA\+E&vyi+tF>=b9c_=-4PwE7O$0KX +-4dޥb4w7D mޅ>k9Cҹhr [aES$!:0tDXphrcuFY y/&b'b uӋ8:AH_ȅHЛDcuW9h w9z As6aPɏ+VJT3>EPT)pj.`Ja:F*RmoDSb C5&2-9ְ~#x zHw<eyMa&Z,Fp[u/&mV*:.NF '2<'H8{gϧ ' a_|-}tiۢt9 TT'4_֝k {΋GW8tss >\lG<ĠR\=bu׎m½kkh#-"2ؑ&P[oa4T`!5u(UUUQUUEyy9R9&sYT$n6V($L CQL B6*D$puIAAD  &AAM  "AAe \;ۂ +, 0k[K\4Jo tahm gAA7:Lړ6)b,GZs6=eÒ@,"AAG)rnkԂG0= k3ΎZׁ9seHn^.$ 0?DӴ p\1/=NR(Ռ/sPAᚋ&Z,~{ %׃ٌ5CDzކjl$]En8jQ"F)dDHAAXq=k q0p631) E%hn%Z! sbpĝl0fi AAVȠ ÞueKAs:em&AwTUUQWWGUU唖J,RNSׁ] G_=f=|ϣ=xP*KaEխEa~ 3/u\|& {-S9s). 3)a&A' +87ld}\x0krY+YNVo܀h5*m5rҧM '|̱/3#߲zd0!C wnfG_k-!8C79a"}J$|w A%n*dc%0!ǎwo"4ړxOdF)]S&A G=]D>db"#BX|Q7XD=i1hg~x$y3m<ֆ޶_8IeRpF.Gӏ3rt:tN"Ǎ(>6uammKF݃HsFFv9,I Z/OS-[3>3L}&F/eT BAsu A&~jqb"; tHĥC[Gb8-3fsA_,k J&3`^M;gM!N wOWy-:hLT[&; ©\V`O4[L EBPDk{h V~J4;;:LLX=WUշR(ՌoAAht֘H_~s-H#bºCgw?Vv{Q.(."IG&kMzxqy# c q2"ZAf4E؃֐\ijnbGt&,My94F@'LoZ>"'sDFj,3+Sk0VŤ&\ɲõa*iԷY_O,Zlz,X5SCKx :%RʍUEM KlҬ+ԄH_OrRXi׬IX ha&m[⓵ -9,EV ›hwƇ^3P!5i\#cPJ)AXXtuvcgT \;QrJKKr)biAA$  IAAD  &AAM  2AXtuvK% !N ,FFF8s ogΜŋLLLHYxIn'߹x,mݚtoJ߰R*OǪU[[[(//Dq+bir1rJn&._< 9EIn[v5\tU7HXb7t+WE-E4 Dhd2zjD4 9$XI R+t,[+Wb4YlA*ED RVXAYY"~T+l馛><t (++K&Aڟ-IǥMr[~}Ͱ|9+W.-Ke\wپM ,?oAG6HIIi$X)RF  e5iIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-component-explorer-context-menu1.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 11478 Text-content-md5: c426f33dd6f560660fbb1937d91cc837 Text-content-sha1: fceb5f15d5610e387f8e99a41045c3cb7d3debac Content-length: 11537 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDR?WsRGBbKGD pHYs  tIME.8tEXtCommentCreated with GIMPW IDATx{xם?& lB)Nڠ@w@Bi"6,e+m-kgB$RvcR܄tXkri6nL 6[|CdI|eyy43g;3gG4MCa1+aڠd"_oq߳MioܸqF9# dD3{ëGO&\˹k1 nQB8N,`wD,?cݶ {F):Sգ'O> 7nlʞO Cপ̃ëa!L(`Yc/sER7<2@.]BG[Z;E~.>*PPEliUQ*Kx9E+6."Eƪ}(j2,NaˆN,'Ϊ{{cN%-bcpQCYhH(ҚK(X3yM$rұ3& AAe̝;y擿p1C~ %O`e?{tu]뇗\?MഔAjSb1y¥ddlwNtf^Ma{ l4W[`m_k2b厹xﭤn[Pٌ47QNu`o&jL$9D=2i%J_cstÏDwN{綠oo'9`)df(\S,J ~<\m7j=<-f pQ ,tW4UWcI{}';Ƅi/;Z$ˣDKt'#sJǒ,ҚƱ'Lg:er켦R^tƶܙSt{;sεq^Uށ[ozGxr<ʉJog8j ՘0QihZ᪈h1:AHK~ۺn44+r1'w珔ə!)SO=&+~sfqo: ~Nmj=\Jn+KfY^ B69e_ƻ>H;,^M:̑ DY"`$cCڂ \̙x4N.dxz.w?:xqCﳫC [a5>Sn xz'[ E7n%/Q{jR'Y̤>Kwr8Ϳ=΁CΎ{S'Nq8-G `,zVK9x{߯.$?zFn/[|.Ab&5K|16a:޹wz`Q>k3Sx_ Uzև n8{TnZvG֍yx&m[H ?C>g9>2fxPб!QaMv~//W~˱G8{td%QU`7 Uu.N-) 97޲7[y&D"zR!khkkӫNO=1^K\?n~d^@C`pg~KJy'?><45* >P>7l|q oO=ēmFfD~0A(B-?΢E((( ''ٳgOo{]|F>?U?7lzgMlSՉ/ ^R tR={xKr׳tRrssַ,xd+iL"_(3$,o*j'HK.`)5F w@.7XPdƌۀ]d:5CƄӲ↩# KS^!j(#oL1zR0ڡ LT)X̤ʴO^&E޴mNpoZNkRvTTw;n6R`hc,f%~YOkVM '쮴rhZnW4{Jn(ҳ 0#oT{` ŷ<@G&>\~?qN[|,|97ol#vm(;Tc@y%C} o2#A_6\~3̚eu̟7w~&=V,LT7هƽ8\9T!K${;swo}ϝ9{ڸ{/m<؋<؋23+=_ICBnX1[Vo844-U7 r*=f&)I _|.tK^O{瘟:MY=}UKw:8ޏ㉪%#Fle5^R!H;[V.7NWG?%K]̝v -8R c? 7m$5u%x l)JvjY ֦/O4bbNtt/G<w;28&(S3RZZJaa!S/n~~Ν 5y#vhO)ǔwA"?AadtB#6~egqAR}x?aPD6n(gUϟ#EAw˦ȯ {ErAjdix{Yzy( oZJ~2lrfAL3S=ϟCk??={G^ž~ΝKli6NfAaw2Lwi}\lg9~{݋b]y# *2O`qRao2Lt\`\ 9̟{%o ]' J'.Un6.DN3#|Eu:1oh+lbf?啟OBCxrv>w_91!Rb`mv :5APXm2` *UE6eeU?7lحzkD.IVjgUA"V{Gof:|Yv2ɯs7늯s}j|O^W/e5iAUdbyhCy% XZ-xatӱ5eUUn w D~c,fkC%iOJoXqŝȭ:xcdz Lf7V3L X|#l(榄#UmeπK]TDX-4{#YL/󋷯yu j j!7%3Ӊ+;C5CQO,9{0z8 T{)i΄6}MU-#]zj̕U'/rF/YNFݵr;x|opk|oj~54$j ::u/'#݀AM &K7i#qݪw!Ro<؂0v??>Abf:1XiO&~ 3R+T{A$?>7` {C a;4 ^tHsA^7QQgb& Ƥw=1y LQi;`ݟMOUY?\ViG STÀbۃ72~r?=ᡧg(@ԔzυIFqNG&ޠI0|~*z @Vݴ ({C |W%JޤxiL +; eJ f(Qx4#I ,%e?bǿOixdZex Bv\r&Bw%Q2CqurnpG%Ca2OuX|3]Bw#|ށ7v5W/ <'" '# c,EW0;jȐ:AO"ߤCقm#^N tl+:ZWD%_|l5ȕ H7̌53J—ګ:6I/{LU"lx׽7% ]$| LL$s1'ԀAW}әLꚳ?}X|3mpG ]u4!͏9Re}Ha:_v&42҇w` r݇g~jɈ(8m[q{ЂK^xR!$77?޼ȴgoa♙. Y6?f D"Z'aHր pWUbźA]T{xy't'|+ 5j4zd}SS"Vm'/Yf~-)z.{;Lf\@i/eˣ94a4Qjt (SIT]u׏+˟ѕv=+%R;%Lc D5&5 M^߿GO𭿲V>AȦ/l\:134ٳsܔv4{{gzC1FWVMIUc9V՚6ZTF]>AF.3D 7 {+[!`δ4f2 k1v|8=@}QUs)DzqMMпZӈ/! "~ "~ R̐ 0;x|,퓒>! LRׯ( 3G<a&4YCN,oԬ NHG< fPјoE׫ڿ IEIQPQUaI nog~Ub.!={4V4 ۿ`Qn.?<f;vN !(>;=r$AogBH&h/4s8BM/⍚5z\> n wVAε0x)2~VBE%ԅ,ݻl++Dbq*3*NP*Y;(3U7FaZߞڽ|tյ<vz{,^]9T׿wg+V@_u'2Xw`­:q\'N!#ҠE}%uᡬ=lPd;ԇ]O}ü 9WVs)6į*o EdlRmvm:f|LT(+{gHTR24_=*6A} Ԫ6WI7F=~kZAj^ ?U Wug C#{;0cGnk/axO63evoܯ@bcXAX D?c\O<[)Xa3ctN&HC:\ L#LfSVDZ= !5hasWUVT9Րzq=L@wO^n//| p _lGL2] [Yv똢FͷӤ嬺Hdžr*f(7/_؛ P53—T}pRMoZ_cKWgq^:uVl̺ D)mpqH䳺VM{aWE~Fi<;=H1,F%^Ci `%2F(W}'%LvϿm[7րփњȦ;~/Lbd9^ƨ{`.`e3+B{8 w׏rI•RN;Ic7nb*p=:F4 q"ܶumLa^~-Z}'m5}(Rھ^FpJ?\+M~>9ɉNXL`J~q%9 HN]7nf 8R!fC" yE7wW<tVNvcKg䭼-+uwyiVG>p4;1 nos;(E(>]H ˘$I#<;[q:*"b3[|WX)?Fnj}Vjd8 $`ZZcf$To _,4`]ѵH"fz^A! ju}LUga^0=;[|(n8ɉZs(+ /֯MyӛH$na …yC#H~^BOklDW{)q3 5^2iIE&-[7%&<;+MS,،9O%D^*-Pu38+{y9nu}<##] X5T8qYƺYVw krp+߸k?`ދ7yVr$wu|g %IDATH^ꦯ(eZ_5hFfGVqҧWv.63v%^/q|CeGIwܜ%X]ѷ#F~bf:^Gc*|r(*:ZFĬ=uXV-c]W^m]6\;W&~+ֳ_=yUy"#ixǚoCU@3;4V&JT'U{И K9,5LDN EuxxR"iiG d 43uz ~K]#**m6\!=ˮ`ƪ!1iJAs9mً )S4kxtiܘ6ta2Ҵ33Lڈ_l$pXALd!N<_xh*K0a/<ڛ "''3ye D~ "~ "~ "~ "~ )!o{3HJ, TZMe A "~ "~ "~ "~ "~ "~ "~ Fӛ8+q~M8 %"~G~u^Ko>L |_?TX,NT9x1E˔$w^?W^êҵ\|~h }\|VkV;NB((-)ϐ2%7Io+ zYUG\O~~V~2f-(z_ x5 MмM3ϱꆕhhx<c\͇cx/_fppPO&9s0o<;w.999"~& BPrrr={v;t_A&Vb?zVHIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-component-explorer-filtered-view.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 9747 Text-content-md5: cc76177f90535987d6cd209129de8ea9 Text-content-sha1: d06b27ecda5b7175451b7caf517dd6d57bdb8616 Content-length: 9806 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRsRGBbKGD pHYs  tIME &*ڹtEXtCommentCreated with GIMPW IDATx{|V!֊lcRr$@MhD@i+rLD'M8xTMh{h5JWH"*4+\c/ݝ& $~3wgv-Ё*TfؿVUQSЎ};5UIIIE2nD?17>)/ٲ d`$TD׵K?I)T>SaaNֹ9Iwi"T(Aa1:Yd}T ]*Ir"uӷ_ٟG-1襾ʈ!P,O݆\nO{^{O\n>XX`bڨѪ\VU*h2H'e71w;زY0ZUa:EC'X\:hS}2]aɱ/4,=ۢ./$1W5+Hwť=` ƴNrFkMyyS-ȭ c[+K߸\W')URtWtl8-jM1I:~^4,=@iaM?Hr7h8,liVu;Ăa;x$b Z&py"0^|aI/Uu8:] =q"2pؽ\47wg',ԍY?$U۠ރiH X 6eMI~| .n$#)$Qo%;[( D@Z8a1L~4Mo=-A.1jУh{t׆)?Ӌ;i@\;랹Å̏8vJutzd6lrm EZ#Y WW'jܜZmM[|=4< ܭc;4e)AGvV]NޡcuQۻ 6,Kbxxx?dBBBK]v$}uͳ4|C6~{H>yo7Zn$6?^'Mr m|wƥ$vU\晧nw]˵2?mVޕg6k~\]TfhV#g*[#<=s|G]=vu`ޚ76yˉiIJb9n~bB92Ϗժߐtm3--@YYQ>xcK.OݧS>vdGw&/2e|(r]3n֍M򘆯xWg\"K{vB?.-KA]xi HVN֭jmr޹G~.-s}W??TڲF=Zd?7iH.+٣u{S3#'IƐ|$%/@}/ڐ+{wbk8軏і d 8sq趻h}wahxd Bݞn3F$y2w\xmq Z]-gw>|S~ό=rI!i;$ݦzvMf&2#>:|vwcb\mXC9&ahph ;Zx%cߠ|R_~e;ʷ`Bsuo=,yh!G{_Ѭqoi= رo:| c6=iO4^CAy׽kX^E9<<m^ΐ|-f. ;&Һ>J߶njqK,!(HBOePm +%Pڐ/JWI>m2#}%X=J/AG@9_ ert~gҰWߙ ?Rx4Z{LozKyF}\?7A9C߸S]rx[`{LyxSnyJ+Of 8k~41%m~>tOzӯ(kFw߹\Pnrۃ^?._O T8S[GX%([u V'µiCWa8xV^[?z@iC\O>zF%N'? ӗm3P%N-Oae~g"n.it^oYwaT#hNVOefjM?AY5sȋ?s-6s\?P}]<ݮur/[-HSl8e^mXܗ>X7&"XX% \*|u!eu_4}5IzZ)n)5q/Tz!B"m!Σ~o l~o :j%}=ôj=JhK0W^ɭ7~'fiԜ~{]qMy.{9e9;eƾ/ݠ.]:QzԵshGuַ.-+В&x-}^uH.hdz̼;!uҺnVЌtp pJrzф5ME2 qZQaOQ??qrzezU񴲇lLTkMѧ_YGo̖eY WE`ޝhލWS펧=cjzt=-g4LVx:mGWټqھ:hڻN=ST+08HXY ViӱDR9cv m|g Lw3}OÔH1 sc?oj Ԭ[xd5!Ԭ[ SNL(_}]QoV+9&'4"jϞ9I&>=辟=IiŠimoqΥ9;W;St_uy)1a?#E+nK+_T55tTT84vU;c慽_j ]e]uV\S^%LΠe'- =7Ԛ"Kyw&[TsmlsbZ5x&fLnH>5m>* M  -@"&@q]NeMy95{BD&Nv_y^-f0&Mq)3HN &3&"ef)/&{˫T(&-Oym|B'L Ry6 LT3BeRV>K !"Wߎ,G;2|Ry9JW]X%G^7LӍBeDO/e:$J%Lÿ,OOP7L2nO\UiSRFΝ2oORFA*C7*WBwT 0nvx$eb6[+D-Ie -?{/hqQ1JRjYʝ[teq9V0)Q!Uf6S UΗ4T${Oۑ=gb֒ª@U`^Ҹ el6 1BU=[lO˗aO.˱^vXee"V-V0 :2I<0h_&@ v^dϔ2׺eޫlAhCZUmffe0iHN@)Q ZJ.׸Qad2:4m)? Cai.=Mr ut9@6 P?^H9lIʭ0vku\UG}̓Q`.^(hCa"InK{]zm?dȭ6C%}Mc#r{}N;ӗ=oÂokC[jcYdDX"Y0 WRi / Kɉz׫.p1>7zuO;~4{1m)觚5St yRK%c*.TSEhT7-3Oy* 7<SeMKҧ{we2B$qk/k Ե: tW60ק\sn5#vu~j3 S;&퉽p^J-!*C3 CaȨR4J}2*rU&?U{^R+ϫ.#"NCCYT[LZ,a"uaIp7[G~.AǐVݩ=<'jo_9CZwm=}Xm剿ΝR lsʕS},%224?/PK|M {z2rJTMe,S}drʑ&﹕|ޕw|_٥{?jt:qH$uz.H]9⦠n-Vz\8FMtTQj0dRˊUnHSa0ƨ$38=:ZvWT3L'H9maҜ !0m⊊&%ePt. @@/_v?kZWY/j]UjpÂdĈ1bD g2jpEsC]@5<ωq޳TjpBojXF$1".g=MZb1 ΤJ9LWJ[&w-{lr]rT{D\˩Y #Ra0i9@[Flm5L8YV%y(+`*2(?,ϳu +c[ABrMC=:;yMs蕙-ST6UjFY:[ɖg%GzŴn )h2%)恶֕-W]]f׫/ѱc_oʖG;dUQChd}~Zʮ%]tz,G;^<{vi%+Rt~Y\v;^dz|:ewD1Yc jkj{Ov0JC(&bޓ-h5K[\Hi.hXvsy:t9F5PڻuYʍ:P%y.RR[&恶$5k&|^/oؘ׺󋔙\(Gw~Y 4YRֶPmebhkmhD[9?FO)TNԺ#/Ğ, ՒE 0Y^x>FG}qM +KD2[sm,_`53/jՌͯ՜6΃^7dK3vU ^?(uC.A/%nn>?$CRoȜMdHkϋ Wr+ 끲;_Y{f(#7WRyRm2rsC# UK x.UȖlSi^Y[%|%h@\UsMk\~u y {ug{5Y,k`=)>#mWgQe|}{vQ,k}Ljuc%RC3b/u/[>yN~/snb{mvpD*Xwe~(H3J@pv[&m֍7Lsdϔ2׺eޫl LI.!Ɩ¤y-HzMIWWҦ">>˛İ0dth~r?<=wuIB2:e3!$ٜO&=QƋ}dV? g2͗-G:W罀a-pnc/jd7&I$~Km f$o\z|Do׾^c'4pҠmXm }hk )RQT*ϖLttYVT2ilSҸxfIɉhI8՛w*oicRO5kS._eNJ/7w3VjqTļC^;Hr1(U"r:wXZ7{z2rJT9ݢic(Qe~TR1cuG}:SY'r[ߑRr{*?O8[&햺~=E}gqSPkCCT{X.a1w};Ay1RL4&@%*)՘릵hQ}'``,g?L1 tcYnv\߼wDܩLũJbIDAT/rƴv(+1L*уX d5Ph+mzUNpzSeK - [z~.mus%j@+#H]¯\H4I4)r٥ViP ;j G0RL+Vi\;++#C'Bt JSZs00V|5۱Pac!΄Vw 5sjnP\-=}=z笳>8Vs|c i:KJ ;` E`LZqf|hVi)g\Q@aa L 00&@@a L L 0&&@a L 0&@aa L 00&@@a L L 0&&@a L 0&@aa L 00&@@a L L 0&&@a L 0&@aa L 00&@@a L L 0&&@a L 0&„*&@@a L L 0&&@a L 0&@aa L 00&@@a L L 0&&@a L 0&@aa L 00&@@a L L 0&&@a L 0&@aa L 00&@@a L L 0&&@a L 0&@aa L 00&@aa L 00&p̟8Lha L;ێP;Z&2>Ch -钐BIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-component-explorer-view-linking-enabled.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 174596 Text-content-md5: 4d9ed918400c45a3b34acb620293ff57 Text-content-sha1: 785470c7fe7324e96152c154995773afc2687d2d Content-length: 174655 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDR<CCsRGBbKGD pHYs  tIME / tEXtCommentCreated with GIMPW IDATxwxE-WBz.E(Q{ "*C '$@zmw?nZB.&*FpL uZȲ$I'!66rHIN=)vK0t$Iuua &xGll,fYT.uGYy>EOH:9gB$\^Q'GUY|[O˖ #9,mU(r؉#4TDu)vrsqݤ$'~Nt]o?gͥHfGsgؑHOO8;}8usTQe >f hٲN>#.b'.!l/yKe'ugv,+Iz{sbѳk߷!SVFrrri;Dz;ǫ9\^ CcA (2z%/D2rX)4{$hI%3)va}G>EvWe+KVH^A)·ӑR<毸AAP&pc\9i(s?L0 bcIt؞s?햸`o!ӥkgd/Eϟs!T4:ee8]tgS-_`e>I4n <5G.iUtLNfD-Kx3)S44鈭WK`:!z'' wp:7&硬u!97Z$_gSݥGW`oμӳw(#1dI1qc -CLZLBd>[2K\"2Û_!ヱi 6BRnvuz\n d-|a<;QdKf䷕\wTwW1kY~n7!A: vz&C͢Onv"Fd66Bof{z':0Gv7\.~e/6QmCtz4_hwLdbyCD~q LrR"$"9MKSt܉ GllQ=];ws@m(d:c-+tHΧ~\X>w?-j;*b?~^$7m)jJVӟq gb l>y^GtMӏȻ]c{ K_xjri(ſ[U q-L@1>+$stjˎ|2 gshҶEK<ɿMeOspz?ڵDedYF m3iBaz!z'^_\zeEj։z})ǣw ]vg[;t҂(Kg&5)yE=Q"bBEŢ%}NY90ltxw WN_Q[{=:'W:pRp<=sQi/Y6+iam0ugȲL4y:äȲ̔ߧNl6ja-) D2/*I\y`2P~ᾗ䮳hLq&S vƼ<с;/d:Ͼ^?A-%0kh'ȭy٫ơ$?i*,1_YNdWA$X/Ex2؋|B I弻9q%?x̋oV+0HfppN?/o熫[xI, 8S ["7@GUfzحg?|GnN}_Bbp:_jYQYq$r Xc nw[7?xǭig$>6ӌ:':4X7m63؀-ؼ%^֟?ǰ 8K#BYr ۷}>?zcLݙ | {{,%7/go hیiK-4/$ @Ij? Æ|JO.m [UIgՋ8.pœɗ!L\䓾~=I.]s?ߗ//gcD,H_1۝Lo~9_\NRuӜ4zϹ<ՊI9CeI6/͑.Nӧ2kb!՟0n^5UN<ԾX?q۰1Z.卙2<[A~ B5kxRM2n4w0OrYgѫ)2gH#1!1؁;x,s<1uU!+̬$[6>YuYWg j_i t;%La!M_fuߐN~1Kd~ՍxaXF .7'6w:|hn򈳿?AXb[nxu"Zןexe|7gT6|q s6{Ӥ|}L-1cދ ~l/Iogy>yzqw;a5s]_[*ݼy]6a9m(]s#3)u?!xy ;*]@~5Ys3ii{tFyM}a,ӍAܷx|85p%,OZˬWT.xknMo,8ϐ}IJE7lrin5x_]}^%Ë+|J?|.N3ք/ dCl =_A+f O{.yu2`* zq W-o_d-&9 ԺLx-\71}A.NeE>7n~8S;& ~G|gPؗ-0&0P"蝲Eo[/Ewc]aJ"fxPZ̲uVƚ\fLcw;k]%_ù_y6ϟů+#Z1{[enjpn ~gHx6?taE`We8ؒ5a9g]eQ{_Jg?lĀh8ƍW6Xf\^1cݚZ8Yf_* :%Skj)2!>]EW~9+ۍnB*κ~ iX\,V2ǖ0hwg\e|6 ֨Z _eŪן%xք~=sXC-7n:/|H!h8zu"9M<޵h'IJl(hIGy\ڷ''h6!I`:kXN !(oS/z<޽x<tbG?{(Hy&!z'pXU>;~6'+s9vLmr~׻d =f>~B?Q5i(5)piĶĄA>OMdCa A.m/mGbRh'b !R7,B^9?Ї*Vɜ͋l>1<v=:eme7>Ŏd݋ݓ4.сU*2Wǹhsu=q$ c\Wتֱ4tJ$P}x:XKr`9^9>uFIMTZ%֪b $j:_{/j뿽^wh NldyՏ\,}zjkt wP+z^$-2q?o[T^%g78krgv $]>.)=:biu~[vȡ-6,RJe5po c2hV<Mh!z_sxvk(2^?%#Ẍ́#:hEq\7fs:䉾A%-( +@;&CG7ZjzfkĒx0ʆI1']/jFuV^~ƿ:d'LvKyzZRDX!!u)a}:Sǫ`lʴ7 SŬт^IF1屺l, {*#njn@Gs$D1KМ&B]O~AݲjONR!z`Tɠx4q宯YUpMdo.ernLg f~"yބX9ͪF㽓v̪£?瞁획Kֳ@$7gɼsS^[sRy:b6#+6̪l ,6?KT5cGGkiq%:$jEFHztH!"4HT٫ՌzډhBJOWx-/OȔ\&,\sT !k?L{wLU7;ld*c~L'[7pwx=Kb'?P+[Jj2Vq^ߡV>}?A6pn\\م>m׻t/&lrEIno&qw _w5g/ou_ɹb+KE5s]\B$$& kh$v- U5>"K/ǑUDAOlOLxKR䃮q q:rtP%H ]B:*4fn D6!|%:S oOye3n.<f^iy1+>83R!;X^,dLR_ӯ gӒ=&fP@|C^l~_M>(-= 6gݺb8hߜ`29uQHfVy wZx8[^4`Ǭw8 CR1z7ϜwwWG7q\񈎶e=)Tc MG;Q&{0#7'pmH$Փp+f5VM(rE,!Fo6|Y $ńjìJtMOnਝ_[tґĄxdYfmeCaؐ8irc=۷ceǝ74[zH?gD Yy6- IDATxu/^@t7$|Q5%1X.$׿{7 DV0Y8(f3͟k7#svwCEdV-|UwHw-IHj2 i!VQ7^1T|¦ꛉ$i8=VG ߰6NjIK{(rChs3ܗX?+ja L'}缕7c  Hy _TzGGk}\֏4cs`\$K/b֝ ^iXL2,1cy^='묠9wOM &8 4.lәag>"]elX?mfSDJ⻍9s[.mB~jn7^}`7[ O9UuHtC2uw{qENjt0FNJj/0 qͫeUa&G&C_l3_cER.JAꝋ;G3] xFiuNO^i!u mvM]< —̤`ܷl?B2C hGVb0֭kٖuRH~DDو-"$BBL?.dՎn xXۤ99{I>[z/XmXgvbSV䢈r6dÐAH1WW]`b6mG7?ۯcoCim81qKVd4%=a|>RFc61Hֳ>ꢺ !X6O0is/#>^BnH 2Qw-d-4^}_.?z~lj %ؘ$.I{08Ϣ37ٹ_D+dΪ^KM";zOsS4.q" IOMS{2ŢiRBEQh׮-˖-?nDOmiݪ]ۡd!:̴UEXWD,&Eoxur6rr.~X 6N 7S5ԇp,(ùbKf'E]t#V*p_Pq5v1*K{z05.n&c/yl{'nAr{y{Fa5aR}]שqyyo8-16 f`4suقݿ/ah^'5hF@ڕA5te׸ q` yqX" e, t'ڼ躎>קߖ}*qn oXʬdNq$%!9@װBuQڹZ@-7eމ٦ T՗)(sI8yV20j>aP58ĶHYkio@gCII3 Kݹ2"A&i&Ei΢D&˸|D.!λ6J|Huk2@%_+5K+(ր}'=2׸d3QYN~)\@WCFq7s8My Pl!qjӋ^k3{'Id$z]q`yidIAt]Tf=&usڒ{|z>ɔ/%զ|f?YmAoIױ}MT=[rK9m?ik 0^I<>~f%R'nn9wR#{:ɨhJhHY\Ƣ(2˴?'riyEMXq|M@$wj8Nr l 1\#kzDaʇ'8:N4Er3-iHoWsŐ_6_GqI\8gT MIk!GM!=LIw Hd<3a5 _i?p(TɽߥgN3qsX*׽33t[fbt=3z`AV|cT|o*x' k^)EтO߀xϙ|G<4 xo͵w_/]ͯ⒀Vs <ߑ4_K}Z gq*2h9ﱛh1|䋼\*xJdgG캎Oi,͟ʊ?1I1jYGZY'iך$Y!< sv{Jj|l?Tk` l+l!AdB뺽A}w[ݺ~7M-3n&o#>v53Ts&kPOGU ò*EuaAPQB3 L+bwXPu'Uuxu̐m>eȂVb,6 &E}_c*xkR l{MYx17˸ W UQ'/#"dIfEvn~-;7 qU: E jମ]iT8l* &&WLsP[[KuZeٌ$ +&fegbZHLf lB5$ËŐLX, R,^~1;Z :܄m˖-x<RRҽn&Tsxul6kpyp*vZȊZPS:^ GoAAv*l2^g-.(|9Gd஭[U^5[P$v t j*?V\TWAFUZ<.29)yݼST\̩j^ʗO#+MS[c KH2&G` nP]` w*|jM/9(n\ jW`J}f 4+ ϑ1,r]vSYV4IUY5L G Be$o ~p۹:PPP]QK1"yձ- _͵vq7؋%\Ɖyjzg!u=V\I5sz򨭫#=(ںu+55d7?N7qy5TYfR8D^ۣ/ Y[ٴ-<8k+LX/Κv?,8Sj0-cs1vEk)c≼@2b?Ȇjhjʨr™,VdCgF6t\5Te,~A%upI`; ߋXb1zRRܗ߀Zob:(Zm ݼӮ4WgNbAUv ,5UAS}6jjq7Ն&qbFS15t:c>#ąbŒ7/IwUR頚HjAUetW%uNɁUp\) 6uy5YQee'Co;,U`a!N'R^oڕѯ甶-po;V_u`75)OɄμKsU͎AT,~XQno&0CFvjƬ|dR0:)j`i&jZwl|_|h^ QdtDQlaM׷lNif'0t_6YJͯȵ_\19 4q$4Q.avTJ`T5kK^⊏5_v,E|;Y 4PKlHκR턄N LBB Yk<v;@o7]{E0fyedU֙\yMlLHfPdl&UFmBJy[(PGlf+$dՊߞ-$X }ASIִd_ٮh $?:9 I r`Y4سLofOj >ﲓ? ?sd?]T(N6,(g2s/md/X@dd$qqBϾ(pټt}Gu:Z/>E>"hs֤$S쯙y 6k^Bvz>HفāFx% M]M9.فM)*W'qWQVSEaԜTT.xu5kמўC5. G¼ S(vdM]/* }$aR* K$c #8pϾ3]3#d=Ps9?9'vk^G$fq-v't'V"/%_24ㄩK#==B@36qa$餦nz/F$Z &&**IpL+zlob-B$ˆGpb@pp@pGUUHIN` d/X ďAuQ 'Qۦ#""mT#8"+sxfI;N񠪪/3YQETƾ@4l6O9ETxɍ7RRRrs1{ucRx:[N'6. .uۑ\;DJ7WZ.;W @p\x#$IDxG@JJ aBo)nq hLɾ?@GbD68bG 8#8 ^Gd$$njD?$z;G ?U撟:|?b%dhj W5q2 ".6/ WFbQfZzZ,kN,YFQQ mZgbF8x9+rv@@p"$V SUMr '(77o3=(+CӓIIMb̓1[gUU5HfQuߚE\9ĥ%.Y;b/J\nl;s>H;$=GV/v(*!z!x%vXOt InTmڴܼ'a6YR퍝zEyz}jud?hfeNKj4/ڬòNKsmnL{-9ӈkWU!1Yu,m0C:oI#!>łj9sx3gY h1G b'.. YE7[{nEBmJ) W|Kecؼ9=y=XdF$Z l1}{KVmF26|D;0 } 8Úiϓb!``?"u6k'ZfmXiNb(?JbDa?m{d@5;]"K/kGCԖU2뗹|F&8<#tچ?N:LjugP0Luj}a?lmªWz@p# n"c{=[to*k^, f/Xɤ"EU0 @?4Ƃek萙9+oAv XLff;u+Ys%z=lG%Aht8gݑ_'2ԍ,[Ύ"i奕lަTv>ﺦQQ+oJl=aV/(ӆ\? c{)oZɲGi {H~ րȽ\UGr_ٵ3TBIOgy>_m囙Ղ1h5SvBbV=;djBҸdVc7U1'n$2q^cL1sh(!xleT,yDG7fg[l HM㛿3¼96R#D,+Kk m8 qCyim"1wjj%jڥ'aQ(Z ^zpaj{ `tܢ(Z1~o!YSL\0(^;m988-|?+6PGu%.5"c[`xuap ԔVrmTƨ&m,ϵҒ"ye*cUn14Cƍe.Bd6tFSUV篯f}熳qlڂ f+-+آWQzO&r1,oIBJ° |W(Qp֋e?N奥{ϥgpe/|4^ZbiJHR$>ІqŊ 6",)I"6Vry>3ow<X=-?{ql]z$Dcl^84&&K{/ .065Qھ$B¸6Gh9sΙSPMH A&;:sk>T*aQy}€Yk{6{8z H >W;N NjRZ\@xh(*#?iTc9kUιztފR֍R "u_ׇ3e$F^/i t8Vș¦ݼT&l,Lr@״0Y\~8 [-'=x;7ݕDDW;r>[S5a(|^뻨T0ٺWXyth:d?]2x IDAT qU4Q"RE% o+b4G N~3E;u!-`իiycjOS$eEt@/jYpd;QRiPi< +Q8TOqGHHHGBB=14Wl!WPգ /J5 |i3H#_'7 ANg@RfP^EO[Q(PU/1 ˾d'M'6{`c!jN^6Q<6iQX41 RNCeqy=?,/5̥lȽLG{P`HR*(Т{ SƥzlR#D64PG{S-~L!wa"̨JV֬ipa0(^m t\0\.GO drTpfg(Y"ԋ av =f: hbL2 y$hM V|K ]| YLB#ʱ:LEO^F<=lpn֑O}}J^BBB<mԃ7а/%v$SW_GۃJDP*ih4“`W߀3W2w2\F^x"&BIAmYQ\SKEI'2& 1(}ܳ zÇB5<ï'\n/ݕMl eFTi&Zl Yh012p* 5<Ԙ5"䘌z)CLҡДա stZ%R!{{@lVj2Ο5Nϫ:KBBB<Qįl9шJbg,I]}.s`׷F(rJRSrV~&f$|h͡h͡_`sP줒8V~ŵl(>q:VŮV>-gxhkl㥧7OUp$+`vKcU=W>^+H!uoF'E^?-M=~ֽ .O-d*5f"&š(y~fm!:)oUs]y\hcÿvJp?n` zpNlDܶ%$$$#!!q4_$ۗ=#Hk<?1UPg3o;Ɋ"˗~1ݨAk~9̅ s>ؾ*v-9囹zP:,8Uz(F1? [RA+КN;^1 7K9 Zl?ħ%MΈB#@ihvqDžeΨ+T !fN/奵>ch1}8O!PAr kɴZ DL+\'}t:O9uJ $RYxHKۀ˥ɉZ+;݈Y1Z"(l7 3xqz*Dȿt2Wf09';/iڷȤ*cg6[k#(2vy8!((q\IdjRw]JCOIm+O?CUXt ̍5 t*y 6GQb5~Z\N-ll;JUuR\aW*9;3cZ!>}7~HϗEHHHH| Ȅo'$$ZM}}EEEx<ޯRl6j;o*1ix"Wpaf`J>,8j!NEPkIJcլ>J]>Hl;:b z#ذ"l"HnA@0T7&h Ѡi뢡drQz\ 2<"j |AOˑaڠuTô Ow7UaBKID_s73xu$T(dAs$x$$N`)y_g}-Ε %:*sErÂdLRNvqdLvs #M 51g ȡ",FE؈DiFǏc9Փ3,5Aԣh$y`C,XQZ#!ZOnDF%$$$$?yW}2%$$?cg]J߷wa)34?馷 %!*+~<%H o_qy)nnKS| *$",Vu$xL ABBBBbl#{8oԖ%$EUMj`ZvJ[B(" Uc<-$,JCT%$$$$#!!e oVl+f c'}rӣ(x@ 'vK|#ט8x;NwL[?{cM y/)nB?X {xrNr&Έ\!?y>9P34F~u2.HH-UBBB Qx$$$i&nB:)x~~gLmiu+݇f! hSZm<G$dUՆ3ԦS3Qdn$9Œu /?vOOof_q! \gsOE &H'gvSBBBBb`(yI7Yjy=xʼn Qσ107cִ9~_w BٽV 5FM|r㭨Wd{6/rx"݂ct1;x3s8eC89LˋB{NvX=/ٗ-`B%0!9^KfkI+$.{w_˒ H1$$$$NGc28/ڲ9&x\r9'(cfh [7ݻ;=ŽWL`=R1$D+)N@D/ /~fFT6fO!w[i+>q ~ʌwsDt]{^Ƿt+L)7nFuߺ0 SI;CFk n7c^Ol=dutVO]Cb6zht(l*B&iԖ%$Nd <7("x=. mjZ ԁߩt-EEgYݸh)GdT} ӯFM~ Rk`ׁwHDiT#QQ= ܑdO`kTPk Zq_v f$Kkdʨ0(I+O.]JV=sSp` 2I'o=MT:zKHHHA"&$U9R[|x|^@E7W߉;v ۈ%Ïr91Qz+ x vdJ_)mw_iA8i GML8LȕcQȈb%7r-OzH_T9 ҹ ףz`Ev,*YO%7r_<蝼{!?-*C'(nHI"D)5^ pr2]}ctjTы߅5&O]I#$"8Й ϋ`Gg0|`\ AMR9s%;9D-w}#P*np+*U7nǒv57&Rً&$vOI5H{2(iWބeZǓxS#RHuKWBBBBBBBBB;#xf=vɥ[lgJ~. x%|ˉHCa[hCC]9 A8hLgPLJ~0)cIγqb)ɍ;=!3LJHHH|DMckwDaMBbw[$9% 9T MtV ő80-!!!!!!}]^zizsHA ȷ&x>6t5"|D1GL7=nB:r/U9LJ8W϶;ț2\TTƐ1wKL4켻YuQ^*Ϭ?IJi$K%$$$5B.H"qNImUB)¬LNF:=oKG=hT(Պts*Kxk-Nd7~7Vw!~8L&gsr=%C|S&E=[J8΢K30}y{Z8z \b<:_<GxYvQwx76s͹|'W^ n8e?;軾mw>;ށk=1|1zJ?_/ɦ 3YU}v$L@&s7GYN%łILh·?ᤅJQNnW%qĕ&t0&MI6%iTZ_㦪8% ɒ^ *d2i?8gO|\엶,!7-ztΦdą*xD>FFTj\&% mNg5LL#<݅qe1)59B`1D nz룥& ;oΦJ\LuE{Z3_0 ,֧[þ}jV~[epֱoeo p-[DyЎ Hhj?o?4Զr2lJg&-9\1=?l||3.uKW-!{\/Tw'=' üx"ZY+l,F¹:s2`9NVuG/%5S0~n*WM 1r{)*(WS[t jܴ4ĥDqtFW?exvw7 (j7>Beg 99?ny*.CWF9ntƇi.)/ۺP]4EGpV->/n,J^^?nJIR~ץo5 gUz?l|%I=*+戼Q;h~pi(z-u%[M٧Gb+=5Xֆ7st; "%G_k%HZAJޑ8OUU5`t dx~ 44;<T/(ΖVBͨ2B>PZЙ ([xӻ[)/AH*5o O/U+ʔy11o^Kwڅ\F^ΖN3yć;(҂ |#j_ i,l!_b%,J{n:mSe*'2a _D9Wd<a22qxFRѥIZD|z6lΎ'1,Mҷo AL #|Tֲv`G"Y],nF:].bt-i`j>rI,j 'e@g[;۱'rd36qMzS~6eX 8) ,ewsu4Qm+9P M(o;dM grz@o=5q9$9fAOXsh)հ/gۨڲGe:K].n_a^Ɯ0NToGR<Jkx|>/^{g_~VOwo~3\sK&eelPEZ`~|cfA%-տb< k& [xR:7s81"sl=Yp7n ?^Ώ?ߟʧs2jL@䙗C-1]en=2o|t``1KAdp5rh?zяBQ IDATn}k??'Trg)~n"?jײ߼*~$Ls)zk5mx r |crMa-Wdg6B.\$MSjÍw N22 `M!%N=c7O)6V5LnuN F7Vy~ǔ@sLV#3ȳ|o;Xjnpp^J*:8v M' "\3r7H Ȝ4 41#Vz|)N&NuQ x~rjTԱv{m ᙒf891>KK@H(sBld> :>G;Z' jR\'V%x.|Uz |9e;\ Zmt#C>jëez o2hf^v ^όqau-)$?WIU9̑8 7~*+S pP$PCcȢ+ˮ>DGC/x:9ȏ "В1.\BM`W'0mqv^~7$qpB0ʐ-"IHHÂX _λhnnZ_>Dq f}HOOpRR(-=B_?}n~OxD^ݨcW`U^7T =>BtدJca>J8WEY׷!LSv+,fMTګk:);xuOI)sprܢ!,9dYɕQmaœyhklMNeYbIsBCՔv5z`$ Ua.;hddu,T^H[Er6vYR&g){E")dG6ݝC]WU]wG˕L|5[tg1'qB9E.BCLȧlGeƵ8fMAg)Vf&6+&ak{Mٲ\z5]wwC}ajST oT 5pQ]3ؐH"Tv@_UucSPM#y(akS?RW&礫_’#X{?yrK~x ?O予oeʲ':jݼGCsQc= {xcNjx yDݴba^2=|msOnjV'w>}x1Ŀ,}ŌI Pő7qyy Hn j摣'G2?aE=*[&e_i0†6Ԏ0Z>O'Aj4J 5.?]fbM;OFtӃO%!-W¦^ d*9j!pBZ5q,eI'<}l(U] DLeK Ƈ-S\*]So>l/Hn^˘^)x{W2 yqFTж'6FiW8fE\8_D&\E64gtu ?M_o 3tNG1 ew¥-Y$2,:O-v+|lWR1 D%ș9 cuP>8PIgw u~fMĝ`ld׳ oB Vd8~x30 $'ckI]¸> Шhj~^%9'-ݝl=% {orL5^Op"O Jj9tsn39-B i9QANar⣭xSPӉ?FñvT 91A&ڡ?{' R`F@צSPC:L.9Um 1 2)ފB4ai0̣ SÁBD܉y=hj&M&"́F ̲8NPUfKqQHCU!uDn,AeUҎ2W'FC"n8&JP[ZpXlM: fIJ,W`#؊Q 4J4=%h1!Lb"AP`xiq%13EcN5TxQ=7€`-.X±:B>Rҁc߮0 „^ (X*>tz23 JŒQBRcyʍ( 6C&?^90tLpD:8[I{9k*5{x7gO$cKN-&]COO;[?gx%S++P )܏/H& '~rکXr`6 F E`Azn`+V F- # | FA-:K,Ppb?$+c8Ue?$X+fq{pMZʕvoT$;yH8!=DB?v'.x`R^B[.8begboQ$ʪD1Uuӛ1WiT#V8k13V8-0?(d<Ì˚JOuikcI"4XZ`Ǐ-su=x/-T,-ќϺ x8,g܅hy}gl?ֲ˧eDqj:w}@֤duY'^pRߨ@j"=(Uc|0hf&:`Fo +7[U|{1#H:P"pٻn0T0}t?"k:iΑ * 'B&f|:7-yLIGS)٬  wT8!TajuEˈ΋cgem?eZ~d6fXc hZ쬞&Gkv6?şZ:kǭN Yx$$$} OTrh׏w\>ښ@̷ `LDDF9!x˞=[H2m4 WxIWȑcd&,A8j0LU9a#'Ā K J1eJ~̀eX;hSpR֮"$o&^964B4g3{CzD٤&Z?n]P@3k0z*E/! #6Zz*j0G8&*c ղT:Ù}apJzhX]՚L)m[8i|*V&29rtVzh@Cf|E_XvJ6q+׌X/"gmN>PVq[x&!&b ޥ:x7CA#-@kٳ,oYF$ Z9` &؟qѴ`C]@Qбi7kY67D.MaX|}yG*/dbY d謠LGΜ,Rt#Ul86KrɂTY{L@V6S%[ʺQbcQq[xN?1ق:7p{NJYO]UƲE2OJ`fG&M9:.'ͯ!*BU% t$#hE@.Q$4hƥ`+*X΀LΠ'lV/`3* yOAdݷ3eC\dbyX#7*6+.0 b!yM2)#X"4r2I2B IyF@@QD dZ_< M#m6A.uGc wf)ŭ-AhreFXjGBB;$xjkp|9 O|=U-?< ZQDBVʱu{1DEux]5޷$'FP(q̿t>gy *ȿLTW#!<;=Ečy%31OMKy~/-&uQ™8*.ʁeMyRD>5sˠ'']AM ]tՖSSdsIKgRf[x#@Hb [J &* fiZ5*.Γ- їu'HZ;*,%Α "Ycwϵ7n/w,gYōKkX=Q :N Gm;Ȕ&_ߩ`$w,űw4r˝?w\&UqjVp-r۝+xAəAX g-a!)݂2]*W^?6>щ 㿿ȁjGBk7hm>q&Ι g1I}}aaa'~:zi?FiAC̈́b ңlC&ƛUjT*9g ?}J(S#1l޾eĄ2}퇨j DIfwʖ.D=#~ʏCÑ}XC?{u?eemKa&@4;+vގiҴك@6!#,c0x$K?Ȥ#z=>s>s^jʪrՉvN-2`PڐK,DEٱTVf G-ZI-D$B΄t1 SFT*4$Rq8s^(ZYpC ܀˥rPRBiU+ØLN"9ɂ*ZPvv9jYcPbDj ֊v*"U 604%*BBOK7~ Rz[iv h,V¤ '&JNm9EEuqĦQ0PJk)mxҦhS'CɞHVg;ͽ 4vԫ >قp5LDoD-1c!1Fi(fFaaQ(R ۫8~+hhab))z)}t!EN oY #55:LǎդJjow%'V=SdMNJ.XpETsUD2i F~y<אNZc qS6fzi\D;dę.: fnjB8~29~̬i8B?`2D*]QYBN1yw1B]E/si;lW'fixV62ڗTv/ψS};ҚƌRlfbғI4d@AB5cB-9e',ax tuD[̊0N]uhpI iѱfTRc4s`Ks>k}7!ҿ­mجV~f}}cSZqc_'nD!|;ʞN=/ц޸dbΜ͇9^$Tgҋtá!"oW9Fj33(g^h ^fB B3JxZHGħ'< O\z_ZI IDATsKQ+DZt^B!%RiCB3Jxd]壻*dL\$SD^HKӄB!|>0OM!{BIx; WBGg'FëSEjjZ6솉݋/B%B!B!Bcj\5T9' vc3hJ nk;Ȅu6VٻB%B!B!BcYxk۩j7y]f=vdWO3N;]tI$L4E!@o܋wtI_5#.gWq+sSe&yņy}wD2|i{PDđn ?h+_ pjK9^gdź4#mٿn9)*w'+'9i;_na߳~n6c5gƒ8mkn"}r1'pn[NX魦C4miNjqF`ՍXQ:!B!a T1<~_ yj RUfp x?Y&#>mz*;PI0j.]}oO֧8U0L6:FjߡH<%úY8/ Q~`''dg롭݉CfO .-c'Olɉ> Yq!ӫf/H9]{,@۲-/p,O֗xb٬X 'ikC5 T2uNkn,m;glg˶ôh57&:(:n9H3:b2pˉOԾFDz^j<^0v >x=+|TEVz.9BTa{8\NJ5n~m][hY^TJQgp`v[@R7x+ɣGyQ[xnHV|L21|_{T̜e|zv~rV|A]ؒ&;Zw!˾77lǣ<2$wy3 A$AaG)MMzKB6lU&B{??c͝3yˎQ{=PTOO޲EH#peЍ>a|勿,q)OnåxG9w m`t8Q\Ŋ<7Za9e>%!?H7 %%j+@j~2{ 9iNCOgi$eRSڳ?Њ29NB.Y(ԕW6NI]OxڷtWPuSSXq R4ƑSgiI|a˴Xb 2o)"|6}6Rz zi,FI H#Շp\æ;Pq,M<6s;rvm[ i^+dl1-EQ'7lZOcA͇Q?1H|8/Z hMn\m~P@%Ň+LEo$L6}vrm0ߔf`Mp8Rmk\LoDnOaRi˿:H,=q:怏6J,CbNaY`8^=fTP٣v{=5~V3/ 02U ~3= KYnzJᅪ!# <巨k㕊,wK5xʖB^k oby \QܸԱWyN2etYb$XǮBze+2W~%񫿽Nes9úYFjy` Bs43N'PdOOO/N?>:s}yq,StTVϘ_B7 JqfLE_qȌ2Kl8 :Qt ( 7Z16$adW W)0Z j%8qh\^,E1\ɮG(mʚI/" =㌆[qkbKϟ9NrmȬfZ<̓[TR.nw`T $¤'[Q݄@a242Ȱtj-*~mHƤclc L* JJh!3SPLuHl`c>&”3sȘ8<Ob1˹Gvzۑ%Q tDԁhL^AMGñxSSf23&FT:-NtcI%uVLGH'BʄnI$2hDR$Z3ZeGJnZ6fb4F;F|*&Ҳ;\2 +1D初Ӊ3BDJ `Z31b\-@P@X#ۻ\`ughp&~C9g`Z^eQZFǠ>{Vi18e#fEMDb{ir&Y¦R+XH>t5OzJxE1Ė 2ΚuogæE!ц ~#gފ#YQI64 z3j%_N._GFdL>#Ƚ>pO'{BWGBrb<~8?E4F2ȿx{-+IX"4oX1o)vWi 3[JV^Ud0z.ƕ-d6pP/s8GxNd- ڢȾv!<=8?r)rvƒO{0ǓzKD'g+yZ3ȱ ]E\<~5Sp>YiCWVRs!oZ|vE_]"l%&H@3F^#QU63EW{#yzazZ%|yy-Y"=Lz3Ȯ tr1f{F'9DMS}|;4:LoS^B 5VQGk|xrva;o43tn[S?cL\S0ab6mb6_FLa;;FиIZ+3xiF5@OP%eEXw+ I&=L]Ìu 3 Be]tE9[9N^RD燵< wjhnhQHҒ\ױln4:o{v_f1YpL<UgtŭeH.K'G>_[[Ōhrb/Of?M\"ܪ]9$]$iZ) *يT:u `r|zb|jB.e!}!ñɋ̀wJ%`1\;7d` Fbp4CI KT]N%g)7n0,>v}}5>W-fFNzwb4Lfz0HH%;-"jS?I WpH1r(@ fPh30񕅭$yjnN'[Q#xgNVP6O2c^nCmY%UϼԕWp2H!܌㊤S7D[]'PAVC 2 O_o.6(a7N`rSϾRNچʆl O31#i~ Ɠxiv6+.'hooCZZ@h=w!ܓo6IS(= rk[}}M$5 Y\ui=K|cdΊ 8HG uF8={_F29hN/aP,Xu!`n?*>Ƈک /#oo1r4nh~A~DR2Ofm#{X̂n$igynbqʊ 1 9RR_g9~ ?By=ydnBoQrߓH%I8~_f'^+FͿd]PN #ks3<yX*뿻֗ó<Ɲ,\ay L}=͓pbO)4q:Yc]m')`1;G{6V2BݸJ\1)(ǸOGݴA7tC( 246FRٓży$XuhJ #QId#n$""S9g&s2(p܉&j#NEJe^ .މѦE&SJL氠]DGGeӡTq&DcA#HP]xR2ə3(JCd47BУas9pQ+ՄĈcHϙG~JN=aJ=H<("Da,hsH DP*X=(tnv^ I[D B,`v8b.O&3ւn&yR&LǞA ۱;Isp2 JU;\{q(&'Q8].2f".ڈT @(Qa1!(1EE<͆4Ͻ:Dx tb%FXӻGF" NdrnYNƑbcH[ƢSIHT2Paڈ]D8P@e`ۉMl#A,N⢉IK@-q'/bTlj XD@ 6ƌNy}8la*&{DVk7a2ۉ6/UV&Ei4LgiD#$Q ̠h mbr$ŠU'b,FZh ALEkǬ,SӠwI5R&t`[JBfu!en㎉'ƭc,hq$a'I^~L)s ceZ9VSjnhGO(~N͡eh&*8ppi3ԠK"ay)S[~`(g! #׊,:O2#9Պ|8&>GuY$D0*D@`ee(buh,ucJ[hln`G5G`D/DX-XgRVN3Mǽz*RlU4O(8&]^vpˤ$0O}ރl{0|Z²f3U,4߲~.-<ܟ:µ8S/=SL\|,2G}oV͇"gKl -:Ϋ[d?@Ŵ .yҳ2]62m~˲xW<μxS=`PFLf礒b!Oj"v1%1^tS.q,)?o8g͋q.9+Vǹh 3Vpյ#m.TlշY,~ %qg]bN'Iڢͤ];$3缡J!ZkdWmD6k6_SƓ.E(Eeg\e-SXm$YY9}?-<"xVVnNx%Dx,>w' qmgK.g]Iclw^Rb/G<,ydOWϼwɶ 7(sWf;A4K]ͦY1Zf_i\p3c K3qިhIJEntE9Z{i/2XNch)mwKa5)\ze/DLf?ċO_!rMpQRadٷcOjf vPsuܺ9jbʽ[7;EMQ^y5&ɘ&Gk F{X_un 6o79$6xlƎwhD_ le';w[Oga mJƚunj1~Uq;N3+Vb*PE撻XfWSzyB"off &5b/>! lr8$/R{$ &Do1Y!nVVo{$aDU9"eNjsoauylavͳ԰TvgL+J{(s"&ВJt%ndݜhtjf%3səBRlnJAiLH#*Ag|'7|)a]ɵ?j0#ԕ\{C>ݴXmJ z9iKE)70u_ qZ9Иibnk%]υT&\FbtFeYīI18=D#n= kX~B|Z: vQ}sы݌j)t-@5ʫN~:Q: ijX0Aϴ|p|G3MuhxQ|mAo<^:/hY[}Ú9)4,L_Ǜ#M| NT1<B ~41ilA"Qt 6L`|~4v"3맄l2Ow0Ys (B!",U+ /P77Hj鴩%$>pe ONkTJ$ 3O8!VjSLq\\\0@`hr*r_F̝xuܾ&E]sHŁnpEPMՎh\M қidIǡH85J'# 9=dc5Gl3'C'2-#KdN&FUȞG]6)5؄#GđM#CH74"q!x[TF!&/,D;ԄI hr LУ>wPIL6N0XBP9;_&>SD1gcsI$].s#fJb_ee>ek٤c/qCp8@9r]#4%␊H[%szt79t 6ׅ©myO,F,(NAõ4YKS^*lsR~˽tUS)LCb K\}v(swrf}7<;̍1тTttzCM8|[Xpp2ewz9H'x3]wƬvb+Q=ILLz#֑vo 257#\ :qn<+s֖\c%RzKR7[L^>ajy,bmKݪ7P1䥱fNVNY˓?‰K= W+}~ݴO`mkF]@1Nq8\\[y_rMBDԞ\AS_V chdG6zژM:AcS/#a 1a;p-ٻ8{iwUYދܻc ᄐI9$!Iu'9!Pw7q^^ &Wwk~5_q8'>zfS#hWn$}'xΔ`n)~w)5 f\%,Ó=Ž]2~c⒞0wRXTLvAjA0RxH^xH-?}Rʙ&f ǛT=0- F.u ױؿр#.HxtAC.iOS֚CP"2ྚLP-_Ky=o^L 7Ҿo qb(bWطJ5ʥ^VARO=*n$%pl{7m;w=F!Lx"YIMWkz* jH_'̷' :QRQHҹGz%}1^9R{՟[@~N{ގUa*lBl85}גG9'u 2(KoSV@Lތ]%a/x^A<-PT] 𾄧'R 1l.G$ _ < ||`E 23dR%2$R($2 )N$;SJFH-a%ZO5HȤJԑ2{"f.]IUF"0Z# gF.9i$8(Ca4v;d'Y8f)R*'YE3*!??4 4+VpJ=dP"Acs}҄#/I)^ɒ(B۱'$Hϧ GOBR3^ǜ\/*P$?džR"A"`wRPBAnj-w,DgEJgviTd`z)TysH.ŰZmyN-Kޠߊ󖠾DJҰֽزК! rk99B 秡Îp (QoA'<[v{sт!Gĭ=yv Jś[ُ vGF.RP H`^/Esa9)ěE#  |%ι/AH 3yg>Z.)N[x^BT`5j?K)V͛ED%+ˀVA \JcBgaJH"F+8=g4q{pXuoQҔ^hslXo5?O#  %Ҧj.p$L8<nZ^7[ǎ²PK||Wɠm7Uh;Mki:Ha~u o`^~-󊓑wmM5x q^]n7 s '?ɵIPH#AAA.}y}5h4g?-cccr}hN4:ݺLfF:gEzzKT(IhS*ٲq׏q6DLA OqeK >2:j݁8ɱ:C)) {q(~ $\=m NӣZ(eIU\y.QPAh@Ɔ&1#.'b#}Os2l{yŧٺ$G0+f#a  xJ{n_A߈u+GV1O۫r>_;aaw75mylݑ$7JVa@[<؋DL۵1|-JC*%c9$_D 97.#PFPB. k',%21h   \>' 8s#ݘ)JR#a!*eMk`umsKgQ?ZNyk_ͺs#5dM3?er?pwo [==oYD9}BEU]=3&0t^sbxw/ HJ 4Ix E]^̙ (HQ7BD9-BA>Nٲ∌DTI)1}N[1EÄvgHNzh?}¿~yAp8|QUޫ>H$%q~sbJ]"qT`V Jgr{oeGgǜJ+qj=HB:S̈́멨̠bwWkG)Luu2#}#h77rM4{(ϾrCPL,,v(PiX(Rqg{;NnLg~)QnϩGxhnj!''L6>m|Zj Rq⃙w""dI@&VwM:sl}K~ta 14> 2#00iPDeJٲ+<a|>ҏm,23BVHPN~m]!CT!hJ Y@Ca?4e%rr'Ш\;/- |PT*jeG Lp/{9DjFMD(hw)R8-N}T^JA]ej;Ha/#,͙ȕK#l9CҐO}j럣'XNH[p_߫o׉WQ$eF qjEQmn8o> s Gb"iA?1@8p$[^/,EU{Cxr4F-v AäŮ(0G"&J#%%ftR9q XD|Hyz6N LI#}(dK)KW8=}]]}Ì)Ʀ 䖐WRHW-csVX|g*Lq[uxa>{\_Ʋ{w ; qR% [EA ~K BΧ?yәh'Τ̬ :,)Kc`4teIZ3in]$E&A,B4yJpbu8MAY.=O.iS_a:J pt(J,NGw3nk3?q?jD,zԑ0h15Gylq L3IX`G[N\O9 f14LkޮAfc\  S%UrbV x<~X,5B&# p:LؙmhL G>AZJ89?s !&H8c,\MՓ}ɄLU^p5M H'iFdۓO|g}u6/MCy[]cj?U/:d/er.Vܥ,HtPB0`'`&[kDabCng<˵_R(1{tӭ:b4AW0Q̈IXn0x>_DA;>N";JSP8l ^w{Xk$ʉ8J"U=?fDp("o̜[xKT>Dkrb̡FBKTʢe%{qG53mՠN mSRf13+^7`AB%U.Jœj׾~rgsyL_P87hӘ1ڟ{Vy2aO~EATJ3 G"bf\r!7` b1b ['!WQN] @0pp0C}5A%w}DL;,J }w:O S ΀yhsu'̬$; í{!2CKtr#w6$gƼs^t*R<,*O@ 64Q থ>σB(97]dycA.Jb1#.3x @,;A\OqBApoe8JRx"DĂ L o4hHyJ;\b(d ?u1s3w{h@R5Uǐò{xGANTKo$4&yAjIVu;6 KřeG{As.s8шrkYP^Q$iE{VAAAs,Ȣ{phGUvJ;ON4H SA4RřH8>1+EGYJ&5.;_1&GHŒn!_KtLXiU>9ے3(M4LDyI,`i]d"!gtٸ &e~)Y9nQ'1c9ؔe)   I/r93?u+K,A"``--dgg"J{wX DwD S@$2!u].G kXkFq<"A]zzz|ˉ1dF'&smbf ]žV.Rq0=d-A!y\eXʙ\aGAG0]̈ͩTMb^bfS\R?.˅YNtmA<IJJ324>>)f \KxNh%+wiDA=BANvZ&钥 {x|[i! =   94 ]=g  "u O ^VzAȊPX{Ow3752u&8BkC#-\.:o+Q!Gg_Cϙ,z2aQI)؍=O$Zt 2ߐ:uKziIq׏#.#n`4HXAgM{׺ wF_Fy͙f|`)5^@O M`!s#Jx5REѡ a| sΞs #Qr`ɑ\cc&HHǢW"v=Nx UW8^'ȉդFo8^v v!gd<gt Jd0]GZ9'iټÝLײR`>e9*vpIđ?oyIO Nm.))y& N`_gGNEN rQR(?tL~u0\DuU%ph̬AuTUUcX08@6ɵ_ >dB~a8],%P3EIz''Mo.z7ΆT*S>mś?<Zk#KG eC ryװ0#3@ y 3!0JJ4rV~"=Q֕Jb#l~v/'REYX`~\AڂX#a6P7}Tʂ O#ڷ^> ΅reM?xnf!}nl ěQ+zbjH+<õ"#5Ʒ|=OvĨk|A5(Oì}dg繧*F_77x>z% B8|lCR2NӅsnAvFܿ4(` 嬫ϞFiO,J d~AƦD> 3'?X?pyhp <<y+0>^ʿ-;ގv^ښW3(+e܄)9vi C4ѓGu5H't x]LLK.ݺO['v4=4KGr1ձ͇0D^Z 84 <8MUܻ0U`A As h' ;?BݦFB&!z|}Am%VO=ג:ݿid 'D Zttv&HT_} I)JOpؾ!<݃ܺuf'F4l'|ʸ ZOFѫUH$&;^#e:6O`/yB};>c}nQ1ġ}x>ygDv8#\lxb#hR)όDÅ-){w[kvmiD_4SUAȑHQ Q|( J1)-4rD%2.1SQ1 `6PV+Vf8j8WT$LQܓSh `+OP*Ȣ`2f|dIpKD.07ʮ#h#M4RtŭizRt] 8-{w!\f']2ֱæЇWmf=/Mqy|zrJW۩ 8($`W! h֭"_} {ߐǒ[g׻vwED\Bu7;Pso("\̵%Qʆ8x-EsNРxk;BOS+~;w,ʒ -m`E[ 0‘G^ Z]b'|(,)1TOkQ֙qxcմWL_ {g`m7"VܶWc=s_P[hm8TbJS`G/wdN/u嶯!?8M{([%}ݜFqݿ{ƣCjR]g$4ľ??OkcY,2ϏSI 60(foʨ1 GcGr}ГWNլl'i?#'7yh;& sJ 16H*aTƒtv g05D,LSX(8϶BJkb 15Xg[UcM.dѻ_nj5i0ttЫ"ƻ9TE?'7hL}vP$/ om[Yï,5o#W!,Wӟ , C\}Ϥ0=c*~+83c<_˼z*ޚň  zŢo)VO$qz x_@"S@MK"q:d 90g->O_eJ{~6,߈~:Z:y!Uyt GD!gT$a wwn@%'z=F>ʉn y)J3=\'֭`T4M40ӑ>g%~^}㝃xHg9ؽ ^ $ݾR0wU%mMM}'#|:jw0AD'OK3gRRAsv^~ !\c^NNI8<[d1#J< 왤O)c~'7+65hk>h;0Se|$?^ګđllVc7EpB@$D_O>檼wx{x)RHh; 7Oѩ:jSoNaΈF IDATJ{ubSiQ*GՒ=3W,[5//Z";M;/XɌT*NmyR 14=@7G=M^TaSsC,M"8{&9~A2xv\CVT8jN (j ];&| aӦ6zldŞřsA΂A ;i2ܽA <<`"7{즽}<Fm,qO 3:k4{|';8=Dg@Dݻ [H)flcNR+tu2tеT'4Fg} [BeWw;Mv=ǚ镭ʷBμ44, &OErVk#ȕ&iY\gA]<;U+#_2ԝJk4F4%BjY ?w~0@oXҨ{V%'DWqLYRKUf,c!>1_o/<-}BAOS0݂ ᥿>@Ts,Oc3)տ>D"3a oU{ތ' q'<{Y$5W)`IjRSo&f&;%Qbuy<]2޺T Hmއ5HE4퐕EUw߼m`x|~;$'9 5R_'cp/@u'{;'m;d°sIr0eW_$@6Ȇ^@j"QU/:I r+'%J"ci='v؞88]5 ӥBeP{mjI9#&韌QG ]mTD|C(ldeƽņA5cǎl884RbQ sg)ivJ?^`vjcat *ӷhDރ=:QuShi$DC$SC- ӝw.cXD56Qa>I_3IzkmO~(h3*H́QR = (JlF- n]Oީ37VĂ*v,)YOWN ^+a"QBA)N*ǜč(ȳ0(Pf0+R@k_y]$0WGxI-b1bc 8„[ZNu23:dIu9?E9>NLov1Yq9f&&bYk@.:+&ss/eH_cNw'v\IIk}}Ԥ(S3_C#Tj^߼i+ S|])ɓ4QErHWW/9T~'UGLc|tFW':K.zG;i3<:wx k*Yq urrIR @Cꜛœqt_Cz7~p )338?sh]f&qV7}Gw[T%&Hk8:㱨XՀڊ3NP[;at_ HMQ;t6 8. RIԁBj"o >Kv HA^yz+G}HF'SrJ)J-cF X)oG|h"i e$sSMtG1nj\xnLN? t;hG75q5 oc (nT*D~<>aNչ1Fb{ݸ{31T"~e;21EwEDZKp`4sO<׿pB{ {C̋Q,{gÔEs똇qQBX8e 4 k G숝q.aRrLh|v+Hk O@SP#AjΝy` 1aRN$?ch2bģQ(8B.@ Zd t:D.~ $j)s0gEF"&Mex.ȭzS(ID[\ɛE#kç@ %P*C!v8{ G@(m{( Rd /b Ղ"uS8G`B3Nl,ZbFb.u?Hmqᐆ"WuNۏ~pcpXv!l%%mF|dz9}5oU 1GȝH{zMEq[F*ٳ0 ˪?$BkPk5PE5Ot"}Zs:-S/S0aUT5ZHDrtz(M`B,v, 4aDUPQoajJ4*;Nk5O6BiÊ<7>ӥx|H:TE68POAI*.1Hfr{l;XER\|VS2*P9c\>3RV;lc߄q&`H=;ğ4 d+PkØ^p57~Tb)bdAk Eא Ë`лk >p 6+n6BBp un6q 9IHcp]4WP,hg]v:8Q\5 "KܒN%:%M@`mlO[;¤(x %z}GG{o '2JֽJυw C&V`(PŒym91?M/J[ 9?C:uAbte[N1#$gS/V%{]#50wSx/~s2b<FN̟G9cm9֝9`fsKI8Gaju!$kGp^w+)K:Օq6U XD^dm=M_K'Ąj><^rO i.bߪDU16ma#%WG5p'پa :s S¢AQpw+ؙ# t4MENDPjW 9\Bl~t2A/^c:i!&\"DID(,۩9;S(Ghv `'Nd>4NNQ@eYCĬh Yo62)Z$:Pαvף"CEK:ʪYz#rn21j.*4z]1VJg>엱"J|>?0Ű DgNVo=x7 ߞ"K}3&]Ŕpݕ;yaYiLXd 样S:j<ze̺!FɕwGН׽JDNd\ ys ^3h`I_HZw~p3^t]ǭ x_vYȈ_+_~eÊ$>"1:meSVXx1~.K#x\^Fg/CΌpAVQEBvCzO,ɲu[oŜdz/*m{ٵ}j*,fX&%xx=u!f8p. h&&&^"8Ja$&d^o=KhDeh#ZƂ""0CdbPxH&Xy$hآH1^ Q6Bl$#2 CԴ~2 uR>6901EԺ>!EmbbGfb?4A:S4ζP|&kEjb?dz=&1}ˋ%]>LIFE]RT; ֓(ޑNJ>d:Dנ)ɮxisƆZ;1μ 3|0E V;D${sdӱZG#v4& CH%FځEI GE ђzZ]DŽ;| gK ~x #-K:RMGK=UMkf*q ZZTU$NYd-$da 5aFj*+'-$on6a'I%N>PCC܎KPtԁ`G#Ȉ&gVWheFƍ$):@ʴL:- T432Lru7Ț5: $8dJD& K>!bM&GjCiBN ;? bֵlh$\ɡ y#pӘ~g*Pta$ȟXZsΥ~D2u!;>@VIYWOT"t\ *6ٸBXh3HڳL^ĤrmMh懳cmeꤢ BCXeC oIWP~r]?皮gXW)F*Oǯ"N8**A,pc Io{*:qג 'u>_LwYD].;?x$Lp>9R3ɽj!R bɅ#E};(>FspLOgܐX?FQ}.$rVo56-$M+_xXbqpZ uR:)с8l9HLN*6װeHKԏYFkifLw=hڷ $͞7&8Zv60 Y⛮bfclj:ԹhtMz>z7h0]Í lu#B[[Vȏv ;9'0'WQ4{\y{S0墌NQ**~K[mW, )@KT5E,]5lQ*^䀒[e_9k֔ɭf5W576OݝkX5E?#s!x bfw s~L 60 {p~6yҸn\m"Xys{2Pێ9fC?ϸ:0wbA9ݖ@4 5cFUZ|A,H!6Hq=s֐\i78G .%4!d*Wm 4Rަd-(LrĎ z.VMz޸/r4Q㶯wy<<"INA׺Fɚ=:?6W8 Ywn:;;8gM@`Rn@"ng2bCk&+ TJ1.Tn_ 388Dhh*xVl)K(z qQF)v!M胂5u0Rz O z);ߘjtg zλ G@@@@@@@@ti0;4{.ROeKiD Ğ>gpA"!kx\n:ʶ7$6=#uh_\h*k̨ˆ2hu9z9kBJtK6ζ^ZRR?Ǭu+ݝ4)Iώ_V1N#?>JkĠƴO‘S.R&"jD@@@@@@<_F5 _zbwxF&OK>Hߐ1ӦݸNV;Z?gHHe<(9'r~l^@쌙|3Z΍5fO%$Rݠ?J``A{oGO&'[Hdcq m,M B9Q=0Hť YI PSݏ}A37j IDAT)҅2e:㓌~DᠧStL1l>M0@DƏGeDY5-}V _lIUM=X 6+Hu23I sz4]hIK@P#&d=]Nym;fB$+՟AqAH]ô4`D⠷h/=&Ǥ=o/=oIkK'6K7m1ZFO3I"sB>FJJwQ^3+"f*9Y0 LJ%:~D"ϛ~F۩l5!Ow3e^R& Qك6/EO-w u,Reη\Cނ)D =S='Ca(g9{2֯IRB7b$(-$cJȇTϾGLbx]_|&_?{)AꜥD,XLNjpI_ Oz Wdm"Krh?8^@$\*t.bf%ڜx#gA!z9[ G3XL%!5D&.TD-B \qnv,QQ6l؀^pJEHH}}}7@pQc"Xlr)M3 ީh'=-b&;eElz3#62Q6o1 wNa`2TGOH#kӒ{ȌxE+Nښi+2.CT 4`M(=A0ywX6O}:fsp.Jz:4'j+:FKgdHAmf[{)u! `KƣmyP<)ӴFvp9 pHϞZDcK貃#h"d3ciˮ Nu]O`HmM9L-rvZNJ] #l UR&v761■hg_{ٿCsBvPj2;)k#3CAg^ʙ_R;>?5t,#zdK,m;y\,x5eD27y 7Lc21QkT^IWLEX5N-g8F]Lj%Pf_fMnu4|o6oG!~;'`/wBxh+寕Q9""ssj5?Goc/Շ#^uSC̅wΥ?;X~U$ 4u3}F. HIU?[8 ́%yȹv:v)DNNo&҆]́KOw;Y\҅w6SP?>Dkb" R{odLM7W"v)GbK&ƨCDlJF bd&>͍G"3=ߏGbv;D.O#) &dVbf̑/}tph q${SCEI4d 2M%4n" D?\E`})/U%F *@J|a@AZLA|^'fb32$zy}xx'au]Z l8aMX]K*S#X U+ˎ^Ee ;~؆|܁{QɓwN%k}`Q1{XtQݨt 3F;-f3{\GSE L {== XQZFUu9p.̒[G D#!SyGsX)2 09!fa4Ȱ$ Y`s/&fIg#$H2?<@yjkdvISKBDvF&̱aCˁi ]D$3x`mrO,u`nGҼ$4 QrK7{uW9n !7 4d"/qce @ \gڸu +qzO>8gׇOBOR?`pf .z=r!GR]??Z%?rTf EGo1 L^Bns5b2(1QR-"+?H UţEJ2|@H&jK_S2Jx#jvQNđwU rv1Z%w~J)b{OaqiȍF!p={Nb8 JJn|J NpvxܚW)'5SS\NۈA$O@Bfli`i-#6t$Z:K3RmBG-+{B@|㓌)>L[ij M'JaAh$9. F@<[tjCx]V<.Kn_Ơ̈EbT@~O@Bxz?C%Ёr%qLNH29xr;\=Dhm_B13LO!v;ѾN4xH p,p7uvU ahBțKbgժv ZNZ  l^֩P tsڦ!h~16vIS w?0"Z?LüTfwc1Fs>V =PL"7Dl87_/b0i l4 $4"hԄk]+ Tizk`X&F &(i< c K7ʭAΉKbJΐ+Nb4v3Ĭ.Ssl9 U*?aTU>\6ڛMD?#Ì/Сq6sJQݧ? fjb$3t+X*zRiDL<}O ~ÔX4&OICaW1v3xz`aX*%E@D U,ISOqtkNJtW* &ѹ-tC5\)]\ gfmdtUOjbx>YؼY3X|15߮C;7!.lxE9OqtcWV+KKͷcWy@4=?z=IAR'{W Ep;lxz.5?aμˆwP=b_7g#k?Euxd9z=oCp"I&ͨG)mb/_<@xER-kKh}%c.IN[%m=Q$Durxf:Qɼ[f<8z8QyuD\uBeGonx6.>Ȩz">.xU۱]Xei8$I-{6죬ӌƒ9LR /drz }<|tDyaOL!?>;H͊iD#:_v ߽=e@MR7ؽ8f``[&`b/##֬~"JH#RB"%-SDd ?y(PGhәu[ͫsb21NBJ]Rz/J8~<33!FI )OJ)@4DK  sYp^M~Awظ]& )F%s.q!_|;#Um-f-7,m7OGQ9!6VRfF=EE Ӣ/oJGo%s-EE U똼̎qX2[xۂFQ9'GL(LQCb$ n<6=YDϋӑep?+(bd3kyp(c)C-Nc?G^d]gLdRpo4SA{~B_]Wׯ悌bYA4ziʏ8|m-c64O =Ogs9suR<¦@bFsS y n`uilbE^7BD| WۤLns w{ {+'8PɚKLkE]vmQ1.u<etwkԬYP }=;(o+>5g8Ӕj@cEIz= b6g  yM Ṃ(@)l[sA> /8<΍˹=ơ6+3;x{0{,D"A&$$ӯEK o$4?ؿa wvIܛ76`Wbw5,y^+zryTR=UM6f mmmXm6Rhoom?nujf>kbgͰ@ڎ"v_m6w~ \dWPcX:'qr;{'VՂ ez1 ȿe9)b$YwSGqX43o1;4 r$_1dzK.VEt{ME)//7=ß3w moس`'a^Q%j%gbnWO%dx^{SsIԣc,R#4N91x :“''78c AW#4s;nˢ'8!>& DdL%(ӏ?ؘhTqc 77fz?}^#q e`ϸK9/Cn:IC qPJW'U!͙Ԭ0!Wk|%6B Lo .uqd1O7/S^HU+X>ҕ F"=.%0^-M}w*l fJO#3'Zvnp߭7b*Prg;#g3ݶr|"Niܷqobσ0m Gt.K Q+eO u'l~vړ8DӜ &aW. SnN\U d!ڔ]^=>aZç1&jZvЬgB{ZwSHrp l.Km0AH|~raZk}7j{))Z %Gp7è9>Lw?*Z;-Qq#b;ͥTPY}uD%o=¾]f'j <<:GK!,gNX vR|%%MN7/aʼow<ʐ?y?"eE-G$">QOlFWyZٲ ܻ7Ps5{b 3gy J"#&z"> QN0 ʸ)q[غUONQ[ R/Nbo߾8흜nF\Hiط[<1? (LA9|?޵EiD?2޼9j)ߋ֟pؙ;hGy6g1֟\qslSqd Oc̥vI$cR>/vN32N}E^<\C]C6BA|!$$??g~8o*+Vf7#υ?.` Xؽ {0m맾zр%j-J?-;PIEQz4jB,a^{v xTw "qqD۠vrt3N4JU\vτH6 cV[3\G/1 '#rxwDR^@J6gJbӵ+XqpS?Kzo}B`(arz{=`!E<>]wi5K9x4]NIGٰe'TOV{˥[ڀK݁f,Ơj;bh<JDRƎ#jk3uLV߻55D+K8mO0dhzR<{YW#\8) &#lîfUI^J ZNQԃ0h _(f?7tr4P4Jq_õצ!oK#IGMeɽolQ"u.yӸeՈ<}X$&n$wB&2H^}{Fr[a$wzK~V`o{17C9~ATcm9ĚP¦zO]?X y(dn|6r"3nz݇SX~}Lϼ{u_`ɏ}wcgM % 8;{ 䦎e}3ufz\9މ:6%3dSS sC(4s4Md$) 4} 13"۷0Fv;'}I22"SGpZ̀Bxbr)%< z|!Yھ\2K5cRnq2gi3F? c,$$+p;l8:X.9!O0F"W?,(+`AG7kB_C5;}&3 U"傂]Q*(ҋHH!$6-G@\?>O3{iZ IX76RWiکq~{XVHd^vC 2vߝ\-UdJh5ӽx̕=a:@@@@@@@J8JNe_lVeӶ,czŖʒH0_ו]Ė=٭nn:ݟ/rNVRlma7}5`Ml;\ i=jvlb<)ᛕ8e&hJm&}7ͿK9Vlb[3UrHOn՛/Վ+ϭ+ aOUo`:&؞m Wc}"~*S[r$,]XB\!ܰoQyFP߆NI>XK)ǀd2x0Ք JBE@&0] =yt;kкMN[vJW)}u`i,SPO&o^'֦2sh(-DGOi>P (wpqv88Zk$1|_xLޙG׍6&:z1WbGn B$ àn(-T֭#`7sx{ ^/HklHir+۰6ڪ93z/@H;uUG\.<Ӷo8Aa :Mt. 6R ꅓwt^g Ҧm?W$&#hll"((V600NG``zR)f݋//Ѿ0YREOaՇ߳VY};Xh'9z3C={jY. "닰4uy'ExYkmTgSh 0U}["NKwG6dW^/&]{e~6*0:}I8BVm&W#o{G3<>]BN*:2n4QRt27#ieg+٘ߌO57sh*7Qww%\uؙ_Oeit?8qQXٿf5+~C)ڛFJz;Tȑb}0&$0ћs䉤}1摳p+V2͍A?ev[i8%Zri8GȘ0N|>[k0KU$&u䍮#;WbAQA+)'\UY%GӅQz~5Y+ʱ::XҺa7VoMG'!L YN̕XF vZ61yOy*fz <"$p:Nγvmiej ߼͛NaS ntk=(xAdCg'E|5~%[ o9IKX*Sԛq(dLFBrV@E+fWAKiimY9jrj+h*x2l6r pPu"hqHp] (cgzwApdI>wQhp68I%m{)1>^}on ? Q9K[>!{xz kWȧUg 3u:lUxlM<Ip ֮/#|G"`BEzy_ tň1{Tw3SӗO{*\-"܄⮗zXUo4m϶´ MqrŬoũvF_ $#7I7T75={{Qbm5d,eCFԙ];N<2>8h.C;ޅboY۱'Nuӯ#cX׉2 Y5:<7p݃Zʈ_ᶭZĦn[\rv/|c\- qGC+m>UBOfSX4:J]&77y\?S1^}p TU.e<0O<7v>>y Wv.lE_r%D+<\ǿ`Էy0=8Ovit;h\=NS_uȑӲmSz!ێz"LW"mg{v!꿆χ{ίt"՚+ Ĥd2=zt{ngݺXa{PX]?6υ9a N% NK}uO/38m cj;zBrd&Be- IN̶ ;uWZգ\GGօFSg%k ]@ׁghKntHJzNR\M}z {d a4&H M@Y¢K"&ܗvt5%/J 84M? ecy/舣Ź;?m""Q,6$]-`Q-{ϏcXqdcZ Zt@e5~;@B׎a+0a`rR@FJ.gq\8 {Ui Kk@#8_Ǐxt:.] ,EiPxpupqz4ϴYV7CKSyZ;Zʻ=Δ"D@Xf?rvy;I_WQBVQlz*Orӏ~:!BG,qu' JI' /JJJh.?)఻~v1n(FbP(PjM\ 1)ISyRGFxŎ۝! {ո G&Gޑ{oCNg`|oL _.he CGcs& /ʼnK fVsl6+F/j&.5QQp~$Rdn;0ؓσ"" Lݸ;H;;ۊvvoc[ǜ'_"3n\A BvLn 0 7G}G-v;1%NK&}W}6pm};^H@\qr/Vm0yr&emP7opԳ6[# |4R%1XM[Os|"'l5d1;(`f V/޳R:n0}_'ij_QsI.͵)ವʈ7g޳:$gH۱Wc)aO C6BKח(:YnƏdʃTPxx+{*t#_ iucmx HfI ԑ$Gh_ޢ!.ǩ#/nV5=I~s0Ȫe"b[篦C.$:ذ,ʚIL#DUmX!1sϫɗ>?>i(52{ `DSY8nŸTڅh9j kq8wAt37B`ZF;QlK|LvEcy6ز,%#( &59<ؔ6t Ofn/,øѧ&"$Hi\,GMb>ѴI'&wFj>ӟ1f3ua ohS'Z2n?F0cR)]ḠX40]H,[73 % ϽS3g}r!ӗ x9otB@fٖe; =bsms/ %{F6k+_~ vWv:@2 r)B66"'F~JeV H$ͱ/MM\vXjOVp4uu=)WMam*z#P{u:aQq.>D#'t?gřj~dp{-]WHfcj1SYYj%=- **HbI'3-D8Y{皀a9UTL_goL ;_-eIp=\{TCXT"~IJ*pePmZlUbGOhS^mh](U "" U_`1ۨop`ب1>:J?K$5-\(zK?QuoHS>fî2΃ωY8LF᫦S=n'uM,R02ReԖ3oG'Fmhb[QS@@@@<`h4P?4*!_3VAfT:`hNf`UA`Ύ *H ^'f#z%I 6[`r ͍\#',"> 2)jr!8;@&HASI^Hu CP{=XPHLAfRA-R |8-j], EppЯZ[.7]R"o"z~723]5TRr=ظ bȉIb`YŬب^rb")5 g.\F"ڿ+wZ(ȩTkuDl S\ rIib&ƒ/qCt1\ϵ/` oEz4fyk? B,8WG@@=T "+9" iCPus>'!Sʲ0ãG %\fdn9\^TJ_ޝI/ xss)]wU'xtBR>天  4d9ƬH$FEV>S֠\&%KT,'q8AXM? @O# zq{ಘ9P9|NXQQG C:0&'M>Qt;;BEpt= uX ɾR_.+ ۃCX(DZT&:~qD<@E,XJ`B~#K* 9) IDATo9ϣ7Y1휉N֘:j _' mkt^ek'ۃRZL."2Y T aW#}x6qc]4nL `;I{4 {}5bu?}"w ;xq]22^E"Xh*b;kd\|%JEX?ǚ xl;ZLބ")|2F耟gmZ&`W_} g ņdGa'41"wm/sp(rZ@e uP NUEeL8uDI1)G\6n7F"~8h(oFLHԗogzGb)Q˞"h1<*>>(c@GLz1bl!@b+NQc7sć`r2|7 sS($"D[Z;A=(jdҍ= ѣkRŻp8\pAUĠkJ j m-ШZZG!C!H`~>~Ael_)ÍWqMx|_X%6w9Av++u`oa@J\r4oOeŗq@]f &h9V'8~3ibwx RML+RF2PR!'*&[CO+b#ZɲI %.\CxX07rђc|а-yYkʇH2ISA@,xn7nw̘1[=II8V^E]?z8o.m%r:7 Ӡ73[2Q(D_SǏ(mmY%F N4D$FRIQy=ԑ$'"AP "{x5F&&P҉s9u6mIR 7_Ӯ}83ڇ_C]3k}䟽ԩ-:XA\Z<IlC =* eҘbڹ`bq"\_Amp>nfq*Hvb:gkp;Z!As'4/{ #;#WTR JB;7{(;s~&ٵx)j19#3q&Ϙl%vAy[9Xw`xk洍%G_`=9DbTj1a 8ŴiQ[[KSSӧOG.1YړN:r"28q20;xpYKơ UE9 <դ=D'пtxK[>v1`qi3w!ǕH ނ9$Qw1O.m?k9D:FٽVޓXAlj B@@@@=[[V NtUPa'^Y/"WBmңld3K=A븋GF:)hJ|77ocƯ\$pA6Amh7cÁa'!. ̃\)QZ#b֖҇GTa39/(x&J3H pf.L<*xv h2Ԯ7TiL}g|ֺNC|n5#:%?\/BNUC38L| lnkF, "_<8)FciL"dhM6*:wҬ=I&'I}G6$jYp|Pyxh*CO}<5͝h75чC/K61+R\󎩡(.3.ʟhG)t zii#5JKUa-מxPpF_+^#U^?)fDh{}~63ັKx}ޛZۦs#[rdKki7?͓k`#\9ދdM _oٺ!# 9WX|fdQVmrӟ$-WS@θ G@jbJzZkX檪**HbI'3-D8Y³J@@9cr֭ *ey#"WD x-M@BqD xdgf WSw߄׉EGm&\Xnf5?Ϳ#Nee:޿~T0;]i)))}\G]Ɵ6Mchlྒ~^vږnU̾5N9m|lńnֱc;v,c/gm|<)m,6p]׆t8;pO==um?k4ngm4xPZAӃJGY8K\yf֥cntl_u+'_<q xg"\ߜ-+xh5ߺw?i}c6>p/ڿn_QںvUNժ7LmIҨ8+X,!,*guʮ&p# gšyj2cLދו9S@aS#5dRMhtgYqhRVшsGLOdB$"'&m PDA0P_TH4PIКL#MGE W b4B6t5 N؏? /ZLKoʡ΃F^Km3bBsֱ9TBd\2";!B bL&EyH6^|[kĜfiƈD&6TQ\k: T5]FmH\Z7~QZhhqJF}p?TR16xC%s\\Í Vm1E'QɄ+b¸ n|V&-vNL$<@);g V ML@h] E$~!aĆFXކ[$_chPjsk(.!%,`714Po4ŅӦΌB B#[5RRTG#04JpʌkhjrQX8fHQ Bj7Ѭ#ň@P /xq ԗ桵H+Wr"uqUӃT$$&` z3 F*'2!j7!qi*J£ Ƌ۪3b$CP T{Pi0&ٮT !K̋CWAQ D"D(Rw؉ #Gޣ>mi1Tul2'&C6i[ S'jc691&DvM44PhQH|Y)ijvUQaPUGь7 a'spY15s2?XD]{='vo`v9A\VVmqʈ,遚dNc)GolR.'tH-,PU5~!lxg n@!"|ո||Nr]8nw{kB؇yh7s5;s8NGiϒw?嫍y4;~L u;7 -'Y0udzeڏYWH=<Pk>fUL@fga n➧_eth1[>9KS $mL~n"W% o* bI>GNZ NOblI>KOKClQ7z5gkǬ̖WCz]1dft)];أ!Lz6b0M "3>}{<1e5%J9 <)/{Mdއ8 QUn}mxEH=LI7G{)|DbmfòɤW>]n]P)]ܞAdI!O@t<(q&^7شwf0h ʌBkvy[N>8rYL؞Cԅxrc  c? # pMeæӃdZ\e\G֊ģ Ƞv3xmF)_'k*w#pC<m*\[z'R\\rnryM/|E;{b~5}ϩ. srzLǚmSꆷUZno_@DG v ?żW{[>ʼnڎ|1[΁gOg9]=/WԯsQ&u,gt{}ȱ*:W޾mWZ>\5{3@nT܏]YbL˜w l.O~փ*w`3Mw<9O;gRgngvҎН>Ku-N"řıvzq6+>V%ٹk=-xt$XJٽ%KA㣵8>XJ/q~- ?ZE`c66I6frF֟xxšZ™ϓDv-#^Gl|ĥMLYu˨})6/|g-D;xo=qw7&<5Pcn[Eqn@CyxuϘ[}/3m!w/QigOoUy݇ZDd %<3h0k0*=Ey1-,v( ODM@"#赴*/<ٟm%GTǦ?1$T+ z~$=wK6{bg% 2ԮWL$$޷Wl*C"pNE6[I\ZW~5_敧Aĵ wl/y0_ORkoFQݸ2~榎p^B{]3qg1յo&U. Ȉ8ȣiȭ]qT} tcȤW)8US2xX+J(.b5,*>"'>aˀ+)ntMŜI;v:Ϲ蜠Bጥ{zMj䢏ކcqNdBF8g "&SքbmtzB" "E{J!m}4 D~z4:F`]NP* n yX0SdcXhC\ uZ꣯m$FܞNv`SҐr; 5 idžh_)n͡ +Ć1%HRpSWNYlwbһ! |}h,~^[&;_`2H<|^]\7Ek v.lwq #If&2mSo)PZbȷHE@q" -^wIꚶ$mqy?&5iNWirȼsΙ+{ G0Ѡ_#fP-.e'3_]h0?Hvx y!5o7$  ٧ȷ~ {9kޜxx.DZ$DF#QgS 1ӯbE1&CD,Vx#?vO'f~ҟH@O3-;M IDAT .9cU\1='7bۢיJ'r3ʊ1\Ӥ>\cb)토ߋ rßr8D9 vkO.[ X,˫e3gJ*q1J%|>.t>\^9z.֟C@0B !0BMF$mg F\/L[7cĕr>O8\V-^1䏏e*>z0]?2Lzgo}6}@5޻/z}H+jÇB5 {|\džkX, R8}G^^y}Nv}ʳtᏯ%#X28eޙ{TJpMyy]ϺY+Xt jj5Xi3E5!Hhܜ^۞)ylXQx;g=$x%ON%c/ .ܤ]ҼV~xTA67|lr!e_0٬^dKsә6L]lOmc}^+c׃/cOa\squ/t87%趴lICYEJd5QY%YVRi$yN ׯ%o0 >æ93(YKX9F[rܖ&ٕꜥ,+( XGEv6lrֶp3Afe>g|rʅ>E&5m=2]~nHvɐYͥ,v\n23̌Xm$de$uȘs%cy!3ޣbtfcw+:@rSڍGζSKop5nͩw=_\<@ZF㯼&;<[ؒ4i(`\OkF8m(]8ֿQƥ}#|!5~ 8 X#z|ħ穇d7I7OBxi/?e w&[2O]9k'%uO>UcE޴n3il)?Kx{*wgoNҁ>2Xăs{7uà.T7V {ͳڱ< Ф?']z#\o_ܽ/}G:ў!;'l. my Kwasd~p-{ȹ:q៹y-0gv.n2%Ƕq9Cd죐ڂΧK 3'_i`p8;y$δ4?Sbldzj.~1DsG' 3Go3r*NҼ~X7i [%=r n@bƤ|)c_f m?n1rAy龑Ϙb!#+7 9c6u}x4kZHT~ fý{^9ܳᗍVx<4FnCꞣ?oőOʝ\:gBFs68|I$&&bYrϠg.:~ {jyzD~{~_Zx}>:u@aa! *mu<(:JWNHs>dML:;;p#YcI?ӏ?.jx: :C6B(!8v,r`w\ngKFڴn@ݟxZSҝQZdYrxoM'.w` l҈1+Ԍmi̒-pے+#"qbŖF,Ü7XpѰ7>U%Ѵ鏟?.o-e!`I2kI,F1`5`,ZF#dO_̭q(1&~/8Ig;n{{vY3c}&]ì{d ^~z{pZhЂߜHܱhL{DE!?\:5CUgGxbCy}xqHoE|;=N!*V{7nK-ݐTSTT̂H8C6>_,DS3g\ |5_ UeTf ɶ4GGӤIc_̞V?BOD#r9 c~o'0QB( x DV\\u\-/{*zgӹvT?9atٓe+ޫLr7.=rcSL,ƍ!mS&GDDDDx~f1{\/sf0g|<̝3:]@mm`!FP~[5P&]y'8g{:uQYÚl9+3O9XQWE jN:q^ԇ/xj}ctI uZjC,p<""""/qѤm8qGq7rIJWHX;)۔$VzDHaxkv85zWU>w!!5$lύ#":&Ą_z"X':H Wa?~B6ɉMg?D<5`%JKpԆ6.D]]'.ԆֆTD'kg^w[p'goOi?~>(`>Nx߅ӼќzV>.mr };v$V݃0#rdgKnقf]|EN4J NAϲLևN'#_ɋ'؉Q*\_̲C6 #|߮;x䥧Hl/ncs Ff.,?S Wk|u |tB6T`KkAl7;f۲s.l7,wKɛVrҐ:"f0B+u"v8 ؖ78\)$\Exk}lYْp&a;kpO0V;IIV T\ `B~= i:?a{(D k)i}7_X`wG7)nGIOϞWɉ˚ w| CI) piSS wNI04!^BQ襛3hyw3!|u>(Htm6q-ciҺ!DzD"  bnnILZH?L$az\?_0%!-?$LqhB؏$bOrLJfdl v"0prhj"|>f<wdo GR"6 HO0Ŗ--R"A~8K $98lXLߏ? .;s}#Ɂ `'1Ɂi DA>/ak"I  BB3{kŎfB{BWv `>Ȗr$gƋN_qU/zXJvܔ6"rs*7e%Ͳf܅{?4Mi3cYWٖfy{l_bfyyeFSΩbۼk|pyh cI /1>jvm: e[[v46;W1wL5n۸ښ5s|h`}fT۸6N3{Ik\Bc|fkWue0.|xD|jSfl4:8sBۤen7Ӄ Bu0dS cLd3fŤn`L0_7r&5%66cZfj9'+äؓLrZI߾51Ƅ;MvROhUƿ5sa&3md_3ם(; wUۛgujvmMسY˄#-|6=mR4NY8VF:`(3slz_G_`7慄Ak3>}3qeΔE)3~X{dy3gϞxֲa}Lmܩ͕6*#&Z>lSԡhb;؆Ϟ3O6FoE;u9̺؆-6 tOchZ{3ⴇW;&b1ėiRvCN1}#oY3,98{Ǟa^[G.3_ݼJ/xzDmV~Ŭ1fcΧ;>]c|;ob0rYSxV OerSayf2+? }TScj&bu~ݥf/ޗ6o0vgixƘ1s0w3}}?iL0辒xuܭf7)ۋ׾pixғfWϘlswsK96Ƙ柝ZeWc)nsQ9s.&yBc־nޘl{-/~t@1Ƙi:UcμLz+՗G1|c(=axO4l=W;0Io6cg̈́_7"Sbw.7K_i4}ؾhyg͚S̳w|Į:._Fm9B^Ϫ-V(NSi xW̟r*7Qx|zwm#qt dKxci @_GѿzGqҭgrʈd4YGu*&>ZU)#995'ryVD6'_~tKfnyl1㸨_}׃fCwT)[Wr{]qOCb8Bq̟Π5}— ݚW7Xg5Am=Dn:fWQ5Xa\~SZ[0yϝKo=qA<>p$'b%tl|x60z-GCۍ-󇃄MXI<1f_2~-ROJ$؅?}+l̗yúYYB#Q㢄.nd0`4j}G1a(E#eIkeTRSU `u~"w!@`$viSg`/*1m>xxJ)+s IDAT9l39xxvS/u'}/於xh{xx!t  E $o䟛ӿc~"=<76('ui#^φW=uReO#/:Һ|] 2UxO/zmk(? ˩6ͻUSJE ƞ~GOݶ 3˷Ss wV>dzב_Sҧ^ivͱ8 6O̙I֊y¸cnB  yceQycYYl^sU?eZd=ȍyM417~O}c񛪂k[˕iƍOSf4ho@ȯ-i;&|c3淘jwy8YaKE.\t݌_E44EsֲRiXgĵn{`s|:ol:a7˽}V~[a߰68=]f6`G 1t`^4K?=|*sxU/tjBjCn+$gM6Zn-a 6'=97yyl޹tڃvnyĴiz4Nu.ClVE8)V-ϫbǎ ζP\PҀ6mҿ{zi7\1SMcڴ2eLo%4&gw;i?5i^LI4A`:rQFٝ3 b6oEE-Z'PY@h@]"[s:"1rz_npg߰θjvI^ ~N㬮xnu"{^WUQ)<ñ 55X8b UƶrHpy tjƿ{f9f-QBޝl=16zѭ>` 3Hg3`'q)WK V[SJ+s(.ҡ#zj<<:1⌞dy2o9dl0llc3Yxg,Y!ӹ[Äv)oV~*-DBfl"!Pҙ)A>kCְqGSjH Hsٵr5E%t؞FZÆmxIytibg5ՅTSRm{Эs;컶R)[p7ҫi2ؼ$ӴC7vmx;r(!#YiٴH#!\MuPH iޱݻ.Rhݞ=,EDYiւ‘nq\'b:n ň";de^qCKX`_6TޒOuFrfO*"hZ>ZO~ :PWOv}#]lʝ{vy3sV_>DeĆ3#V }ym 5oԦ;9=1- %%s?'iwȨU DU(l-g;6KZkM`x"gG8IxL-3H䶇ڲeF6OR%?BJ3 !щI4*Zƴʢ<4$®)/0w ?o#C[&xgc۸|&ݕ3}Y Ѳ|X݋g.vCPW.cT7B%-o#˜U\ZKVCxyVME9D|6p-RZ``Q.0u .(4\Ϣ9CeцԷ&-ݮҊ(]p34*>Zzo`o `҅l#ObMUg@L |L*#)kOt5*%Y% 'D-.NiV_VKz.** l+-NX@~f^klV &CddC/&wҭZgE"J ׳6-idQj3V'JB*NrbJv'ow wcB-i۱'f{_ D4b'{c ̙h2`%jDN <""膤/uYf7Ir؎NVtZW͂55.4Tut 0rZ_w2V`K5#=P? !wSZUDt1dD)X/'18TŎJ:]ٌ6l-遣r٣[|qUQҒ?R(*PM':G Ҕ!*vyo}zٵ4 )X_Z1}&<&"^*7pvg0t*yq|rCn"MN-) n>]=Îe}&CosʤK.e$O]eúqs#fS!o plxtheA/5dlS H&*'aD8i>@48SӲ mĎG:nk#ZgdRT$$1;YN IgͧbPGf5}"jU붍^5w),hZ16˽T&SrlDQq{61}V7<2i쌁fvlZLluTz;Rl$g^v&sxulۺ1#Tf -TŎ$YE^ǧ;PŨ!w\-=8d;3?ZNqUQlU]NWL^:*HH W,xE^(ě$_WPF{t!(N7BUrVa=qsFΩU4s77|OhKVCz1-I[u Ω^VЈ] +C?eC~fu9$G(=iC݂a=ϰ@5;sWH=qԱmI$nˠr Q*/vV)t;my̛>So4D|dRFۖSQήpCدuh]XGt!hdzA hI'/ "{ĪS`&v@f]HLbi?ݸJٿ~P 7؈p)4N W66Fpr,{*oj(O)'oU9؀dw7oG5j@v]ݐF4O"ٻ(پɖ;BCEԳ^YϳwAi!'@:Gc ;3ߙdwwR2IJnRlSwhD6c3%%8t,i7ӞNBJ,Z3 A) Iҭ -L 0JDZ$a%mvZW-bmm~ک= .;wpe`/Dv MW4z0­$PBzVMZ?QV²xI=Cr*̯8S#l'2t .5 doX , qϘ_6a<ء@EgcsCPv̈t-fcc2<Jj ˎ G;q D},=2=CnJ":ʶi$FOjИąR:(@ ^m/^fjO2ktҵc1aSkRcTMcNŽ[2a*najA4msxǞku ud1)_|e$F'@\w2 / 9DRÏ9;701Gfp19$lm/SD'>gN?Wۛ< ӇdقMDN;O%}1o|gAVz=#-Z\# w;i 7!G!#<[c)h0$bBj[A6VRXu-+sUĵ㽗m(@DȫONg ؄02=KF1YÙ8 t~ۦNCO7q}V-Ge@KWK#3(Y/yqTԢ^r6r>7fS h3.I3gNc[a©ǜfӔ4Fmrl>RJh&ŜJ̉c XQpr yu6mвo%_ |zj]t q-"cO,aу86ٿrɤ<#D4V1+M0iK:!eH:cY>KܵDuoר9$>5oM1;*X؍9c]%%)Lǽ d$co]C10ɹ'0 QH[{; IDATB~r\A _uPFgjudæ|$VƸDl4 WF&rJ]յMLE!,,5*;(V()q8bp8:hv"m&EgM 3юz1}GqΟgjVW:wg8@2Sņ$"m^V}K )چϖƀH8ωVw$py6'$-Qa9,),Gx6'}XM~\/[B6.q{kHNNi}>:B9D7QOYiɤő>0 aYQEUi8nlIlK?hSG&a;irF1bT2'(F+ ;3bIQ[3}_QRV~ɌLetRH|gs' %5"G1 6>Q9o?@5mvFK'\Q Amcұhw쪨$=- f{W_줶I] ME 8k2xH]] ͠E tRnaa>!ysYaEE1( 'CR04t?(4l?dZNaj/_ERG2 6у#-H!bDpa& ACi\~EE()97.իXTDFn~ vE,n8_T7Wl"1/h23CGd"O Pr 7S^]AI]S>)C#vOc Yl늊(j=,DRbt8ZHtjJaTfxm%dCѥ`M 5#hK=5?3Lڥ|CF2*;44,cc\ =qf#~p#?;^BҵP>Bq.!3GfhpHe~kMA"ur !G!i94$B0lP ! K-#2TBqI BC\sxB!\n7G*C=#T5H]~CV+AB#mqttt: R)܂"7Lh4?3GuuTX_x/ q{<\.7(F1b -HB#Nss3`䆝ȷv:;#0l6t:fٌ(Q aäŽp`Gg'MMM8|w3dd2ABBB =ʺukt:Z#G!ҵЅfbb$>e;4t<נ7`ٰZmRI}HWWuuuDFF0d`B456SZZFMm-Y4Ç*k׮ x\.n7cƎl޵5nn( uOfݺ*l( Æ cB϶.xVzihhf"g7aщ%!.gęXWEn&*C` úۍdBQ#T0  14~L͏o`O`،LVdv秱izb:O qB%!!~Cu,GQHJL) 6 `XFRJ!kh,Vn[v Q Y.G;E˿`ٗNWC&!>*Pyt6Fv< Nomv]\]룱}.'%%i/(Hkk\8}|~kRTjjjKw)8΃# h@6n$0EGgԼlJ]Sf[>NxZדuߌN]73Iu)Ck#v e+8'LTTnt˵_~,aס_%]BkA=wESUjpIɄƃIk&dҠ? M:A|}]jjxFw0cI'op=Aȇv#YQu}t5bsOyMg}JDL;{ZB*P$c~i=MO_p'M!99Yjp Ǝ"..~QrO^U8h7n^BT[ϖ7`}tuX̜0n^sYNBDTowѤ#iشcY>o AS$OE/.>Lf{i˽?ESV4FpaB9bimk'&&N,`Sa!'8XY =o[`B =IlR#&F*|eS},YÇcMb#+>y]RD0ong!,Xq'aayکn_JB>zǪ{}~O1 {L :( 8a٥521?̎<ꪋ)qz#N>e4& [jfxf6RTXE'FiAhakfO fU[QFl sR IZk[WOxl(1<,`& =A4Ƕky?ˊ \O't>~~<OΦM"zv[ -xV ;{B|陙$$x܀^۵֊,[{T*1<1z"'p70#_]FQ8Ny,_a-i3T>/v[ \T?SHcS_?6@͆yZyՋd{|.=YɚwWǠE/[>א_Ȫ.RϹq?̼5 \̲ _Y}#|GZ-Bax6.}krj>BqՓz|@O+Shi|1K}s2_Kk() C+x4uO-"_ g]9k벘|2hݺw_™oF||j)gзs5Op݋9xYNyc>ܨm6p]sy E0ϲhDu S?\y.J|Ǚ7P.Dw2ǽQ>55=\gs&ԲO V~|.UyҦIN-^aۙx3)g|]rr>w3߆q Ljדs]8lOy𸁲#$!z>":=^rԈ\\>[tVgOWѬ$qfBud@mKEyqMFNgbk#5*6R258.gY؄ʵ0{>k@'HQiҏ}BU5{$!ؕ=mX.m}^]זܼU(#v]~:=i`Ӣ|2g=Xm9vĆx!BN/^4Qkhqc!L>\Xc8{>Ht pr5f#f_,:)IXߏ.}+M* q6,n{>ZTsAN  cl/h#CyN` Vpwclk4TfTڻxv <{םS5KV {%UUQ;;I7jPP F̝4DtNV0e3 1qg`ނ|Ҕްdw0jkzz}IMI>-l޼: =ɣs6>vWWpO;MQN&c3l,GI?/У(DFD :_|\/=xmzxpvuQY=l{SP@neo' !o)?-xדZŀ)>6 U5J|bl-f,0Z$a*hJxS,Hì8.EhgKZ7.sd2Ϧx]rw:6bċ_f>{ʍɟEAy8)^ZB+g;lY=%Yt)[^7Pzѹh ; O:Ѷr Jl|wN"0P{*xؾ=Xjg!sG2 ݪQd6 aI6yd3?e&@uTn2-F4:Dg3N'_cq/YNEgÀwkd4 >ҘXS` OcS3*bjF JLt4 822׻C<6o.s>??gXݏqj.b)cGz ]Fw#} gq=xBBO? ;{/+LâGvŁY!{X&Щ[>0đAwwžHj#13qmfr7o' ʘ歧;88On|p&C6=lFQl֒i7qr'mq^x/&` 2{40]X,9Yf l=>PI׺w]0b$S&OFQb⢤Fpۋ*\n7y竫q{ Zu()ZǢs(*E'* ! aC{´#uYsf3]u/:EEQ (( (|^jW;:u4hM1dg0";Ltde{1k=/ \Qu+VDi&b͒U7).JΡ~+*BG6D0/'dd_9& H`?bywA 1SyWN=*@^n.BQq1uuux}>EJB4) ?-U TYdC11!3 dgPRZJYOY`4&N}}=K_Bgg*+ IDATKIZZaf.H:xBBO9 #$,(-+ ?Ј"*ЌdLssx =GI #$\YdefJ%1>CVFT!@!#ҶlzoT!zBͰ#GB zo>W}Lɉ{8|hZRxBKtf;~w Q~]<rpl%*6ׅV=[DEa8hjCXυӇF£FhŰ|{/{J'u|?oκZ,]BcP=]vkZiDd| vW{um@`%&1c6/{LJ{  iDC=״AFg!6%'aA]us1fj?Jf$t>NadR .j;GGc K_AFHBqlk9jCOR&lZ9_',lypo+SBkX2eY_i^BA'\*T+C$ro2gm!:*J5iwfpՒĨi;|ob=߬xYCoMpO9'ʇ3w袥x=9ǿ<[>:=_3\Φ9Ყt7jɧ(-a]?ΠɈsoײ's?89G3W(r}LnݡKӥ-1pNR1~t6'݀_y n5{7F KV Ƶg3:" -,u匘0Cs'_^5i\XNtT7qQT8&Mُ8~Ѕ=LV0BBlΉ7s6Wu>6q+rDžӱk7zK*CǞLgdIcplnifڎ]| lZ5lXD|g <&ju_6RmBĸ\`5!zieghPSͥi93>t9:AN]&h$%ъoOl_ŕ}m gOţI%2~?dy5$I+!pwm;/HPѠ[$u[k-`ˁij6UKL܁|n7펿+^r%S-,z%,og$gw+Q@hйpzJk3\n:MF45qo0ەijfu yTmozp=Ny x^Ɵ\KV#˹|"-O[ْ2р.袵 ]d$N{ಭGB͡'Bq8ʆzqS]YIee%79iDaӋvZY|g:;q+Ct\'o: {p`eZ\ѢG9"JJٰvվCN12̒7PUEMk{0Dǒ[*]Iyi)㺯U%jr`gqL a$y+`XۛB,6gJYmZ ,'|QNEE϶6v(.>R-_y.w^Osq`!H,F4 ›W!$#Gi9 >=ccqL)za6ZS29c3H^u;Vk~uحOƟ5,DͻLS"#LL31kQpy2WF Q=l\ i5]oaQQ ;i, -k,$O2 A܉N!{˰Uۮ81cg>{ߞ :.~EJe罊2_sV- srݟٿw_3?9rӴ D'n7 zENll`uk~rb,+3{:Uh~N.#oaFNU=EddЁ?lfZy∢znnl}L<EQB>b[K]1gNǏ 紇p^;A^\._>BZxBHB!G!D$]ۄBHB!G!!P(D ,' _0 xB^>5TgKQ^vRXBBo`RB'G!!!!#_QۄBHB!G!5o M}{.^µ#c=#:EO'9Eт/^) bO HB!U_M }|އ㦳m˅PPzFsk Z",&c~GPt(EBG0C VNGoIb7?d㛟Pkd4b4Ɛ=TQE.8l$)oΞ#S$ @Aw1hh#qn-zө=UYjvs7|]lx4F#p;QEB E?(vC8S[,Kֳr޽Σ|!|G8Д8b>mϗ03x_oSqk8Ak ^G.}'F/%dd2a2Ez KŷdgiwAQx} *LB#tiB񋅞#6*g}r`5 xݔ5vzSHJNDQQ4 hV%OHG]Q<׻-l1~-Gø7ڕ|a *j(8 ,Oe|`kg|#6t/h$<ɀ!2,u,c{U$ W/Ҧ|tkL 8[n4=6]qđ!#1}:ۛq5u?qu4ruwm=({G(*&l I1P>|(~ױjf\: T ~^ʺe1r[QQѠQEAѣUzA i0Ì\Ka:̑g𤫞u# ,X&BBՑڵqPEcm954VPE{Ks Q!߉۱xRʊ}+Qh'fɲ/|61͘&L&?z bWBEI"V^y֝=2f?i͢f~zK,9'ߌ /5t(H4>YfsJ~7B;xmY1Sr<}q?,~dhLVlQ.>5 ZS<1.8(PsckgɽB!ľ̊iUUUnEA~n7Xờ vq(vwgcѷT/|SO'!h JYq3cz}/~c)h4:fcOw4P><΀I~wQTmg{Ke !NЛ( 6l/" vX P@){P޳I6g?@P7\SΞ=3s~)G@UVug ́AAoP&x$эZ~QlAèG W>րN%&ѿb22%ex/K,_^={ܷt2re}ZZi22222?A\̜Yt׋HDD Jt9Ӯ}%8K}~Mis Jޤ9Əku?+MsPӞf .ךLhGZFFo<=w[QFFFFɇa?Svs1Co ru, ]z}JZ3  N22224T*V,ĜYDˮPҚ+###7B&####Sw ';͛^ Xv|edddB£%%%2!?#`Jo*bN,f}ߟhFR0CHYAA7YFFF"xKܟaQ*eҺu),( l&""V(,,$s~IDFJ Ν:u('7-[@ӦM1X^^>yk{EŃYܥ|eddd邧֪AP(h4r]vBkײ޴q [ml6!U&<<`JJJ8x-[ʍ"#7f^/g2'//G}UEOxx!W@.ڊlVzC>/NjsNF#͛7<%%%ݷj5y6TwS+~6oʆ1GF) jBCkS2Eߔsg&z  LvvU=yy撯-|A4zˠcRG],Zʪ>)v:Dzz:V]vctA7ɅЏu5O^{TB:1[íu"O(emWǹ[G2y殁_7ez>r-߱=+˜6>e;єc:S/v {UK$Ҟ[9/K+~Z]tDQdȢO>!!! 葑zg?b)as7[Ǐi߉<$r5\VΚHkCJJ ;롟xm }y=~;ċc"7?Тk*4KNjvnLf14`_j]]q8Eؒݎ ?gWE\;56r3#"n`>QAiYOC>s EINfյMކ-[֞?vt-7eu2yi)$%$={ٹ{9Q3HoIVN;V(xĴMt,ƽP7 !powXir ->ʂɳqngK/@̣owwɕB՛axⲧskX!IH\û綦 rgKqE6k徻 A IDAT ~9jV7Xw߂nt-^O'wծ^Wl< ӣ1p(<ӘJF[}ϛ =LJ <;$E?ϡJtPz >=DZІtg׸zZw`pH&n<؂W85ㇱ2sz|s3Z$|uFkOԙV||pkaڹ;m䳧`ӒaϽC}>?5C,= 7yrݤKo1i/?:~syeIs O`%#a?w\ߛȄ 9"tgģP[a掱<ܭ5s>_1rrֲ& ͣAs` V4K8^|)S?~d?>W޿ؚf/4}_2=`?ޔu"vײP?Oo_n?/FOx)".wnJi w3Ovh;g̒UՊGj_#_BqVY& Klȹ~#'7l>%~mOd0h`?6:CԺnm;ͽ"'(ȇn]j5nэ#"zD<([q{tòGFh4Lq;/7}!CQǂpіK%?ϊ˹{q:X5DGǒ6g^|RϢe| 2'>%eҵkqZe,íQ_QP bw4hk-1$n2+ydBYO|F &,!㗷V,TI~Ym1`3c-Ob䟹%W] Cz9. ~19Hua[6m?Cӛ?%$wIjG@`=m; @F?3o (oF/c{sĽQ19L^uaN0<=lnR% X6ap?'5N]4;:a?'o>]ǮNEd,'Bxnr;SB1iOb{[N?1훐3cf3_̔:yl=X^wQsqYЍnJy8]"GgXFgDL\2D> 2北یW,wsm@hVǫٜv-OӚXc1|>w:/.DlLݵ_66a BƌIP2hC9[&}hAR<>ٶt:-B7/{;?n|UY,Yrw}{'uGVpdwSV'dyj>#9.Yt2c&ޟ},^Pʭ?e08(koc{FYZ'ypmT[+8yVn j*X=)/ddkg-,r9]e??&ItBCPw~[vHN6vgR0{~!EZPS4n*|"35)e~';':1ilλ'K41Ξzcxpi1ԝh8qJҹ͵Z41{J@P*hthT J%A@!zM4J +n=Ml}6=>ޜ6"Rpy8XF~BڀVB٠LskxTv˔WS YˇGGՠR_l1GDڴ<Tj FV((EQEբRT3)qjJ-'ü%QANm܉_S&㗔*5* 4HA1Ԗ+I AGADBЪDž"( * D$!7Cn 5b9weX[U劬 *IR?[mݳ=YDWV<~jboZ%=\N͋c:Ϻ?jKXv ɯS\:*ʭ=b5IB O&) yrevsru ЗؙB[e`YjVRpp8.( ʪ:ZcXjlUh>G1s-)7l绅RэVSk:֛ik^$ehj 7 IYxBCHIINE9iO?z%'(-n8$Jd9?ao6>c.7vf9ڧc 5f{9Ӝj4>:Vɬqptzޙ ;A՞/=skMk h"z '<< ϡllxBdZlx '<-cі@u Ps|3w/%?H\j,k' s($4'2OPklck,hBE%O&o Ϸ);XǗ dY<`7icyP}]pˇLvo&]_@(hd&cgfP$b6фUbafWYLvvQl jrؗ>jjP؊<@B\}ÊLr;汷Q]?MrkBu @C43Uxi և̘f0̂f=7;^GBrZ)ͫ Р-?H#F%* Y754gEѡUUW^^174!\[O94%CbzƔO(3XhsVĘODRkxn9cZc6J6Ć7֒hs,;~(ި=6* */"]2w!9̽k`ROP=m[ⷬ;JjnahL]kRĤQH>u V,j"A\`W'aSie6c4ԮqPUZBTX ÕX,&q̽g}ݩuu(<#f |."~eTk3g1](E'*x@UM-' 9k!$͘[?òc#A Ou7)]̴$aIFd O6, Є Dj?Lgav q)=HQzu)v_|ܣ2U˯? ASYf-_εBxbgu ʫ}=M t#[7*؄g^I|󹊱oHJ7}١ Ux_;¬GY( ޕkX@1sM ^EFE o "s~Xi' cifx/e6 ={¢"HNJ2232utlܴҒ2ڧԋljl6ZCJ--Kb򺸥=粖Z3qBЪUh+ĉ|2}ѵG2)R<*J,8Rw`(F (P B媡J_ડR7@UCYoJiZ$I-9W L^n5~ZKJIqUdS\gyy#UAYQz畝 Ra)n #ȤZH\?/wF+ 0ֺ.xj(-(&HEԔQX^GКL 5h.">Ȉ a>U "' /t ǀ; +Ez4b %8F#׀Vᤢn 7^N*h|"֢2*N<+/jj kG+=h :*UUz:wM 7hzIŃ`c0Qk(+jwQ Z&=zr U5uF|HnPi5"jVZA#bPeFo/m8U ^ZkZ5c`FoJJՁJA6j1압TT >Gƨ8o3W8h/&o|}ոmIS+%7J**P3G%:PZiGVЪ`*urFKZIyy5NjzvUQ^VU7YFgKvoݕ@Ӑ+VЫgϓ.[[njI zY%wgkPoHkm r,uoS:ND]@$)yyK1?[!EXғ:d֮F5!2"fn[^K)G%ٚ}poZjEltI_T{-OVŕoc,3fJxbl~׸]7#490a:_3ƺ:cP 2-H}"#ϊa p-6z>s Zc tDDb1>8R w3>׻H)M5 ߐ0|_N)8S# )npPm$pi%^ *Azp'}97y5~ FQ_3}|1@J-x]I>}ٯMPY+!DͧNA?:/BϪ'C#A&PLjL~y@KWMVؘhyHEdM3 r95Z%*5ϩ© ip(QBF<\)wIiW[i?NRb<2GүoO/Y~2{ۥwIHVP"!qxsh᝹6Io^*=V"B( 8\U*tJjMMp}̠u8 Rp >ID LsjtFk\Ͼ2H#زu;upҢyl'=UWhhW.} R4B}Y2&8v-7"ǏM &5ds5No@>P8]EZlL"i[&'H7$ny~#LjA lN$dopl j8MuI  -CHHŞh:pi?򼂧NN##i:6QQ.\IK}~ѣ!!!}2/Zx͡o]cZCUi CeǗH3'm˙/o+2,cwTR+-^U, P^I"]:9v;bX( RQ??c09u\l'W_FoR[By<\.ts>~C?1iЈnz)5˃$IDxv)A(JC FzGy~}u$P?f? Bp %u!4 -[`lٺ0""^ha4NdjdV9{_AB+ &MO>|0^xEs {>ew3ڳͦRvQQ.me-<2222)W-gÝu2%si"fn7 n8mGeddxrՋWҵ|8.k^eۏ{njqegFۊ~=c1Xv2sAQNxVgo{(ִ䆡Ii!5ٸr cd;d?GB5BӼysn=mАgmz# kHΔW`:s@F[u($I]n@MeE>k I/N#!!᯵H.j<@|Ե1Bn).Ppŧz=5[bJϟI$NܙO<=X%H8v8[mCPLDx8+##=Wb HKt Gt[Ɨ_~$}q@%Nqa\L&_7%I yyh'PKfA$$A}]ث-׮aj2d#s@8q۶oo4 7n7 7?EH %뺛E-pAA]Ê$\K/X,N8aQ]Y~I}>)~N $pbNߙ8)f!Q|o7y؂|2 qd@n{rkvZp3X@ tyg8+߈oAsϔkO:@@Ϋ?ᆆ>ϳF+?(??HVrE~fKYasδw|}:~ʄ;nx%V\‡k{%Nsա(\q7LvߊeKUvibo&.?DS<߶U/I:/=Jg~a܀[ڽo0`j #@ zM~̦TuFhF^%'2Ydyŧcǭ+s\u,>̃Dq`~]ʱc+Yi7<ѣdžO?Hځ.K?wt+$cb,^⼍l< oQ:5k7S]EyO>ٜ?g{p88_Otq6ޙMGoeӢ1svrغfErq>@6]~_nWj}<)y@+ oCɝՏ#n^7'Le"ooLcxK/  h̑fQdddr,i[o"I K(,(U#Ik֬a̘Z֖VɌyi8uqdeEՎժٷc5n[?k@@4E?M:Չ4D4mI|ZƦw.A椀R%18'cٻ3F}/9JoɌ9|-2pqǃ=%P"5r4J%"d YSw5y>mxS~Df/%jV[^o[xit[G*.jB&ӬWG:uH%1pph1/:Dl[z{.eedKpyPU;J9^`f?)fg=OodI@e!ӫ37<59Td0|a]k[ȉx.xǗ3g]ٔ+qVflmQ+c7fcj՚nڄZ-%"?srX6;Vg{30onnI>qP0նxnxIw翑z{q"gْL V~'f͡sx+8@*'ť[tRSUAquޙC1Vz49r7bhfz*^1GU8i]_Ü'ؾa)fݐO ^!~dddd 4vھ56m 6ld[N%99ߔS8{ ExR^cK>ԄZJyN܃1g NɨI1|87<3ER&ˣCI PނUF\\#ʂlCRI 7+׮e5!89Ǻz i&d7 xvE6f_ /iN6$I) =5d]K+Qf ЎPYkKPgXz5 wڙԆ׀j%_?S'|mXeIޝ.>\L:@oX>6il#ޚkQ 'i Ny-H,o G|nšbeJ:нSHE4'Cޞ|VZæ>HC'&.5r9Vz?|[ 9.uswxUrq|jBLL#^MYK0nOˀXfn# NO`@xbEoGZU}q2WW7*####sp؝Xm=ZyJJJ(,,U˳x.D|h*Bq9[Jv3Eދ|7k5KID4?} COۉ.q.vaS?OMֈ@a4bP -&Z@pQK ) ?ul6c%y$Lē c&9O (G89˹O:0u |TrCS^2 g7L].| 6Q:w z_%t^@`0za*QۅSA˅3f3)uLJVӦzeaXFGQAnL~'ZZb?3~d0ѩg;=AM Q[ hU;DD ш~ѕsH= v .4E5q.~ /Ŀ8J?X 5:GEx@K@aTaN^aZ9όwgvq;BtS#G? $9s ((';K|=vO>PPm 27+gٷRk/c٦w&|%o/mu Aٴ|&:#as:6}|*2HOբ]K}kd%i6p{fpٝ$5O3sLĢU Y_V+Zʚ DMǯPi6o}4!݆TJPV@t0rVsPET,)yJzzDrLk(߼ -8|LriZ- Zaؓ E2}xZzuH#ޮmP jîQ|pռu#h伮6ʃ~H3`M:7̖tR)e`xJ>;R;v*kP[Ez+NKsSd+`gj :i?UfEEl W@mcE*9 EIr wJq+ S8N^>^Z0:r/w]F9[^Jj_&ȩ\ʹ%Xӹ1Rs񪉨8B#!ً~5>%O2#}p uvmxyZddJU?ȢgG?ғN~GUw)SnVM4'֔$Q8=L;XZ| SII0ZqI1VC\yPxEskKɘT%bnYH*8ko]?_It t}<üsH$ _׏kMss3lZZZp|衁GQ7a``0V= # {Gnq/JЩUh>snjnZvQLH&r?:jH zh J)٘4ֶF\i'5׆;@k$R_?]RY>=9rM4p^z%mv$ )#lF}4IO!о-2S(}ԗpeH$7ME:# 9ZUH&2n_FltispXIɏ(huP8jE\um-'p>YVr,$aRʐibHchcqJF~6;Mh$n:B8Lh4uК"Z1hen?лAJ KGu.@]3./A@kO&nBv>0zYh=41 ?]4&@#-]1KXF =n1FL1jh#1`Qh 6HnzZ;pĀ=щ>& iCoJ(Π/L(Pu0wt; ̀" si@L(a!hD2Qk05"><`Ua5jŘ`9Ut㍨Z#WtE vޏ5DQը1hU:,&jχ\B3Qjەim t& )%Cv4U1Qu*ݴ4E 1! >} qo^" =G9λ2޼zm9wNYGC`ָ r8 c<0R9AgW7%% ޞ^0aq- 8P*Yߚ}`S#^!=+W3(?5-Oq.ٔ8_x+RA8&\~W|7mdT#'`jAv{iLwȽ7gV+~vb@ _C>oYmV 3L)DnW(ŋ7rθgFDgX>_p.F[7>UcƷWchUCm(r~Ti]E+g`,NNyD:k̻kWŒdao7)5۲DABC飫PDSwW!9E(R5&8 J?D 񸆈D"ǽ9I( &g'D䬫tz)6w^-/.`{Kǣ0pm?vj'コ'Wɗ1ZiԨeN3*Pߣj8p IDATnp'q{{holBxAcΜ:BHENeh.:>t/eEʻGH[ GBQb*@$nx;[jѪЫ𔃃J̹ 0< XMveEgpíqBPTT11N#S={5:ʥ:ŗ _Ux`T'6.Ĵ7d7AxƏL&t86n!smFD"j⸚rl34FG_E IV#r#:JOZ%'2i|B/so[$ w=T%^y&216k"r U+~I| KN(E[5|O=Mqq~!)+Ao|1cJ$$'8 D`t7-;JF0A&A@39@`$ 9 41>eFLhXdaBVv.?$ yNSv7Sl"f%" |yFSXxF1-;4F-c57x@ՒBcc#A' v fD"H%RըsT$ =r4(2@B4Җ*n:ihv&%*L2i [CgDx,>{6y:" |iJXnPqo#G()J8㳯taP ; deexr!Hě+u <)ޮ$H:D;rzV3l8LZ[jyrC9CMdqII9 G{TG)?'DaJ쉂 _3R['7^,mUFB!@`'VhoEپF tW5sXA~1cDG7q" GZJq|7\N pI͠B&|NWN ݂+ *n!vVQ VT /d-0 ~ 3:1z 1znm̉_!qeLwrh=F̧(_wi:6{A& bFӍyhP@3{q >fDGhP/Jv$Ȕ& UوeSзi~ݿ&<~/gsAsނ\(Ry60-t UUe E# 3 C*cj !ܜç)LItٳ*زf3+K# 󵕙~+<57~s^ V^Oԙ˜YiGnmbÏ i=8E^O xi ryϩe'k"b~urMj竻bDx|s|ۢRHo <Nj((GӞڊh}W}3^mmD%Dhvr~&zLĦq#4\<ۼ ӕMqa?+[bq^Aciii%d/ <;22Q}V6-R"jy$\<yqK}rfqJ/A^9Ws )h:;eoL<\|I]wwM* /Uulַ)"Nήه@2sο*Ʒn5k_|F+}Ye $2㬋dh$'1{޸ë)Z}1}f-1Յ\|Du}qZa ;vǻOՍ:֞gmwhgs%ve]xjvUŰڄbOՂBEzz鍛lbQ8Yal#חX.*(?8  aj/cǎrs)WIn^fSYQMvNUUdggR]UCfV&F *ٌ<8 aJ9q`eF/VV@%kmy7.G;Xdž}I|ymL[HEk+bhXWAb۶zze,JGӿ"DB2L8d16;xA8~.1竦ѨIKK=|nvUZ3R .==JIzZ**TjiijRRhԤVkHMvaOOFApAսw`l8t/%l@3vš.5 TR^DE,X0g/llEZͮ]&"oPhj&哓5 ۨ|cn*updND>=GR>ILNJ> ֖•SppD;Ф-xPLf HuZZ^ZyXrykIlj>YB&gyuw;ІtwZ)1e$`2 "ɨ@?F2 ˆ!2D 1n~B룾r\˅C>\} ̻SBa:v?GoƸſo "/o ?? uhG;ͺAwp]-cl#s^#Z!Ӄ|)?-8F"VbA*29`R1Ob$F:V혭*`Wym,z>p9Bݮ`lΚ;0!6Ȇ Mʘ&m;إAw`Ҁ<"u 2`GeuYP!$CrQȑ9HВL4`1 P]Yà5. pE h[10 (ú:PG;nQ@8Ӂ׏ ܃5"%<Ѵ [Lڔ멮ogݻOYJ\r꘱8.V\ = n2cF;i-bѢd91`u#Ɛ9IzUpfk/]Ĵl2m0b(H.=I[8bw:}tNpw6Sm KVj^|tigX@b/Ɔ^NaϘA_/"QVt&wbio$???es\ S; CR-G9ְ/fy1p/uxy,hO>(?z.BJ $\w(Yx{Y~v?\< oz(}G_Гb_@*>yE^\g iqj{T'0y,|^'d"yr.:erz4:g ٧qYhr#/dqd׽_]﵀y'"dxZ*6RJ>*ol!m]|A׶C6ZMru?*CIT- YM٥92W ѻ=G^Q$n5]s?ퟤ87OsAd{|WIN)<Tx$#:<XKQjb>/8sC;^Zk'x 5D^F E3[Fn 941fT0o$N0)Tz3ZE ʔt jEkGSBΝɐ&B蜤:ДDaDE5.}/NI͂&f6~7ܘK$>>-c HȣDQe> B|J6L >.GOAq*| [[(bGUە3I06Cc:,|>MM77LǞAb b!Jls1& a\Xn"9ZtR)bwǐҥ`#<؄N=! 'v9@lN)9^DmN%R*fƑY^4i<|2d˜1%]BN|A㹶B/M*J"99鸖F~¡Pa#‘C0|9.YBƒyXe?:^v G>۞;5&/.9z/];d񻗹:m)"i9%>az&'ý/a٭si T쫂 sM,9Yn'YsH5(^z 2]a54r ,Al墷ǕC6OsS3jjrr&'7Jr(WI^~U7.x4vvgH`d)2S*e?lf{9A{?ZSw.ʏyEIVAD9DSS h2&8#:[:%)/ 'o^cWݴMRJ$))RERI(J&kd"<T I.uoq'DE>)$j !x;\~ 3cȕkB f,8z~R^ǭ?m 8Tl>3q&K?LLf;yqr ~C;HT쨂 ڷ M0 pL.ΣB痢BnCcېn;jI9H$ \\@.QT+M8qL"}ݴcq;H Z[]7} G,VVM hأQk'-++/;2NyŤ$#;ʎ "IلRt:xAcu8#;М=*k 1jb(&z(QA{{;6@02ӂ0s߱\T>FtoeiK?&6dR.]dV 'ҷI[Ks+zkݤMA\nz0[G =_<~֖6vÛUÂ&kvT< XT"Ao4~-Q; yq˗?) EsVUKS1(%;y"ߙʫG_D9NUN⣢#o :,AOkkm`Ћ o3[7UOdI9|z~-L^]FQ 妷Q*<2<~vX9 ܰuo @CkHI (H$G#c2<(%ȌL_t)Lr)L,/? &ɓ>*Gt1TWxtc?O{^L;N/>ΝK|&^x? pP2\0Li3[_y'@Kh6!H4_'ZS]lfrFc0(/`S^^A ^GEE:SlpN[ InJrIֺMh(1la3krk;mdM(UUt)IP[A%b Om#g\̃ "w|u'M.-(IFaϲ[K֔L(L%֢EMˇaI4HymCD-I&2.UMO P:^yi^}yU,b/JXH &1.M`0A#jΤ, ].TZ̻^*QMYqvQ5k_{x21hS6o[OeL.)iON+0#C*4DEggvAABج#olGLѪx IDATTBd2ՎVF+;`bLk0Sq|^kkAW;XE0붍 o|u^}Cii`L:Q(o8c( NJXRRw&rғQ>8=Fku|=c 5aRCVj 5}jֶJA廉& )̲%l q}&_Gm[ە(-=Tצ"є6&9OMp1o￷nWʈ˙fZ:Yn'8«y߯ER@짡!YǪ'kRf\gG~.m䅗EP sffi(72TSs%+ɎCHyo/ {vK $` ު#t Spc)3,l&ӛ0)L[&Qat`}}}XQ/e\ 9&mpgSr2i`*C G h'GP%bԉN~Afz:xe,fC}xWKndqerӆA 4 ?q&M$\<#O:I⭷u؝LU͚^bS%+1nb@=LXsdy7z F,$ΉLYܘ>`݇jT0ϟiWW90mƅGCLd1g3@kmoouijF .yg3@.34e,޲j=t56ZtdJXZrg͌*yTuZe]XĮ+(y<^ڬcZDUyܾU5xrr:| ._ll$1& Tuag&?L(n_Am3 Ϸ=eHزX69mq\b]})|Jsy_\ĄHQ1rSH4@LZl iϢ(u~VyDSEPH7к ^_k~-sXwe#q9e~Sې@)"q,8uٙ>gaV2ih_" #$:)gyb7<.ᓇw=xݦԝQBOOG MͤN+¨ڝ#9Mۆ>5t1)/=~>h9z?$!;䥹g\K42NI(\*=E%S} Ӳ_Tp5ӱ%kcߟ$]ȹX7w}49$VqH{7pA_9DB R*"cHN4>󅝑Cڒee5 -kv8ȝ35YT -FvH37}.KNGmuhMa:ƮPbJ#+AvhLfnJ%sO#jϡN':MTAv!7%qdACT RiuaP+q5 ,z5V'nJ@g,t|s|wneeRn4MJd< _cSHGD/9g~ol43RgZT^LV-3Ljǽ"w0iAə0 P8G8?`@(bEK p< hsDTy(`d ёi1 Cv52$ q= u"JĚ(e2|0RTW%2lf5^i+l>!`F2wG؃Cq翥\t ,sO;9ѳɍvqI<>F"Y+J4 '1-"Y?~Ba" 3 $RS‹Sky0KNy/b|%뙑3؜?'zH8Z)甓F"D"]n@B >>ۄ'6o50K[5ơ!eǛ7S(G@;qagMgFQ>/),Z0WNI+ I:QJ{dj&\g_ >8ȗ f ~ Αkutd+=PDV?]іr]ײbO~|Lf· !j&鄮s' Fw{] t7DO^g. X-{ؼ-U;w/^ gpfFlyWG=ePL:IȌZ"Aj0Xmʅ\x\x^)R )1cl͜J- y%]QPFn=^EHz+gaY2N^u髥>q.+]ȬTCE`Dm!*< p ؛rz=k+D#Krz=VtZ5@{^¤):oq& ?|IKo=$JΩ3 ?gQ'peI}%r%sb+CrCdˤ8GN?ĆmԷ㴘 `Ku'V]1yT~a[Q%ڌg۪%y#vbg2#і~o'tPomJK)ʆ2f {8o;񞒬quqB( '?_IGGo}9"YdF8rp-d ٯz} '\)nP;:JfgIŋIWpe$*03ƴ5& Ο5t6_Iv6z+'m! ib+o݊k{y~C^Jy!$!DP߀̌}"UM(เA mZ@ɽfΟ[g.3 f;v~v"o޻v-( ~0rngƤGyēeI^ 3{ӫn--_i$++pX[}6cfWx-B(P)XJE}:ӷ~ &QT>I ꌅLqb䄐#B|PX*3PHCT96u=JoW+Dpet5F?vÚW%<_<6wr%q+ᮯ?Ckjyڔ4emlcIZcTwҫ]W m_/W`&Qny- ݧH9K B3Gڦ1VlVDkja JܬaJ^FҨۋD4|LR)tMO$7ł~b)`m7ǏJ-iYYxPLk R NnVՂq3&MN=\Cy+򑿗se]t _Xt]Y>HהqgʸOϓςB1Ef~Tb`wĦ( 1VvmV +sXPϵKrD̝B n}cBjgOy 駷װXU,y-b Ub9x}8z(BȐ6!#M␃fDaLhws9׊2rݼ#HظuN*"G'䋷dY([WO0L˾Qf{Tlx0yW|Ll?ˮP".܇≗O7lfZ ]9\ /lElc?Mj` .sg#Y楿M-] 2>q33 UfHֲ^a>[NCǹ'#,!x +< U`hն{7cb~wρ\yUD(uQSSGII5\4pBNJ)CrQ6ԒZ9<ݎ?PW,4G/?KCXCUEi՟I}bbcnbE{V+ց*{z9WY=Jqgk]^JV X.8X;{"}//obMm~?*'MJڵ <ĂjQB Gx׾CJYHYaINǞ$#BH$>qvNoWAQM4ۣ#jƥhQͳocd&ObaIG;9o=cu4 ~>"vo ; @ߓIWT-)`?Pi~,jYWY/!8d&(VYT@)3)EUv*39;e+R6femHb,r^]G]fL&Ƣ'Ziot4 xBSP*S6M`}mZ8aXdz/-kdqpI躉nvQQ$`Ѣgyw?ffk#j u3y ҿweʇ2?A՗^+L˻3Ί1/!lyfr[@I̥K_䉿Cv  bfq׬$%) 3TT+Zq;={x=ÃuL_DYx/DM-$^E%grnW=Or)%ʡSD4BE!--!8uQHDc``-%=- "FzzmV#IJJiC;5f6lfT&I҈ԴLgpa7v\|2EM`Oc뻰ZUJǧ)Ĵ0mzΑ :s窤>J4%{,),a\\95Rߤ8q>ӊDC|.b=tFh(ѤLMŔ\udy pW4_˾E2qds'~ L9UW_+jcz(9B1aw2M]?zf:i,(r "$rBfB!FXoEA_]n v2lVK {bU| w\&/g!w 渷퐶 ל[CVUΟuOs+dBHB!EbR"yyq/IaQXCLDӴ-Ȏ##BGaXYmq/EQGׯQ=vq+kSB9*; %iRBBhy~˩\NIqʣ(\ co}PUSSGII55LXž&i?HOì -tviv23SBЀ_7~N ۷\EU>=}by. qBBF £?rhMM O?40M4Z,hZx8ALĿwim&2HQLchZ8E8l 3'7%Œ4Qt3qqoNuSvYG  Ӡ`OT Wx =>6{3a[4sduؘYi\ƦPSr(WOSy69xB<Ն劻~d2S(?[, i l& b:뢙XTRRF.M f:iNT (۵(*k:XZE=NiyGI魗RqHBB!4M#8~><d1,^LS{6{W9j˛~:l(Pl즮EJ^1zٴ.R?b92.H'%.RSŕlC@5rw#BlvIϕ9TUqǤ-p IGŒy̘wrP\q:0 >4'h4'i0SdXZRqy/Pvd!!H"`Ku>L2tb5c =Ptѷ(:lkKWߌXXR5q c !"/Bqn\XSUo76U 3g_ "'B d!bH$'3+3F'/?u>ƍ+8$C׾9HxrZȜr!Svv!$!<wYTeNZH9AOmMt<ņ3܌>~էٟbYAP Dzj [ o7ZFn S2cygKqǑa6B&YB!F|q/-/&mNʜm/[Mc[Q^PnmG GIXN+ȝs1ޒ8RKIrж㝸 EWYFz jx{#κ=5&ZЎpU oc* B1 11+<6Q2'JUգΕ90tUzju?CQn3`&;`YpzD:6Eۈmv*"C[6z*}Gz5KS] T?KϬg{oηlre!I>BHB!  ?0@FfF\KӢsmNww =K4'Fp00~߆Ip0H0$҃(aq6;B:d9NjväYHK 6ns~VZ&]#mOx6,tѸiڶ"LYv8-c=eo`9svBwCms!$!ct:IJIJjj*ͮLtbT),~w)uNu AUw/9Uoͦ~Bm~&l='h/H&i6}D< GO i~B5Tsg[>B@!twlw39ENmInv4tУQkF`XHKLAQㇸIh0L |i^lV0WgZ,$&YS[G|ԓ]c ֻ1 {[i :S:| {p^zןRN<+y͛4FYyeRIBTCPvS-0k+8L/-QBB1`ޞޘX4.rrO-]h //e3i=2ژ4,< -;HPb4Pě]k,z:)njNs8oZ.aCR˨?3z . f;-bҲe\t+K7;jq, ̙77.&sʂ%;XM6% 21chp.liO_uKoa{yt207*Ĩ)hk#tu4jjV,_(g+* } )+- #rn N-!B茻~kI[yIs*544Ƭ Ot 8t;[;|BBq71Z9;y1lV bSuP ϸ'UiW+Q jMȃz-Dd]!~˧Y_MX>B09B1:O8f}1 c%f}O,5 ɷDzzˉ}NMYIn7xzC-PM`L:F8P6`#z„?m1StWΎ&Bɜg鯭uX18e=$/7/`|<#B,ǃ>y1wcY7 }{Oz1˜ ƣ*mmdffIffddfEzF]]ݤt?fAi'+`&xnS^PΌXctq5ңhGC )6O>V?ELc6K,8'Y'?{Ic"CڄB~?mqׯp8LKޘiQbnh[mmfF57: C MDQ.|t]=dٔ $hDЏn`? ojc0=vڣ]{7<4O-_g6lS.~[>i>}Uk7WRס21=O>T| !# Uxϣ ǼVR\ ς. ]_0wrs. ]Vt|J"6Ղ(L^ `bⰩ8m*UEIq;0y:=$X,ulmb˳Ui-4|8#Bikk~a[bҖi47L詩YDݸ .;Т:`( m$cKKI:G@/8SULMiBdry>nl !G!^ X/D IDATrr_. 1ZYfQ\\x<'Kd.s_y2F 9<##B#IrRRfTU%==U, xBS%)13\.'1ZhfS2DOِmG5٩#Biiw C1[h@"SsZ?гrט7m]G<i|m} 1u AB|<:!b$.grlNiTuW@xqeSo= =}ܶw<%TՍ}52Խp7:M w<'颺^#{|^Qդ"4FHK')"7!$![__?]]TL)~Ajj똛:ۊhp3\FwDz[ b9vȸ)eGh;/XinܘQ/KKK0뛿3%zveǎL,J%)K!$!1DBB|Vx&ƨ3irY­Xhl b@fRq657M'9Ў\_˦#h :}QkqٯW}B*c-[s'~S0#m:v٧qn^vL !G!d_WVVs8L. O$晧0M0,_e˗r /fYILТ ċ۩|ڝih,7Obg]Y\G8kF u/ҝ.`]l R>ClsYcAŤ Ixl4M.WPvG\!NJBzhlh~ ;+wsm}tk}zF}NnpXf%pXitz:bn ǮDڎdʕ CDSǀ\6+(` مnEh:sI7}󗗐.iG B1BJj2nOUx( Oyx^^a1QU+W! +h((BeBQ^VaSIq7kSIN*tdW?Ǎoඤ׵ Eߗc05{zD6mڋ)!_QNaZ`@zn%hz~(_.j6uіSBQn 69cxB饳S+_]sOp8BeN>{^gO+dGCiXM2cڃ+1;.]B0j`ow*rp; (!o'3?;>4:KwG̸R-'cHyCަ/b&C.?Bva&Pv|kъxlzn;o}d9R(y+wu {լXEQHLWT!) 4773 RVZ @KK @IeGt9xݣzH$B$뺎 ))2 I}cCqO;~fKu=esρa{kIy{||^K| ÄΞ#_e~UYbx+V_; B1BOO/L6% {WĢfJ^}pqg˛5[&;0xBRSSz+BTxBS'ضmGL lڸ}^nXqL.?=;ʹho$ꣽ=ŮݻD3 o]wkw0QS݅j;)/okJ*ϩ'B*ԞgRu'D>2B!]]TU_mklNظq| hw7E.#o$>pfMBaN#lj墙%z]hIX iQQUUj~)ۚ|l#SÄOͿ~ߓXSǼO}GQM %lGE@zXޝ]<9=Άyx.H"M"RBz#f}wGFA)⑟~>Xw>;;C泟|OM[\`Ye[c(nKv_ơt΢KǩȞPGDDqQx_ypF#~~!|j cvt,  Lrv:{n>v˧gtR@#es,(&lx %R|xyΠ!YuUxDDDZu[]\@#+W웹s"K?_/{~7P:flb``6 l@?frywh˃#޺  d=N$A4Gi d : Ǹ35TQ#""StʤG../޽j>;1g+6Lq ǰr,Z_Bige"mb lx :#_72TnWKeCA{*B6~56*=ɆpvE( "{D]DDDZj%J W_fV8aɒۻtw=v1YSkrFANٻІ7xgIOal>æ9j feh7g>ϔg)\vFj2;BS=μɡY&GDDd/deu]../m͝z?__. ف=}_}W@CӲ'ZqO⸝/i<{G0vH]DDDZfu.@q͝GXs}?'{ >HӁ$Ҋ#""BǎYvء$gCI{ ߫eCS~; PZ<XO'\%"JxDDDZʊ*VhI[p>]Oڊ}zK #QZ⪝W[v=t{V{HG= 1=@ C:ő9qjEOޱDZ"Ye|;f_LU:dRpE0u~Ԍ\vHczD6|^\fCw umFi$pz=x\[D NdgwCVWzz^%%(s7555dggP[v;Iz5a⮋ڝio?'--/rױ)z"v d=8sCzbʏWs ={׭z&XYϡmpE~$~ݛEӹ927Ͻ.i9y{ea5j[uұx):E|_EE%{t/{QiJ3,5j 62M"ƽ1}A,izFnq/d0Ni<~NlcF HkC3L?j$,Hk߉cr/Ť6!hbZ. #plZ;RqmK1:5,5ujs hNϋӌP_]O(Ezv:&4.[ M WT<.?1GLHĒ$Mft #Յ݊Ұ`,tRpI\nCĭF8xۓ" Q[]Au}&|۪R"JxDDDYSC+##?aP˲DTUUQZZJ"3ô@4ql0>KޣakGJ6y{!>}#Ku=uGz/^lI ~6 \K\ttx&8u_1^ňw* [`-~vi u {sL:A73_N擤l0iM><->Nyzg#2yyݼSXI0y8> W=wTr ;;^_vN~N^y wXʚ }.5o?kdžr撣e  ? 쥛fS~W?ms{{OMKrꠖy@DDJV7hᒟFQQ!8񔗗1h`Ə?xih4¼yD̛ hs]FE/24w;k"G(o/%w VrOKtR>q?Dkq5R wT"$/Yn㉏0.H|>H1|M)wf?K_>bRJ=ƙ!TAC4oދ܉-&O罥KYY154PN}C¥2Ue ulw${VR:~dʷx蚿8_Wʪݘ`+=6ҹa*bya &pܙS盋y4SGDDNj;ˢsNk׮bƍ6L,h8D?a̘cs(;~.څ=9sYZ*ֲ|2ny*i?ruQgD$-g<`"LݪgJb%Xrb 9 0.O;1 8Ѕ)dΠ9s`:)N ڃ&&nؖ4|CE*EsoːlL⯭ |^j*JZA0sDBQTWEp~c`0i0`@j%3rJ?n'-(!H5?oHe5eiLSfՔɬG՝mnqL[)//ՉZMIi31[fմ?+)m}]E"NrL$-01b.;vmN&i5_$"JxDDDSN6GիŕjY00((8MRqʖe1D$~*l)igSZ*zKkwOxcybŭ lؽ¡X3C>5M]bjټrX‘P[sxu9)A}s7Y*jD ^ghwqעX,' KZt3 [3);46mEx֚e>Y=ӰuZ U])+FLށY "J (:E@]DDD ~?+Wb!{9|MuACswp$<f՗d!u݀h/M٥-ݵyxd;jaa;}r9运0aeqBz .p 'KsI^xf`[W 0xvOv;cB67IF>kCl{;W;xs}~7i>N{ox|5|gG/aA]g2ڥh‚]m n`S6 Ne؞Ŕ~C'q+ZȢr\.HKIjC8rWS闧xD ˲YSUϞ͈1 ̬vڢ""򳉄4 ޭ%%%4}yn|41Mu&hYDӹ_iuۤ-QMw;w~v]y3zU_ N +=ѣ=έe9}T.ND~n&""BNN';222yV{>;]}]kÆxo """-dVW]]=sf,X$D"ӲF#~$IZ]NmIy|bMEaDH8L$Hăy4233HfHeIN>3w,zOrZ{ڷ# gwʓL#ofNt3/ō39[rٵaYqPR\JiYX˗/c4ӹs=ΓӟxRgѢ% (1Q$&IZZ\x5`3it:0 H&Ʉ }f Iӎa|/nB.mf -LFid > 5g;Y!B^$LUK9pĜȯ4ƫ,=7PwZ4i"/d8NUxDdTi!K~|^GPQQ{I#gKzx%b=tF9tcE1cHx|my=qN]7,.nws9\]c0Nm?7+||}<.zu <;sEL{\.'G0j-*""?H8Jc Hqq1pݺPRRBc0Hw&͗[(**[7xoD%R|,K9s9bf}1g=~V H #;:fJcDdg!DD~!K%<""""""JxDDDDDD(Q#"""""JxDDDDDD(Q#"""""GDDDDDD (Q#"""""GDDDDDD G@\pIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-component-explorer-view.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 21782 Text-content-md5: d3454d8e91422ced460041c6c4a21852 Text-content-sha1: fd37dda280e95352e346505c62a11a6011377d9c Content-length: 21841 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDR"sRGBbKGD pHYs  tIME!'ZtEXtCommentCreated with GIMPW IDATxytƟqV'$ 5Dm @H `f1fmi 64@HBImJ.ĂP`J#B!"%XdecFҌ43ɲ-9fmF37n@!d@BH 5;qFXK2ݎ5HrnxBHlJ2"QRvy"k<#ľ7BzȘ$4F$j@<\ HdԈ(_' !=hHbF$j@JJ˱ÚvUzlYNeM0(#eKCB,?3VF C4.b$Gy_6l$GO݁ul;w㌳5hLHJs~OZ wUWZ\ي'fDVYR E|8/<7@ K݅%e4$/[i9ӏȀdk?$nf?%(u|=%%x1"VȨQދa!UN'=?~t񕖏]!̒2~α?2|;}zRVbd뚫XH!CUxBlG.x9w<E8jp ͨs\,n9Ǎfk[ThY2AxC+sдrxX~q!5>8'. ,a:V.9OG)iQ8X$ϘSG‰3"%ďJk?ZUYۊPgSeF2/FV:7c\z4x2n| 2|sZ`2XןӝΑ|ƥi6o'8b_/HHr/|$$s"l֯1yJR$@ '?{̶h<4kB/|4z9~ ̨ƫ'Ͱ, Z~w\6.о?8 +>y gM>Y|4)iWſX%쟆$[CBSf@o8Kq?!MjL$a88J ⪩TxSƽ 0WoOCxCPθSpʴӀ-Gw^,^artDI; X.Ɓ"s+3-!z:Wy~Wᆆ2`a+&o e7]eH4 crʩjzUYzg8>+oӐ( ,K]s"zow"͘p)شmni>؅#cԁc#cɽ~.|(ͿFzo~\[ Y#wVWT{c=TאeC~oä vFs3N/)IX[3yO{9XO߫y5(C[vtIӱ" 7(=Հ ]z c!Df̨a_d0 '5IfyeGNÊJ14$=Egogc&o,NJ@U H܈D(&E.?X|EҠz"XGC ʇ1B DhDjBȀ7| a_B!$cO$igBIOi~!14"BhD!ЈB!B#B!Јц/= ݻpF]7Of 4FbfK=/} mOy4Dcn uݺN37ƣ_F]3  (_iKq~E:]Lp=hi2nt\ !8Í[=4ht>Kxozos#U3'߃++^m~ DkyNΛgEVyBi}bRyoAk8%9̇}lTҍ|3ngf^qO<ρXu|خa.|p3sRi_[+V:A%͉΂Uʩ|`mLs&Ltʵ3{pwCbwj3qexx t0H^ƒL=ڞ'G{ 7*@ʧe KW]B#?VlMDC'h޾.몞җ=+E´-}>%sfmֵ2STLܭcڂ#Fs" `#4?? Gqq3G |9LU~·zxYnrL eІzdt|D|j궭G'9eBg[S9# rxz"BB!B#B!FB!~eOhnfmB X2x,p!!B#B!FB!B!FB!B!4"BhD!B!4"BhD!ЈB!4"BNZTVEJ!Јh"H!dp,B!4"BhD!ЈB XX?r0 @I!M['o0?»8hC;P? !$#" @X{D"\5Jv"@!*CKXrYJAPI۷vJ -b9BȀ6"Vo=m҈@ aH$/f@Ԇ)[>=(+Bj'5.OnZu Y !d@0Cr'+iz; ~ "&0;v%6|؅isМɷHhm-ָ p!Q/e('Ifvd!$WڜHWWPPgl۽k77>CbxU(9{w,7~#DŽݳÀ&{J4#0߃`ԨA T.AxbUF<7]475ᨑ=eJ2%D!͈D"aF~Qc0vq:ba?O|^"|b åxb~$йQuԂ pZ I 4V$H>j*}y8:f 1C`3(f+$I[t"*Y}fbHDD=m,̥]}۱ez!`e~=1q V!Z DPZ(=z^i=WVR*/5 QzYAfdPyF7D!ٹ7}_ڰmzڹ- C0=-f*::",J{UDzF=I$X[!M hs1@$A5&'BFdk:lZ׊Mk[i]Wck4H$6\bk? Pz_2U] *,gb*h|STh ?TI+KX'B?de8k1GkPV#@Vs0bpI.=?tVS *eo)[%Tڔk= hKm/F jdUf6rѐBr} hnCN܀oy4N5}cF!죷[ʣK My&ͭpi^ToBH#F$bP!wPTѧ'! #}㢞! #ҝᬞB=B!Dz>2>ߩٷdɒM!dx"// ^3^^WWXL2 (..=`߬dc g꭭9 G_q0ܳ{7+W P+(.cFOԳ: қvT+B'WH|0D {wOgGxC=U`~BHΉd*pHٽ#^J#퇾@a+m*4)$e,BҰF**҄U+ wByt˨N(aR 19TeN\)Y^ p*S72kV,ޓݭOj~1J>T6u}&MO eĎcҦͺ9_|@U"6TգTYqNTr%-y>;4m ^i.z)*8p=w; xLTeN.f:HpַluOv>ͮ~KfT<z",Yj˖ܾ6-9]4֯&M9s&hk0рzq$ }J*PZXQa+[J߭\4nt֧uro 3D!p |-p=^AYA*ZMzsB[:WpFÒ5nwVy%ɆծU^ ؼ5}ϞF!# "V zPذ z!0eh&%6Em4ze6M7Xfbbʌ Q}$ֹ&4֧uE77,9<="~|>@hˮe 1쟍:' TW_X[%]B-J].EaBLdJm5IW6P Jz=z].Zh\I<@*ʘ͠\a^&|= t>kc9* #+eZ)QlFKFo~~7o9n} 렧߉Re3k78kY:X)z"BzU| !.9le !$wɹs1.ç/[!4"z:>_6]çѐB%J7Ӹ’$nG)BI?tHADf>@ } lGMƋ:yGBI/mu0}s0dX.xt,㈂6._#ɍB{8l}w?sx{hO K#S/$Z3C)T*HBFd y"hj;vo_ǾwB%QJ4#0D8ɂ`F,** pB'b,dey__OZ%Va/1 FJ$B؛R'P2"z"eap%'#S/9E߿ BbTJFBWBO !,!b‘43 Ң.!D!Dz.Q})6Z#4CYpV:թ aUW+3*B'ҷq/gyq`q4 jN I(j>+*;|VUsv!WRYMK/5/" (U6#yxH$@m]@ @!DBT!%U@!$S o=stI[l%"BO$K 1LAkо(8 L4 QHrv\/}} l#†-!4" ;&ˆqp}[x/7 AI0fT>F<7E G|_^k O?:nx3 lھ'.17P6{B""  L-8j -EϞȲkk6<~c.3VB$tta્8}?|(:Cn؉yI,I(*Ol {Q@ʊ`E!s"F$D1 QB]) pL)D(S'c=OBPvlي'™q9DC[ *Ѐ`nF*Pe) VBr݈ҜHWWPPgl۽kOy+Yߌ]0*<`\8gL@Pp%@CԊ[آRQH`*v\B27 U)C+3 <1 IDATФU jʨGBDH$F~hA~5cP#)_/^~cN@M-r^p:&[cU*vU(GSN7fBWQtlG"XҌUv|-4"㉈7c˖ܾ6-9]4?,קXO hp4wx8 V\(wW!Z8=*45 ] ;!텲Q-G9\`D**[!쨅Sd55֖'Ј OdvlІukо~56ohök6q7wJ\x^%7!Q  vV`"?{yo4H$^! Odk:lZ׊Mk[i]Wck:Fd>HF#+TٌW^p j1^P{: 4H JtE!DD\JdyˋA{4扼JHnoշdEHȠs"i+x%)93fM%ެ zS&/qZ/G$#2P1#pen_(bD(aѬ VeMĨRPݪpQX -K"ЈQ;;4}ܾCb6 Mvh4j؍ĨP)RSl/Oﳣj_6>eNj qqFB<IcD RDB$"st6) #+}$9c@H0V/-ҟsbTub+@i9EDmSP&U*4 !=dCJ׈D{e hB=c+pe=[___ Q4:Á9@UVevoPD;]%ln=[ */e!d@D," \0BْCwU6e(Np֣@|`]B-J].EcvBlO\.?.*V΋2R})ك%V&'2npV!OR$L!z"NOWiM8h+BOdŕM&4F#Cu"d `\݆Wϻ VYs?Hڎ*L忀ңe~׷{: mҦot>@ҐBsq3j$ׯ!kgr)~E}0l8h:DQV ?)!Dv\W? ff?}|p%`ܱa)w̅KB7R6Iysm 4"r5]b^Z1]ı+FVTjBh(pgWdJ8i '#vb@^Ǘ`1#U8QK[.S QE D=sCqvCo K =(x~K 9R@s2B#B;qYCX*̘aIWWA"D$D3#/n&n@Q"l ԩEDTc%fˋژfTsRɑU-q'!D8'qBHTB2Y}gw !ʱln4@; gۢO6%!q>z}8a_sXw8BHN{"|"// `5ǧsfj=vwq%=ڼu͟OLYE\^{ff`r]Fi$daD1'J7OY<^CR> 4FdΉb Q CбwyӾsXʸ$?qؖ<{>+PlF*PPUF'BBN@(ԉݻv`kzdTL; ~a omm>(KYTO_)QȟBIO 8RFI"D\ǣUh 9)D=\+ #?4FC(ԑTqѡMû8`00j&PWpGy/ޔ(FnJ%n,1+v`F hjk lG as.4-P<rB&BB\(bزE<6mlC[sBIi I]YR?7}yO۬eF lACE|@=VȢQo#S.Gʴ(w[(S/eKW)<Bt\;c6'7ohök綌{sc%)s+^/P7ҔSGG&Bc3lǻU.@Dlv p (oEcezB]\YH))Jl@PQg6 eJ9${`e僫՗NllIǨ ڐPȉ^kgI-BMzd8kΉT\FOdY~Rk0`Dc#AaD(ik*aBA6|Kp9sKPx$W)qRNw'!dpNiT߃oھ۱k.HpIxwxB0.s, `#֮Ŗyf̝q/RBH‰utGJP i-? P\/?CXޝK !ˈ dQ*#n{쵴Ȃ4W nwNƁ/ M.Gl-/]_RAxfhߋ/Z) _h$$m8'Rb]Kڽw+J]p#&`~4+fC؉"UЈT*{)/[8*'*+*Tjq*#a'fNHMRXH!4"Dt_ O?-3?}FE=ǜ1=q*;쏢+2Zz"UЈAE=]pT^0Tc$N'4>v jI*BhDd]*Jwq̩G)nSCEWbj(RE DzJ[*ѨBh&NIRlyMIsӠ"Fd{"(}MEV`a+n/3P0U`b{"*mv O,Oa*P ED)Gk=NHbl@m(nt󬍯_z5Nb RsKzO䀇?_'r^~ԏ=dDޏ!x5|T=W6=zTVpzBOdBiH ~>)| ! D=4 ~EoV;c,Y%KľB` 0AW8{0)..D' pV _b2l? !FHJ:N<;݋!Ȼ2ТTjvw!1 Ɛw"0t/(B@)$ef{9XM{΅3 ͛# Iiv[$U<|Ɏ# 9T$XHj.vm z"!|mv}ہ:mwWH $DTtDH}W7cEp>C1&>^ۅval8R?܂ZZ?3FYzRf4 SD)Q,*& % AU#BRW%$yqN:(-)E[$;!IB-$i]0kBRYEO@V 5ńl 09#t"P?0Dd!5F([>Vj+)uOĆʺz.G%]B-J[تOrUi% !Hx"N[~Dۯ]Dch!'Ή͸ cPVBH=\z:l[\u!V'2V8j$΅BʠZŗBH?0"2n?zV.!dp0՝|ͭOw\3' IFd0 ge3_?\t..t?tH\0i.Iy8G(>d uaNK~@H\Fd >M+@;so[_k pPpNr]*H6`y_ <ahqɍF*ql7hs\pN$ %pe1 hCapRh~@>Y+lh̆k"s"2cͺvh_MՆNԑ$G9\M-&QA_*qTN!væʊa\gEG+ !DzH$15j 7PGR~?p n{pl) z棶HR*] VInlTS/? d)^BC^ TD7JS7 υ^\11ⳣjQfqB:BZ( (h@kt(I-Fe$Z? i&VoʥAEM'җtGʌQ k^z"=@O \O^|^*'dɒ#6ԀjA%*ͬ/BHD,myOā=*5>/UP a*QW_A@8M#!=ڀhBy6,G=BpN$ǰ!|c0B=y"v\2Ȍq3;jxWB To$ЈpHɉ`!Јa !NR32Uf9 TߺDͺ'^>Q+B eJb݃%LYX4Ze`_eD+@#qBLYx!!mNjB0`LT/Z@.ɫ>G#rD|A6=w\?\?:&?!KW6PnTTe =Q#!, "WHO@(I=x^5xY=&!a(7CPKnnxZd/eL8ZcQP_F__G bm6z"DTdK;)ýp}Slۆ+ENp:Ӭ@lqh NrBP&T^uUZ&SkTʩa{Mˬy5-?UU o4ʊˆ_kS c 9 ΰza~]/:Jk Zi*D'-Pgڷ !\l.} kWE %;5bχ%K/+o$P\jT˾G"ħŭ#rY4C.QXDw֣q^nؾkk (wV"~gIaur|WRGVEhD艤Ku/~տ~]]ض 붇PtřyK9cu#^ncM x˭L1/P n&_BM?>|Po%<5ZWwچu5مv=?CǮ-:U RM,R\+I^ {xWh4(fuƑzB#ӊyPRE$>ߋ"|IKSTyB:(Z=-FOdpz"}M~Q'ȸ#0dhzv;jt5>; d|v]QR1NK %5v:nnO3nt;H3m[%!xR+nyQRY5 ȓͶJTo|%P TG=MְnLmVو֊x~ Ҿ-7y<YIDAT#e)(,7ׅ)`)Cb<5?gT_$[PjiF܆kg]BHV(@4";b;B a.^Q\aDc#BY}]@(J5!gݩ !}oD8=#.a~V0!D'貾}G /n_!yyOwBzÈpbȶUtHa.r#~`U& ,^BhDgWFki.3?A9 BDŽbQ#[^.˗z= _6$ Wp踱7`oCD`1#-e|kBH/z"K6,xfau3߂~{}*UꩣFRG-J'*$[.=APOP|B=LdtV Mv-Ł}ĂP~݀FTϷF! *p%]""{cϷIh&p&㧳ˁ'YNqQl%(?H_H|ԢVP͵ [h =dK Κ[}݁f BoFsƞҐ uLĂlv #BOwɖ ?`<3z$~zӃH" ۶kBK*Jn31 $U)=B'l3qcys"Oy(C w|e#.$\e]BWKC+e_g5V&|#lz"Drw'BsAluEX1o$.%tzPVЀVOgαnD ,O y^}G )މ.rTMũtH'|iJw!ܠ5bıTO$.-?!DODuN,Z*HXv΄Q 'BODRE= =!*='[h oծlQ~ A=(+s] SJ8Jt[Ho$ze襧í.ո 'BQ}"JIb2|6N'5hhP-0j NrVQ+z S0-NXeHo4~/j]p EHʺQ*Xe,T|jM"x4BPePZZ3L<pa>V=$a+f5 2+nXQG795@c=nB艐$TV)OQ$p*[(e)9xހRЊ#BOduQ*>8Q p`N=PUnߋZgiMU $L#:eֆn/%gFA+BO!ɞ(ԂOU(al;TNÑRʄ`|zOc [[Ti~)u7)l%Օx=RЊd.Or"Afu| 2@qqq̨i#ɗr?[%TB^G"UD1HDA(!]ػ+x:;BԀjV!I@cD;'B(B(ԩxؽkO+'{OGTS F-<ФTЬ#\+t[99OO)_#'^.jHBun"ڤ ħ,).s1҄Zy2;.4"PAxRסcYqk2<PYj}fv]kit#nwBm M҈'?cF!HJHiiB~٩x;cwi.hPFn*Q,8@D( =]eI-;ҮQċ hE&:2ʟE1% eN.(a:Hpw"67"D `3R׵1 kٴZT͎֏A=X*}fZWRYGT߼nS lODEl߾[ȞǦmh ~pW()(| a]Y9 G45_ײhPLL(:TV.n+BՂ %@`'' 9=mN権#!i0M ӫ#QaOQfKe1o)we Q>_Ϋ6$MU((hAFX+^ 6 hV&WIitYV{lJݦ#ٹ7} mضy=vf}(+K/ Z62r{ނБА5I*7[-rKbJ:eQh f+AE rGeY,!ھֵbV,izWckȮU^){7 aWhѠ4c^hKjwLHh([iZQ_*[9\VTʨʯZI̦O)+32^FP[I0"dCIEVb']97]Q)7SZW̄!&G%.FB<ܳ/dlHsYeK>nɛ$B;&l\vu(HΎfBTգ@q$Դ@pUU%)Ԣm (J;V (6B(P ^@]} !9/MU<3yƁU1! Aӹ^);!&YPVI'B\.6^hmHzK~9ic^UC5đ 6v)x׭7Z 7rX~!x!YU3)s<;@npBջ !!>Dr~_B! E!d>`Uąw?ϫB!وd2% @X  !IAN#lo#// `5ǧsDJ I1T W]^;%=S|BֈdEHJ aH$/f@Ԇ)$)[>IaPP_Qš2A˗Hs}6l~`,p@0",$2d.M#d ^xsH1D0a@ەsسcyBs޻|'ߺ؀4TUjT?Bʠ2$=r9@Y.)nCDBR␡Xi;^J杼k_c1al|,700 ;& S7Z;hh5,AJT !OТ,#JT ozFw&b[fT %\OTaD2:max΋9m '>ϊ}b@sD` * WmAв a*QO}a) B;yIz_]Ww?Z,a}f;o+;18|,۫WEGSjvvnq9/N59R/DQ$Ue^?/lS؋ImI}x&k!rRԴ@'^ K&)♲Rkeci)Zi__>|޹~E)7s*+rּvv' ɥ7scx@^Mg$2AԸ"3 hlEb&lD"ҍ?ze2DD[T:IENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-components-context-menu.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7002 Text-content-md5: 3ae0572c1750ac09f76e3efe17baa0ba Text-content-sha1: fff48e4a7234f675ea71468343b825624a1f822c Content-length: 7061 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRf sRGBbKGD pHYs  tIME 1^tEXtCommentCreated with GIMPWIDATxtT_7?$? Ǻ4HH;R*5FHfm t[]ݘu!Mw+i|]fs] QBӘ AH ?f{̝d{f31><}#|>co)b [3k_kpD;~X`fcI\ ap|%?(ic_1~h]WWC`j?;% 'M-ArC {U\Ip|x[hM !)UX% ɿ0 %Ha@ UV+UQ/v cp}x^.u_Zf%43Ϳ χKǑNoRb\b1k'0COO== 8=܊kx"3{5<.fڼIKw# TY gJXfN$a+!DcѠ}u+@26p4-&Q BUkEl2/zHNN%9y:IINk?f5a?n7e-f$g%uz3=R^hBbz>z3]@B]Ŗ}FZl87kmȇW%h߇Ay@f͸TOm9l#x%gcouN nTa;JBazN^-$Dv)OsK] B?6曂=m'KK}Rfq]O 讕LKD &(d%ؕ& #1n^-2EeʈuS(Ym5Qr3 ldFlR=& +B{-Y`1\g|zONvOO٧m\lX .؜ZtsmXPhS\4u&hT<6|l xFE+"Ý ӃɁ#>>Hv&~Lԙ,9qc3ɡr6fw<ŔP߶˳m[6U a*R^hŒMc^<Ή۱͔)ap,Yi߯ +cnf`8<\!-X$$# U\pulpBmrYsIn4}*g9tN] Hc2]MF(UX7C:c8#WH3Ù4c8#p9"L||ݿmW^-5VO;TwK/QO}҆JzgLl" P[*y;n^[on4..LQb wWOBߘ~_n )p̙6>ӭ*PG81Oq]5s'Y)ʚ)bb:;y-<{TƄbY(reǼ}(S@Ħ s5jQ~$(t7w 93iwyKY]_zgjdh #zP+Ri0mת,7ķcp#!fM|:+BƬ|7w sΟ#r,[+)P5M-PQG_$S ! %Bb1 I BGq51/hy9)|{|Lck)C.۠[_lZ[ &Yvv 2PŦ!r*E3* U& v5V [ùa?@H {^,*f?M7 \J.% tj?JYOIQF'-캌$I$'Itv] \6rqaŦZu2Uڐ'O~2@6 ,-_N[ARխVɑ ,&hľ/!BbÖe7S_6Qm4y멛h0O2k3[4ۗdw%+MF~!`81W Z7Ixo:9OR ['bn*w R^vP-,g8w`8   'n!/3X*n|x|w5iro޵cg 8׊CX= X;>ŷZYmN^|uȝf:+jVh^sΝbmw-iXj<}!瞼7;frUsdnVb 75|{3S9^{gl16xEm9[~7K2<|:o:+[!3qm9b,cc8L ﹁QMh3P7kYqt㑻op7sP C!6V*Ws~}|> ,+COjkjjbΜ9̟?$ip&c$ޥ<dž yn-dNB3.\Q2SES]tYThO} rD]ȏŜG٣3Z3) 5i2ʹKbDXƶ^ܢ&cqMUsC`5kcT[!=81pMg|~c^;mZ$uBG{K`8}>z{.\ƈDS1kQ5Oh[r͹,]]Yͪ~;TV m` 9ǔS٧2=\87HPe S1ÚF9N92ZVZc_0kȽN Rp5Stwe݁ktYw0[.m$81Og,;n ;r4,xPia5N>3N.a8!@+Y7ErsC]зo4d0.rDW\0ܘAPC2U6f.2Ůͣތ=Pe\ҕ~-Y]X"n PxO2KI}<ڏR,@'H2:ii8I2Mmg]-nsĆ<)x4Rfس|Y8moPUk(8q"x.r(sCC@CPi0#tKHƄzwO9l!{L.fS!ԿD*a"Aشp.eYPZ{)-e>|e#mq=u8Etcrbk?H#' ԅL^GaaG}χ-]JRLr\r6fw<ŔY&j@;)p77#ތ=+hC\䈮Ƅ( h| r]JqcpB* 02T B*0n NPGB& n3""jbV0܈BD@Օ99O[[MMM5|>N!z-rwT5zLkytJ7M<ûi[(n#7~0BN;Fq$%5x \k̝諺>x5v?06lW5;2 /@f&Wǒ3g)))#{29jzIHkii̟?sIM';V[`됝gW1QOy'ּb({$䐓CPf +w/q]pҎ2}jV}C+3^Dqi9?(GЏ]>^yW^Eo:Mn{$ q[UI"-ȇҟLBBNROe$3o-q'*7H5nqHbV_=?*/9G>k⍤Cjsgt3{jd1IHHH !!aNP<p'))iO#YLM%555^;_uv|vEqÃ;B~o`4 5'{xІඅiCG5;;HM-پ?wkжiӦ0p"j(Q8%I8ǫiwP^B>Mh?85kVBVfTxޅtYl|6zd?^*Ӄ2A+r#]=z-P5LWST[o|1_7ʹ>Q@K2,|s8|tLIZjIipm+I}){{(ZIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-components-context-menu1.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 4882 Text-content-md5: 293d93983b8949b1bc68613bc0456f8f Text-content-sha1: d23d4011ee12f177e88a5c63f37d22d81b6645e6 Content-length: 4941 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRTל6zsRGBbKGD pHYs  tIME5tEXtCommentCreated with GIMPWmIDATx}tSe?7m,H;s3D;K*cbWhYpIDFq@# &xCu$nafbW;0KEBI&MڴM۴}>o{~y~EQy~.ns h8sM khz흻2Vm[dK"\8{fqnFE+ ǰKljZZzA?x;;9W)4}!mFO_edWNu Ν]WV9LoJ_|ŋ+Hy}ͶߤMz AH%3O8R~1pڮ$[Dl) fܗc; b``K2VeSdtxL%Ж<ɉOQP.Cd LHlN@@rv3͍W'ii>AsS:y#M='2V`40]d$i#5ޯ=b#aqXKf=7Yqu}uhzI21oH uRXXLaX RT4 w$37zF>2+/aJY EƈފN>g=vJ`Msb\rW2NLa^5+7Uں)(u6뻗qP:(u[@MsN׍n>AөΎ@N:v|$ջ+{$Q-LNVE`5JL=x{nUԐfTe&Md=TꏨN'o dZ6~"%(tvvv۶ɽ p&zq{_vDkFwwaPSp˱J3'h:鸏~™\h=ۯv.h9׏ + _[VQSC_1:./X>9^NYfE% $ȼi7xW@~zoշN )N|U7*F}Nz )jTۃ&MUd [f;[BBM\r`ـYɈ +^{K13#/OԿN/ 0X:``DKA99G[*;p"}*)~.H :fz# 0՛wtqw[~tIzAz!S3" $٠g!%u'֝ d3퐢E3Ț\?1OP(ㅥ^Oiudيl.uk'8CHzPR$)v*V }o{dž+&3t/~wppK[o9va" Ϗ@lWm9~Q*;ˑ(;kw7cyO&^gԤ9Tl1>p53$DlQr%lQ1޿N{Zt$s]-WK8clޱiϞ{M  GmaQ\<5Cl=ʋ+93/^]E6~'ܩh_gnw'EBk~.ı,P`' h!%@ )BA._H88.w|6]0ON^?f_]T%ȩ/ymz]f4K2(KŪRl&F3޹+i5ϔCJGGD>l[_ nj^\MMCK I?*7@3@ 99@qKFpmܡÛO/E trWjPUS 4P w,@V~vH>rϟ9BEEv^ϡ3g<[b>3!ֹl߱O%Wcz!h\U{ `3z~ǦonD~A>V9Cq 9T,}zȥͤ}CD"]u.IAt eI&t`1vBt(:Z/䌘>|߂.CON^!1Hn9AH( !I!.Cx˒8w?irIrB$I$9#^% .%gNX zc׎!|AB璓9n t$#!dlJJJ(++ALtyS(f  > E?1ɔ9pSd+l*‡ˁ<;spbFzy7"cؾc1L aKz-[(I:]h*/},5!C 5b8/7aIL;Dv][7IL8#GOyd~3jEs/QTRhi=ϸ_VRm< akwH$)#;L:N^}a5[!%ı= ]frSb߲cOl34rIΘq0?>+s늒FڔI\HACJ p)lz-p2VWGZfou|p*t#P ӇM;K8bb]o|;s{/ &KMQq)EEc!Ek!%zsL omZoŇ|-5UrR'C RJ/Ί/:~hx;p>$:dhαpibݜ zsH2eM!%#֛rbPw(j|mn?mw7XuH8}hwHFZYB_ffڟ 'B됲ϳƿ!#ۡ-^ wSǟE")Z3-¿Duc {L'[f&K;\b +H.HCez#bIzbSكXl6T+=T}Az ?0Hgŭ } ]. d~fIBqyvo\t]B2'MgOkgp;1Ǖgv&#H!BQb* [zX_o”2](pk*5QP+z At1JU)bPY t0ve46\oœW2U{bVf鯌:|,}X}rc=C#1Z%Y+zѡeK~띬ZMD&p1CND.E笧ŋ]@UD*YPodARXipwO+xe;n ;ƭF*lV Ux4ԛ.V *19MrmiFm2kqwɳFnGӆƸʉ ^&g`PFWŭ)lm~f} ĞiYFo&Kق'$o.rUxv +M_[V1kkT>!~LJ*ZA'9D=LFz:}cŭ˩jr5Lo5PWmT 䌏8+&v?z+T.@N3_Pe=X}*ZjH5I`n 2`[2|Nbrԓ:[4)JQ8}T|%B87*vR땖SF< as,=kR*+Y2NLqٚ6uz성c^X=XϺ5M^ 3Vo-5؄_II[k @fk֞5)i[k @FUJ֤VlJcvɽ F>َ%gxQZZJqqI)D*od쉘1E_~HRԢpL@N$="QǵҊ'&(^l'@9;xTqS?\S)՛D"*T)׃NA}4'S{𮚕TC ?'?.'|_[I~VԄ&UNLudXvIƕ:X.+o7Z֨@+hgU%H[[P|k5PF&zg}b97N&zh&n{ ~ E7nE}OVTwBx;Rm8TaOqS4y.$;1|k&풏ގ(Pp_[y7h(Y^p䖖RZʷ{C;xw-٫N6QBLBQQ999HzdՊ?u&禺n^ lS岅*D"U:EecTGX;VUAߚͽ okn#ai 3ʘPV#x`Ѽe˘7vzGx`ѯ^^ ޾uw+);^|~yyy1~P`0HGG`*2I%77AF' dbLeԴbIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-components-filtered-view.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 7793 Text-content-md5: 5ea0b9d4c8dff9f1022e3d03acb42e32 Text-content-sha1: 1575d6efd37c4d508682b97cd080e3150afcc203 Content-length: 7852 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDR7sRGBbKGD pHYs  tIME .%M tEXtCommentCreated with GIMPWIDATx}xT;ڷUD]!($cM&*’ZXԕu]X5B TжЌ !1/9g̙d\\̜99L}g2Kjl8!@ΆvFnOb2nCo~/*=j˿鰀C&J>ov{:_ ^˂l @8|otBT}mozYH"9y:Ĩq9Eu՛?=?Dt(!&UC!.O^3Y'v[QWGPۆ?H:{?m-u%b=QW\;yWΕ$m$Bq]޵Cs/XV8DZq}ja=zpӣ:QG}w];|[m^״}Tp$IRfv.!v16[=}DIJ f=SO?.=piA9pH$AsVOޗپ:}㒌@XDz#lnjї$LkL*H^ O_I ъ ,л{LgBVE}kc#$/'f=iϞLH|GQA=:y)xB.rF'/oޞUżlMJOUk.3_mWbqලk܎GZՃU mjۙ~ ;G\>L}<}>9>pyw:֤FekG]8A*)%ސNE}(:=mqF=P:7w\[~cN*˾#stƳ{aVk$Mhƌ[y~6,UR5@k@Tݺmͷ-]%Wc7-m_LmLUy4Ỷuqc[XeuÆ/[᣺lmɱ rvk$Is]GZvMxO_Ҝ!z&eW:qfe^;lbxh*y{Fi[3Eߨu%iwtp_5۹/a] Kٍ%z/pۨ˵o_~]9xԩM_)lvkQk&o=gjg~^,e=e2 [{wܧ\?</qC4;lĩ~6G DQ~ cɭ;F|IJ+8Ѥ`/{MD<`xWAiѨSk+bPPTћ ?5MsG=s7r2䦑j=P6bytŖm E5Ʃ/ Hڎkq]W ҏ;!KP/L*uqcMz_]쳫b:+ײ<fdjG&B&%%ٕ?Ԛy߃rz5=}y~Yj]:d~yBY[+;/hu=BݲrXT]5ſI?`|}|wL^|w0-_p~喭(A9=:(}=¾j#?-8u7n&|vmK`rur:ْ#{Q`1{p&80Ԏm&bδϛ[u~; =Ͻ훰vA 7%#=1,t(9. Ao,x ݉K\~ ڊhzf)9]Rڙxs4Iڵj4I`9>S4i_$kg&4f6w*µR#jSڇNfБkj)CDn}<' L.f0oZ0Ԇ3vƵmg1)>,ڸV5)[sNk46oR.N99-y~@?izg59۟Үa57ohd<LCe_mg2gb^f|};YxyRԷNkFlkwCǦDb } MetWI :Xz]ȵR%ZSWk_g>q3O֍L  AE9-Ӳ'E0˹S3wjb`` d6WW[Ћܐ)J@/K\)& LIIJ2]rUV뿽ִxmIr|\jy> rJUT0URN&rq( "ByRy/!j)#?>UEJ3N)0hH-uiQ]fdGySL"tP;WD"e5.D Y3JbqNBj*t4D{ m#BUz -*̊|j' qqaDtޅ)& 3~Oo@/rF,d 6/+! n]{#4ilunuøqLAѣ9˔{2]{="^GӦфAlOQQ뿽ִxm"ɮ-1/WRək^*,SnzGo]&:/ $n$%%n}ZMk=M-Qa+U*)Xu 9˴.G9^'Y$TcXFo>u  WGgZD}^#98/ NnQKKZZ#fm?6VRsi;Vk{Dǎ ^7^6Vޘ2?¹(ZZgՕjFvDžNy8U^A͵*I+RFlNڰ۽KJ>s} 9 9.'_UE(/pV^%䴵/R +FQ5*Z^ Wθ"~GjG"-ɹBvP>ZY{2ÚbrC:|7b8gn2r?>]~6-υRo~_Vztt_b2Md)xiEʘ2EbcIXmrJ5|,yS!9#h$r ^ $ˇK=i##J竾bt v4tږ:HZ" 829Ypq C\Ч:q3K=rC|b\Gd(U_ eT:QɴTVG 6-t)7\#Nbl1ۆxbW^o޴9@@vq}P?XG'*._^?uE.DcM-T=gYQ*%%M"- F8OY!.|k15c\0lo?di;q!{}b%eNPԫ4N{cBA\;2޾WҗmBܺcW$F__ph&+o:'Td<ڨ&?!ZXz*-)yR%wOj7"I9,-6-? ϠN땪TǯrvlgBH nHZbIWX׿= p[m(WeaqIx(M)We* ]I Z_0\t]7/+l[˝sǖ@X}Y;}>-O"/K.nS= ,~@@Hb F@@tA=P03tuQ #>S0(ҺQbEƀNbEdo( <;vi{ E"*>7=. DTp61)(BR'V!j4=p Xw@vQ(Z@ >Q03P@oQ0A>Mpzl"D $v`P]_(9̅nR wQȺOh7 @E @m aSL@@0kF A>AP0(J[ =ЃB`%  qA8 ]B?zh@P0(A(C=wA t0~`P' `P P@ע`PU0q(+Q0( څost]@K|7b]3`t :bꬂC2#>W0(:-11-2 DA1kTchc: (;bêpN큂BaG)_*˥zshe-R  s"R',U^AN."qSL}`PuD*P=uE7;y(kVtn(ԜXۥ@@@$jE}`:"ΉTP(B?Aiiڒvv)Pu JB<9RBYqi+vcqRV" }:#ڋA}P@@ @@ @@ @@ @@ @@ @@ @@@@ @@ @@ @@ @@ @@ @@ @@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ :|흟3##IRRca/@d[IENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/factory-components-view.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 18221 Text-content-md5: b78599ded9e7ee03dd37c8598ac81d47 Text-content-sha1: a404129a78eb444558002757e0bc117d52c3f8b1 Content-length: 18280 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRjosRGBbKGD pHYs  tIME ,jtEXtCommentCreated with GIMPW IDATxyxչ H;!l1(aMH@Y,L԰z RBp6e)oA.p .nH!P֖`FN ,ޤ4#͌Fd~(s?eca C[dĖmcvֹ* hG++uRe fV;AM$k6v` w^S*P䚫q4߿Mu1Qrά띝2 %wa_/Y>q1Y^\?\i=زu0A?v$@Y ikX`/"ᩫwJi%fJFE,P E^Lj 9 z'A}Zn}m`i $c^}5:OӋ~6Pq "l׿kw1FY_?p[_oɧwɘsp$;SJ\x۟^ #<bvT+xg@:e8HA @7H\7.ۏB'q샦;QCP!igwcӷ8ᴳ[1`knʱڍS n]NhØCڏ>9 Gm{_GDD_=1N:I~\=IxUX8F,}F̞: ? C=O:wp$lSX[ NC(Un'*!ᖎ8EݎQ~;\ESߏ/7,/Vo뮟N62k{8}8nz5X~={@b?2  -Um:Lf8Suгm$?Wra߃jpʳyxOclywco+u!,VSx?: .Łx8&4[x~_ݖx,0pܕ0k[v ??'In'Y&:> +yΧ8m \^Ǟ6nQ'ڱ}?1޵龷힬{=?vo,"ko0\x9\3%sa6uPD}e+R~w>;˓ g~Cn=#z`f ş+HwnC屧co2`PS箼; g\h,~Ƶa΀ˋ;G4ҋ' "[oq ҷn!IRj8 zb$!>gzQ#z!\5mU~Vw*י-9CB!նNi'pf}~xbeɘn;aI9 W}~n ?5Sx9''盡~CtP#dZ51ix/Yq.q.R gj wpL, .a *7Yc~_ѭ_K=-8>T ىC: ّTi?YqEO98`$9#Q~{통͹'^x^L0^ִ7嵻*띝8ZgJzÌs;Rο vEȦopS,' $*^}`(dL9y}i& 2`])4u"d荟{~2eAF m4 EH? wc. 3pR,"B)⸃3s- ~A3 BRQb)LJÂ~݇cB2,b>u!!o~M2fB`A!B! B! B,H)у.Li|vŽ='9T[ s&퇉G'1'u6cQJNju=}#n<%ΟEb;tO;Ӝ{wwT_ !,ya6XsPB%Nw _q#E}.NyQ}iTg3Mzi7N33k ^FTmO^3BLn%q, ݌h>&v:?<%!|>ęYdl|xن7> F BYBafA!<` `A!Btwv!]iK.[BJgy"`A!B! B! B,!0XB! B,!0XBa `A!B! B!DILdB0XB)-8 E!B! B!@F?`ߢ!IRcㆯ3C/baB8 U*D"ᅿހ\`W-[hQ{hBFsUKxg*O=0̞e5UP8%PqàAYR;Wwל0 $ ;cA#WZlbE1G ᮓb"}Y7vIN,EDAؚQ9} ?t!I$IB>Y~H$_~eИYR>bpp3~l-]Q9}bC]VBH9[Wk.2ύ7*,8Zh[1yG ZrT8"b:~4ˌëʨRAs_DE8u N}:[_Hlk$n'F풶F+]k}vbfAH~E$2qvǸqO^{O@ÏZ7⎧?qYxϕOg?b*ܰg!_vo`W5}{u'湭h b:uU@],@p'2roDUslMv!&~(:I2E8?qhKKW$[ރ6@

=e0Qoe9x+P.h+_kvYa06oވMĆ=?`bXK7UЩaCXD&y6Icύ3 0QP' N4!v}uPzp;ŖayI7̂39ԣH}TvƏOXz1=Adk lMZ ~1䃣K|y[zvKj|>X[ ]:*EBKǓt2<~ 6>Юbζᬩ^\ eGC L3t˳%/giUNI-Yrһ~S?Nr4SIYy$&FS6v ~{8&DxaiBhY>I)5DG}7 <)t.XOTmqEYQfAHDqfQ//)g,o|%"dsB3 B! ,#?"{JN~D!3bȭ(oAQVPUkHѵ ! àGqG< L6֫W@hu*& S #]iF#Q D# z)ΞuFəIv˖/A ܀Y]tR!3ʛ!E,A~1Ǧ)^ʣ+1)1[/e ڎުi3-IiE73f*2Q7Bx+ÐICLHu4ƀ4FzCoFLڕg L&Cʹo/RGA*k%Ko;b#TIړT*df:B ,A~(R@Ȉ2\(?"2#B!9B)\ `\NQ ! we=txG!2Xd{;e3ף0!we ID$IkBH_2JD$z~~H J_.@x!{g/`cpľ\Xe_G̰F[Mlc} GŸQ%R"Q, Y @mcV}eyR0ΠFHBJ<0c+ "@+г+7@݌H@"%`HBYe3}Yp̺$Tp$?~0"apPh!0^Yp?"0ɰJ@D!%Yd‘U`GVCe %"R"f= n+[+W>w5f6"]p"~1UOg2=^ .[e2 5E'?%oӮƗx4BʎQ+?eY<~$H`NV@~ @!Jz6-7L!9> B! BJzbOÆQ R̢P<^=EIW)'<3<"Vٌ7iG’O-XG!d(df10dK?^Dz=ث<o`L#b}/ ;"<"!DKxg*O=0̞e}ذyITccZHH*?X*xTBHd,_]sU`7h{ ɾ }9`z n vcmꁩD8N6Ȍ$BH(k"#B8<[~oq KpTL1O8}]qҡqu"vI<NSuȝhնQD)`1k@mwmϮ^$"k;ޢ7+Ə؎pGcqrި8dV/j'bଆDFe1D8$ T#]ID<7:y-ZRE$2qvǸq0n?{=})H3るܸoEU'Z@ Z=@ܩwA<&H ^J14H\> Ns[v1XBJ/ؼy#6mZka}z0481'xnCz!+c zPkS'v#&cgntttA E@첢 @t}ke4X()0*0#F*aErfbkF IDATl47u:!b7ظkVwJl\׃o6-ߘ.cckCp.\t ޕ.`V _|6פJюYڂUj8m]֎DmC$AjѦ"R,] kBذ: kD]{טÎ; 1شش>{'I.pݩ}IVhh@Y AT Ɖj0J }AlEFhC!PYzaxUv?I>֌kJBH`V~TsC"6nt}MᆦU\,XG,c!0 ̢!2*Gjo \`(B,LP \uC=ב=E$"!,K! 8eY)7"0j1!%FIjUG{ <40p["t~9"0X=U\HR2ʡ%ތS<ƝWp:$ KL-! *H)n?߰9:a8,ᮿ,goe\H )h|ryco$P,"%ŒHɰ\I'3F o4]n%ImR3(EJ2)!െϟሄp BӇHʎ^zϪG1)S4ע,/UD!eY(EJ2);c=w?NڱVIPtz#3*zĴ~+  DfhK*%?R~R +v>*kȌ(yL!hEzB-RHI3XdzP kG+b:"Q g({Baf)-x&c,~"tc8}†:P[^/BңB*v# mYaYȅHIp\ %lJ#@=%.Wx"z}B)k%4ڔ[BTp E}gԂER.<!EOYˏFl feWmUgpCߕ Daf1Z\rwŧ-cB)%ƔG!)ʳ̻/G!E1;[Fo{q9'e߿wv"0Xcfї^_;gzز_;g`QZ|7<!%G{g'sN0Nto܁O<!,FKf=ɻ+dMϩ WLCnQD3\7!cUᷭocc4ur#. hڢd)-oEc 9:ODHpQiEGWti V)-XlɝzdwGGU͊m۽ɞb>qCBF"&? !E$D"a؎ߥlCK~teuNu{L;>,j|ņ\8*i "l1b7hBIU"$3%[-<6t=mEw[.z-貢 ЍUSV BƇf[l̉wuUՙ"We)GkW[~o~H5 URT,ORdYaC'@'Z. m U@@[ P g  Zaf1z2hh`&JvY{m68TqȩFUuƉ]DyQS=эSZRBFg(UQ2ZA!9EWTB+uH-2BaE x&64jmA:g+hjBH@tK9R4jT& NQB0]"b fS@YzQRpa (ӿ* 0X5|7ġ'BH)BQE! /pBH ܣ_:G-!I{ }b =rOղn;`gewP"%%c 0~N6`V-'JhzÙሔTCD;anc1n ,;dtʇN 4kkE1-XLAF9yuSO^)s/d( Jb1-RR2$@m{O, 4Tˆa*&kj<34ksFa*ZCpvu0XvfEJL"6`oal^+BR ETV!9 ,ptfwv,:/O8@8dLG4'}RKX|NYQ1ӯ4HԤ#I׫#R eU0(겔"Qf"_:_ہv,^^>r|n'9)}' !C]3t)!@ !yn+g.ySn@^.LKLI Y!,HiӦh&a}z048 -!{Y9:pΥZlνzlw܅b.=T~:$%L{0l4^ᆵ>w!,: ,H+\S Ntt;?V4.] FZʌŨ%'g & ح_/Aj'jڢO.K)RHi0Q]޸I8Z|8h l8h ?wo|Ҋ1(IZ)dv":&՞L3#"EiulX†!,xkWJf)v1{cc""I G$5~WsD{q ,zBhh@YUBvcA('"A#_M4QgcCp3S$V)W]af1ʊwūhD':V/w7-R ]{>ƖX,y1c`~X g;ShDGr(TM* vBuRNRt{B\ZP9=ѡ GGr& 8!S/1B5I+ 4˭p[ϕ; ۿ=+3&tϹ'Oyx F{ʖ3rցug]x6!85"WORf% bgF 0XdC)CPOʲWn[#`v/*BYaSW=_aغu+$ p)xxdB,5Hwcq0 aFl\7LG!d(JX&CQ6܆cOᴯ "0Xl &,?Qx6x_ۧb⳯7jXlN݀{ЇP0ӥ!1wawf&>BNY\ȅHa`o,y^hB#TÉD|N‰j{( "E ~~׿M|X>)Хz'Ae>ZsE' bWt^(~ I)E@!F"0Ȇ 7ϼ"e}<*y.wzc|J+:k^GVWg$"a > \_V#oB 򣲛*duEPbufym>)|BY|E!) _._/Z-?'bLO$CC/5܉3Q@!,ij_ow R`QLE_8'-NoB2(GC{ 6v: 7e,w ^  R`Q,¢M6Eϻ/>G{ܞXqq1aj~:ҕÛ!f+a73uwaw}زlL_΄y`Qȝw ;&=vƄq߫Ճl>u5EEGCc ~@DC!B^v!dd(k@TX{_V|Jرc6,`}LܕFŭX C!b8_L?ZPx-QO-t*HumuKYClXh٢3z!

_Ł'K CiN"XH4$KC'!E!E^݁{yp2z#%*zmښ '2,%,)Z"NhK!3я·ݎ !(YDE*?R/8 VKZF#g\>8*,ȫzm.{,[P =\dnmUYS 򭷾:z ,N+!"o>(bׂZ BrYŨuܱ5JVA)(bYB!%,!0XP`CBE^3zʙ $tgBȓ_CRX48N 12`Z kf=I2,C|X0gVL!'h9yd^z@C=G)Q<3W\Ճ22ȝo}@#ev5x '؂`Mb@#+-}'7@QT+gWg;G\dG6vvvȕOYlޗ]BhvGnXLnt:5-W%++5F,pfe,(J0l/E'vJ8y,PT=l.CK XJg .!ƍEEEO^{O@ÏJ*oOܣoş+;2yh zX [s"b'Z;<[I/7<1yފ.ΪCNKnۦnOnt=hjhhjh\o{AIkL*~(j@SMupْ^Qnb 湭ob $P b]9z6Eda`CXLQ=֮ܞP NfObb'j9a+ZkdM`MQnB%h]>Ig0XCP\rW0jS>O^o8|A2!֎Vtt3]pRmO=Id&e GLQ'eȶ@$Ajf;!  a־0\ 6C۷`Gc[ëBY u>]D^/zR%7<Sr}-S<H~29"AG,1b -4Bq(BrwEE[{K/G4l퓗-}ᎋ>3'*Kb 6شFmTXRdCcH-JB/1 =9 Κͬ+vߋI<U妑9 e$J& ĚB,M1$aPpEG!Eg%R`A!"-B,a(Ba`fA! ,(?"|1҂# !!(^٢A]ʂ(T"zG~[&A*B&X2(~,JzPIW^%RL`Q#ݲGX%Q*%ɋ҉ dCHl=Y(T2_!3X(PD)`Q#s~'>uO(g"%BȰ(J-oQ-/ʁH2l(?"2#B!9B)\ `NQN! i0!0X0 fBHqAQ"ʏ bV~d:QZDHLEQ,(?P~"BH  ʏ2e!RP [Ci!d ʏ ERe ?JCi!0P~ e!R(?"2#B!9B)\ `NQN! i0!0X0 fBHqAQH'Gʗ4ehIH)(Z!(v)["!XȰHOd !JhRv)["gLGFeIHF"ҹ RDE(7QJfT3cؤ.eK|i'ғ#e$-Gꡱ׋@^K!$ G9'Y*$K9-#iQB~dI,![.teK#B)k(?"38,! B! i`CB3 Ba(lfA!B̢GR&GiȒ!MʹrJ(R"̃Pd#rrA("О +EJ0X(~TGlCk(Iө|6(5xHKYnWlZْyrT)ѐ׫2 CzEJ0XH/א.{ mhg/ՖH%]GK#a Y͙ ' sDK+RnO)R""> UD#BScI |1s dDhErX+TFZBxGwa  zTB, )wҀ*i4֨|>$[HD꺦(""a2):V'B!4H:ZBLeI)PNT뚶~JaHGYʏp#2MbB/XP~da }dI@HsTM14fB2)VD) (?Bbh(+)EHg.MYR-Iޣn2ypIDAT9 6X*,pBD)(?*4/, Uk2P~TQB~̇,![ଳ鰡QȆ (?"R`) !"-" f`Q̂#B).(?"2rEQɏMO !TPdJI@B(X(&%(Y&H ^P e7zm"BHb)DBd-h^-A{Ԑ&Q k^)*"q(*Ȍ(%d QgvUN"Wr!,J~%%2+4JWp?B>JLB,rYXQʏR:QQr{/B+-"BHn)Q~+4eBI%5"s/nRPP!9#B)c(?"38,! B! i`CB3 Ba(lfA!3b f3sSFr_*6 ?,wTJlj־(דv &FO%M +,L@ gD3ua#lQꭵnIJMI]Nxu>'a 18lW|Ozmn4765K(]"S(?9YH:j~&g4Il<~yenXF zUe.Z>h6SFq#_fj64OFǑwf]B{#S#)l V; )>6Ϥuj'jڢgfL{V;UQ>Ϥ +]Z׆G]t훍0XhAQ)dC$AjѦ.)E̔1kI4|JHy ʏHGbg+:ml$T $V]o~%dng;xToP H:nWFaVe7TDwvhG/WX/Jʏ!BHଳB ,!0XSBEZ8 E! ,!GR\rB)lf1GLS89/8B)X%,?\h [љn㓼dMaFHl[:9+QDSR_2p5jL)(NhdN$ qr8BHhcBؓN#v#y4tFN '#}jȏ aOFR>3e#42#u2+"| ]ٹ$\IJҚbB,˨3 ᐭ$KPpY 5oF !,)/QTؙ}ŷ#GB*\FƤ&pdC##^Xj!5ܛR\~-؛+$rfg6[@!J(?"`A!B! B!~ {\B!,! B! B,!cIB!,!dY B!DgA!h۸7! IENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/ngrelc.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 671 Text-content-md5: 37ba2c756850a83f7ed05f59dad86f9b Text-content-sha1: 02dad2e249090c188f78dfafe28525c89aaa8bf3 Content-length: 730 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRU`PLTE÷{{{fffWWWKKK@@@ @bKGD  pHYsHHFk>IDATXUے r2?v S5SU J31111сHyO.OwAzN:F=x^.ў/q1f Nqg{2eX9h^P|_mс /PRmݟ/V98qT!?uK_~,;.ĉZL՟S+Ee0`)2vެ-|_(Ij8u ̎J^јh\/O7H:RE":%kxWf]眞=HA5W-=ȥ>͟&B19ic7pKp[/;Q9{?V@S<1'M _TS߿Z ip_g+jIT@&\ 9z_}ӧ?+0K"2AIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/ngrelr.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 619 Text-content-md5: e9a737bce34eaf1efe13a911fed98cf4 Text-content-sha1: 3b382ecccfce2baeb788d2fce64c3fc44c8fa5dc Content-length: 678 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRU`PLTE÷{{{fffWWWKKK@@@ @bKGD  pHYsHHFk>IDATXT] TcL{@W:7L_})lkD"."Ah,ٯyXg?࿷G?P lΘVކn9Ȼsw@/W{l1;!f@ sv:`G/N8˘i/Oq%wtdOTjM<6} 2pJy/&Gz&*J(rd)/g84{O7ȱ(.1 R@62W>[*'UAKU"]W) _+2RIO2_<R}|G8kDn6;2Jc^ #S2VzvFH9 ?2m2t?/xIENDB` Node-path: plugins/org.eclipse.egf.engine.doc/html/images/ngrelt.png Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 585 Text-content-md5: 17b13c1fd19b6774cabaa3d7c68f6d5a Text-content-sha1: 4ff68e6e05b88b2cfa0be5139f35e9e26035715e Content-length: 644 K 13 svn:mime-type V 24 application/octet-stream PROPS-END PNG  IHDRU`PLTE÷{{{fffWWWKKK@@@ @bKGD  pHYsHHFk>IDATXT۶ T3˝({j_Z=5C(H'Ɠᦏ p᷑m'&- T_U@/r>\AA)QSMp.I8~>$I#]ӧ,>FrhfU[~X̖K>EOT>'H—þ)+k?0Y?S"h'Ÿ,h@mO?X/&B|)BƋ4_ >k?0Y?S"h'Ÿ,h@mO?X/&B|)BƋ4_ >k?0Y?S"h'Ÿ,h@mO?X/&B|)BƋ4_ >k?0Y?S"h'Ÿ,h@m,"Y{lgGB|)BƋ4ᨿ{IN-Ce %F̺rU[~L#D[F-J-23-JTP:xy-%hԿ͋מb0ɃtTP*1+4.&Kx:!X#&-hxWW4+6>XhiwPсҏD6y1*b \HܾR||ͥ\gϲ=w­S¾f<~T_ >k?0Y?S"h'Ÿ,h@mO?X/&B|)BƋ4_ >k?0Y?S"h'Ÿ,h@mO?X/&B|)BƋ4_ >k?0Y?S"h'Ÿ,h@mO?X/&B|)BƋ4_ >k?0Y?S"h'Ÿ,h@mO?X/&B|)BƋ4_ >k?0Y?S"h'Ÿ,h@)4nDe=) `D['ӡh*.cEe>cRxiNbD4 (8(^Юvq4~_|[D;,g~;-GEs,-Ӱ~Dz/%'#23{u ( ( ( ( ( ( ( (z߇,΢fyvQ^Ow4WW:Ɠٮm>Ky0k2 8\=0: Uд!U.PٮZ/ݎD1 @o kȖO6}6u.U}cJ]r9K=O901(X5[+a<3$)&$mX+FYjY[K6Rv 'P[Ey?6%C#Xo u&nM`Ӣ{k;įܲ`A}z;+Fumc!wd $d-ZKt#IubBId~Q\l׈Hң^Ww*$y}"kVkӭle[2R2 zM>5lI'mmo- ,v9$dCڧf{XI,ڼ, ߒH۴x)n|Y,$URw]e, R;ZkGnmofuSOfEo4mCd$$=> :L}ij%r2[ GÇdYBt [9$źȹiᷰiKPy88c P;+ޗoc y}v5|$Y<)"橧HDx_kTE}ziY-P\H%#(G Q^}/5 o[jvviv@^đc&'5$:riO>i%]Fr;eI=1r;+Υ񾯲n-`xs%cz0sSx\"Kk+lgS_]瘒',S*r )\xGHy^YdI1*2I<[TQ@Q@Q@ky?hݞ`ݟLuZh_oZqާ-;1wL ϖ,HV%ݱնk:y!W) ضHB&Alp6l=ID\!E(T;?h,*,4MZY廂.`aih۽2Ytq5KHR(,n}rmz*GU rz I?2i47;(9/oKi/CoVE*q'n9ǥub36MJBΛ$0úLN;y)tO4sxdCё^qiCIK]<C 2GFNFd>>[X[Y[,H^23="<>] 񧷹hOmWzWO@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@S-. ;sg}l0;."+ ?},jh1菣šh| rNO9>RlYx[?'}__4)jѵ;o-] FlXGcZt.5qbxdݽ_3fhƏ>}fE |M=_ ΄6Ps6l#`$]M|~bqղjo>},?5Mn[w ~DeBD3IcOObm[H/R7!ú~>},џ7?>kbz"9C}X1Iz'4yE6J%QG ϽNڙAi)?кe z41:Uݽ77mHFHמW"~ ݒim4G$clU&I?}%is N [g[&W,f^[s"z-3E-+-ѼbH&#exi7K}//G4B{ VfZ6p=vu8z|i[<8|0ZM>K4i7K}/΂MlH5"KwXʆv$ 5-![AlD~XPqϤM>K4s/SiȤ`Ď@|ul> ɾt+O+rT@@/&I?}%hAbnEؖط&yz{Ƿa񍣁qsw^Qyl#bݱ)T uM>K4i7K}/̂Edl!BTYZk!bD-?x@\vp95/GϤ,U iiz{٫ZYHǽG\9=ORsi5/ ^_ZyY7r` /Gv_^V\Y>"K9..*9rG|]Qemx3%Iߝ۲ANxҷí4S,H!Ђ?:9;2/ALO6!mv-Ȓ+7>`m<;A+dɄ+b?}" ]K1qDg64sXccelqT I?Yaawzg5*LiI°(AbS7/Gn?_?ƝETL/Gg.*g>?}p:h,vwyRϮz{Xd%xi#TCڣL/I_?ƋWOЭ4ٮt\=iB8 (l'#nt1snf?bO*I_NuV* }J{cFqY2Jڴ%I^(H㲂=:MKN~iRAbgO1$ϱ椖PR\Uo??G:"pX`2ۛu!yA*ϤM>K4sn"G ic"ARU&I?}%hAbCI_Ə99Ь_T֒9$~RbryrvfXuD$~ ]K4sXӢ?:HWmyLPQE@QEQEQEQEQEQEqZ*m1 O u 5IKF@%xtvsjWH\r(a U_]Ԣv n\)+% e22y84$YI<)GȖK[\?Ÿ#~'n M߅nuhMе cU0ݜ ml:JK>7)V\i}jf?e>5fE63jHsgU^iyKgI#K+|0=4Z]V(6ʬ1e 6Ϻ bFe8֏V/e>"nVXȬ;~t&Te%ַ-?R}}D$qzSI 3WyQRcٞ>} qKoh_(ϲH?J K4Uo/gϤ K4Uo/gϤ K4Uo/gϤ K4Uo/gϤ K4Uo/gϤ K5RE):'/gϤN)VXZOW@K`g<jż$p;~r01­gϤ>} g(BRRM,@9>L7۷o޻s/gϤ{QV3,n c\ 4حn隘iYHU-b%" 2>bqSvj:ғozD<9(7U8 #>٪Ȟ#Kcy6y7nrI\m-fLm86r'[/x.&и'r$E$ ˷f3գaG4H?ģL/ O!H8aUoJqgm")x;py.fƙSZXT Pfm#*yM0&H׆SU+}cOKx. J* NF b9)# S-5kۘ9(=pGhak|Чl#t}4V|5N(|<1<ۂ$Ȋm``FGRp&/(bQ"ܾ)L_?Q<E;r7/1(G*-99, c#2֭y1(GՊa" u-ӂMA-tt$߰&/(bQ"QN\JNCǦO'M1mQ"386r@;n/y1(TIU,nMY_4/gVsdZ!?E\,TNLEV ( ( ( ( ( (9"T爅6U`AQɠZANv朖$ '!@92; 3Lq,_v/RqM] v[ hRyed=zX{ŴY9}a.HҶ>}{E}\wg.Ӝ:LTT@(?^Ձۋ]:gBp6  pxtk{E}>r 0kg eR۷mR\bp9'=@m#I5`?B|tqk\/Q?_أ'n>m])m 0}NthHgM'*w>\/Q?_أِ-.L6"ݻBUU|2C6K{Dgb]7n X`>c[k{E}>o=.glY56\ϬߚU?_أv/RAvglY5q>~kV_أv/QȂq>~kQ}fhG_أٝ}feZ?kbhG" ;eFˏ_*~o=kbDfvˏ_*7Uh{E}>o=.7U.?o]}{E}9].?o6\ϬߚU(]r 3\ϬߚTlY5Gv/Q(AvglY5q>~kV_أv/QȂq>~kQ}fhG_أٚLA"lvghKxfBK褂 dckjx%Fo7`E dْ{~⒰_Q_B~po1Xvq%~apiLw j]}{E}|.4Ғ9a;;%>Q>'y7cq"\Ŕ1_tk{E}>o=.pv̘iDs$Yx pC碁xe[󙷬~PnngQd(\/QȂ1?mo'fy}>EB+d sOv8u)[NX˿:+]}{E}9P\ËI =:UxWQ^?M >+%EЅ]U+0}kov/Q(Avb\ipൽʃ*K"T|o=.7U.?o]}{E}9].?o6\ϬߚU(]r 3\ϬߚTlY5Gv/Q(AvglY5q>~kV_أv/QȂq>~kQ}fhG_أٚK q-N O`jޙKF "1`]3XrA'β&ь'|[y;3{)ݻ {[ u/>ٯnXôLGF~@=zR~,8y5}(ᱴ(ݐOWhDܑ@ |QkB)QEQEk&~2 mT@Ut_*7p;1-Ryo k{WC#(VyU$8[)KD\@ vlim㋸wn2ȫ\ >b2=˓Go!2&vz#z 'wb'4'  ?&7!@w {VH}̑ h9I:"aU}x ]۱{{V_SG+3dauA*݋s2JH@̇9=jcX#ȳOaBHF3dlnŝD9݌`iv&aXNF឴r-M:< ъ` Tvï836 60*Pqont./&IFNYԶc<[ݞ3MIt#_o8;7L'VB45Ơk$eܙtyly 8!!D/!p{ᶊɒ$(c?Y Kn,-y'vsii_\E s^\A$@+Oq9KhGLFR9P$1J[co˷ nV^DŻv \ QdaaY +}~}~f,??՚(`G`Vh aaY +}~}~f,??՚(`G`Vh aaY +}~}~f,-QF]W޲tuj 玲˟?bhr/КIݦk3]TӞCHo%yf{ÏYO8H׎=jhknmEJ[S랙hS_F%ګ%̱|J QyŒ@S>\lN o-*Lgq1ov׊[o0C9Xe,9^iO lea2``y9皎"ZSK'Y;QINC-G:Zf{Y* /^x?Ćin,o HY1PN~)uiiL`IL qd8a2+/ ==}sދ ,>Gmu+8kHI+&ӌq9)g,RGPH%Fx={ivnTIw!ta6awLmS=y*IAac]GsFQhz2 aT=idswL^?@ep21%̾xu ?ZE@V h jY[0s0s4Qdo֏֬E(Qǒjk*3յ3C95JJƸ,G]Vqͥ]/hM-3!p.[ 8޴ڕd[dC}uMixzD{ۉolm&YgʖXn?3/K5~ +Vٌ6bqyPR*[ad\ڙe-ܖq<Xu]Nb=Oxho#><ha>C&l:e 2l)PCzb7}3 @s" U#?էl~u II BȄ~Cn*JgGH.80T'rj_ G6ŕnQf21Np*gau|(ĥ$,y`f MIoVMT $ݲ3ǩ;((((((.t_MwECǒk7v(QEAykַ1 9 `ʝ)o pƻcETPEPEPEP]E*H 2 q#Y?suClbv!i#k]yΊt 2F}:;[r4We?o>VeZiQ1CY{rmi|F-O,v >X 㿿8}GTo$E:7!c8z0{QLi7sieWDTg4j~s\i6<8.qvzfJm.odajef6@݅e☈h'jο0ҸF9I.+nwUrN%9$`Qcy#еRL܌ל=v{?5eMilIЀ}@uo(#̶8"7F3:TֹirN]2ATѓ UTA:}!N$퓅ƩiڍʬHKy)}(G$ Z3>_xO]6Un 0#p}7]ŸB=M&ZК!d$$| )E5ɪx@r%CHZ͉f_!O*sj垭E/lB#Y${).vnsRh /tqY C;J/QcK$IinKcFsQMU][VeZiOTu B/t3Rb_f H/HWt?QڥŜrM5s,1֔V̳<T1ӚivZ__,OCޔZ RHYH$yJz(~\szڏ,.}KxTymwtt;eQ,nbwG X I?B} V! o$ƪ̥ qU񕣡i,!2V"GPʇs*+{ ķimy? 9,@#UkXI@ r.ӌL@Y`q*0Ds^q~'x +:\%fh91JHKh|=c9\{ V+xK!c;=#*G.{,'=hZɿF$V*ZUj[Ia~E74 WvF.=' PcXWSAg2Џ~0Қ;RG@cq;G>?:(H,I2 Pc?4vE&dru8\d~΋]Ӯ.yT 8G={֍QEQEQEQECsGMEVα4_MP\]jm ?v?f*C9'85(NeB/'gd~YYu-nWf獸?AKCG5#FiW1npOv@h>+2IS@C`ygd~9+co-[)#d݋mXc `$Oij?XJ.Wh/˘?{R>R`-$O`yN8U8ajw>nhUjx,1d{Qw&%$E5ܬ.#oF(&[ 0s$t%M8+O?w߄,-e`h9D$c2^)EKD0  p(>41[{,!Vdaq$5`io%$2@M*Kdds^qU~Dv2=AAy)M]ʫ ڜT> vWu&-[cmkw)]#Pf% m8h" {8es:>MG \VS1Gܰ2`n:ssJ/|/fTC)*$F;,zsLE=2|b&J!m 'Q >ȃNEi 4dQ7RKRfaG m㞕\^xH !VD eg8ۜn @2B K̭c'N۟mtx ;XOJ|,'ʩ:H9`[%0!#s_w ֒ãSKh練AFy#'q9 :{: /&Osmj6{t[KiJ匀KBA 85ռ,X[Z2;ۏLԍw_0%H㓘8fA]ImKH<* Ac>r4al{?IqM$-Tn6.23гӥ%ׅἓ|I@szOM?_"}-kKF Rk-Glss. ۼdn$'}qW#Z8<o,Y`H?Ԟ@Rȸ y*8~L eI Vp$ wfi;^5l.$tAv3Pj }㷹H!o(Y y}=Ui)晞YA$P>II{WiBPAcAS8 `u8~Y1PpC#<<zJxn&[ۉe8,I(\~QvhQp0 GOSLŦɦYI(%~ޫaxxE0XK쀫dwHz ϶9l_I>X'G g{%gHZ]}=OsQnH/Ky J 8v3b3holhc ǖ+T ]ES`Ȩ) 9=*5[V2 ",1׹HsZHe vi2bhs_ZaxzhŃ b=jQe\B^\L]e( csq=((eW}'c" olגy 1r{|Ml@a&l_TZ8XvfosXǷf>]1O K i6ၖ2B3߹SZRL&DJ_lHAs9 X|+@"TX99R_xwLcK}iI1V*X9ǭkQ@}1r.x~ }5\B"xX OY9آ"-ơN-PEPEPT:gy/֦P~?~лEV ( ( ( ( ( (2m?5}]EO}GO _EbdQ~@_ftRffQjI9c6Sx_w{pAPHғvV6Vw,M]ax2{=j{ȭs n:?͟N(7{Py*fgqrhkeoEh 2Yzu m>QK% S `]1^C`T L<=]pDVA"FrՋ2@Vҵ`1-v4lcFH@:qGƩ HjH`̪" r13=S6xFpey $= k//P4q߬Qs7[ `2{l펾4U@EQEQEQEQEQECsGMEVα4_MPL4H@SHQמsuˤ5S[esg_Kg0>[NC{@5KGI"9`#9?}Uї|V>s8=3b]$}4n 4kw)N0' X Y·xsN` dq/8 p3B"Mtɉ&` &J"|;EUˍp&Tr@8qCi2]\[j.M,̱ʁ yݸwOAUx-&5̈| S+=F2A-" ?zb2HWԒV% Y3m0<(1 _kRYje|۔&#f6 us'K{+I:Pa 9t$0 Ax;Q 5w*|gXƈ=Tִ7ys+JC e(0:vıb9[.Lj' qvG墮l77$,#u9{Q6ˍh> ;'4|/ ՞yY_iة,.uPm=JT EK$9p|gvÞ}-~e 4U,I%OY ( ( ( ( ( P~?~5K>+֟Q񕆕k\Ic,m6,VƱswag]jQ6_h[Bi!`Fos9ͯ%iShl\:3[L6VB3-'g8dkEp㫩"cpsQVo|c>X\ZfY෕b"4|B|I8@v'$4Do >3o0_r(r d`i3y4ܽП.\nhmOlCƷzޒ:J[[mKt_{+`z֦^i:VݮYgU#h,[=4Q\[źHi ~чPw;8<`=+#W~ֵRy$dXهP(;[Gomщלul'?p旧wlSC_i"Vr\'ݧ?/2PNҦy5by$ppscހ1f8Syo*,Vq.%9f'dD{`O-td(ݲ(`'+fwK7Dm rb0G/g=i.|j0ɰx~tFp[1R(>O\ܼsYZݖwۗ c(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@?QE}շsGMET=-ޤ|DeA>N1Uկ#Y[,,$N9l16gLmq9=1֡E_Lr(9m~4姐C˯COg$e7f$(]Hc )5V!3@L6bb%%7A+KT5 B%RY[{O>OmۀK VjC1:nHVA@. =)Դsmω a]׆-*#ݪE*ZҳȘ[GP!l_%1#-e˺8=5 .h)8H6 |nݿ|vƵ ZEK"X$1`q"98YJX2)-|!g=w:uv0E7-Gw1L(Em\|.JI9XPS `9u;[fmڿ.]WzVw'It𛂱>q ml*2tktϼ'ڠ lJ0 N3ڵ#I*O4N H\r[UWşӤkfE#tVmJ$c89'm$~>֘m@Q I@5Ѽkg `(Q'oWu[mZ[+AXs̤znaap۫ʱZK5i~oA_A&xqm) G xuOueɗljA,wC7s|Pn-l_.9&ah%2yd'04K^n hF# m9w袀 ( ( ( P~?~5K> [jڄ{9dH<T 3> .ȟ{\;U}o\!z`O& 1\XqΧ5kScgӦ %B~E*O0l&GU} 譕mK,G;nrIt$v謲`$H'p's_YS[Ed,t?0LCaH,yOo^ĒE񥬥 _?bX@hQ$6xG8%σ,.oF^;rz {1lMiЭٵme%e'j]^cIS_׵ItK$:ť˜HyjnPpWqr@ :C4z+=ߨ&yƳ.6y:beMrRh-^b`;9oP2qicd{3\R,r?gEsSNri\Y\)ZE H8@sntvӴ$?K2pssҦ<3i̗v1D'uB{p~*; q<4?;XCBn*+^ST-N"FTȐB d|g5ڍamly\W_)f@eNGAc^gOu\jJl_Ra@% 3o^U['>Vh}ĖJb1XgX_O*3?P5ޙcZF7d323!`2:Oj7҄J0%s$]\i~{:ljysh^LǠrGlTU-IVi,9{5)xn8skh`{|QTM1}h&x] cp~lG|bEYsVѬab 󞄐jJ-K(kkxR8+('Aֆ>hSڛiDGd;Uocue.i| hswۅ6q50մMgB0R(Fqׇ]9&ў/tmvbۘ'%H=5S(C!AܓqH,2lT4ZSiūHUfhTPϡW((((((((((?bhr/КuȾBj"֭MqyNǎm-;`~0=n4nyQ9 gţKXQRͷejīaMjrIHFy (IY܂:@4V2EnV6P:߸HZT2B4b|Y Nq@TVD^$%#bm[#8\8$v\ 2FQpV6@VfAM$P24h`e1NHhۧ'5@Q@Q@]?QPZAL%oC>_X 2ڴsJe[r*D>vk{i[ ,R?6##89Z _7:D́U' Hj_@c[bPːs '=jv>Ү\_na1Қ|/5߆>lcvݎ3^]3#{;\75Φ}t:^72[bcsԅ=~j.V[MN LgD r-X=/D4?A\};x}i#fMuѧwnQF]H Hsj:XE9ey`v7ЮVm>6%yn`Ib$qVS@#x;H0[A2"le@{-$]}e Co; IxWo湵{MRKA$X.6䑰n8O #$ cdA0P.&b >7. 8k5rJ-,.lu̍PjzzrN3W?NjgKUOmOv< (Pbkẙw$9s/tq`ѲY8hnGߢ |z][cް`$de@ZcjMxuKÿ|~tVnEH#MJ7켳$䫼LU #eGcWFه]T^~<3g*MLW##?79= V4޷ʷ ́ɆrSqR3R;=MH \dW$k_zIutȳRcgN2zz VVoy.j' $ My|x I 6F I#9<> .,NKEqN@Ā99#֩or+7H2"F+ٔڥ֯Z-fcldlRgf_H6qcYI5Q+g@6G?E}aHn!{}aUNAShr/КܸZq֍T7vyC>{i*mmy>خF6qڗ/c wˎ{~$y4}xII,Fߗ9;j5wsm{$q2Җr)ܿ7AgU[AOXBweS繫چawwq$&+`   j]ZEn/(Q2d㟙G/i-$O Wʠ-3?L}'A&- |wFM҈9i)RB2}LNNGo=gކ,ggMau g=*KXekpHʜr}OjYNdw7A9`ʂ:UF,_GM n#Fw!R>$!kPpn P0,=3V"3\bn'a}F#/$qRagA,HF;6'; ]ۣ]s0p: IsoډgwOyMxdʑM:^P5yR~n_O8tY|g4N9 * tvsZKo3֮Y9A zqL >ǡvb52U<)>'I/$YimF-Xn?Oiuwַl`3Fz?6#|l-l Fۻt{VnmxHeBF!}?f>,o~ ㏥]3,t'MM>dBG44-.~Fm؋m}3kFtmAos{%ܴ#ZIq@RiKEq]!M&[ئ0Sr/硩P%yω 3S%trjQ5+o=ٸ^ } <0*xx.$uV8#szvTW&m" ^pu']oHǓ`y\U5?H+qlFmnxxž '6}Ý\cyS[_M< rݑ랆5 .susi~K*+ո'qk.:Fedvr#A84kֹIdĊsAҵ%iwY̅K;qU!n|5;Y jK3B%z0~eu犑BJ6){:A2#n  >T6g-pš2n`p)>IlaQP8!O;;{q/ ML WW'2zK5;tuK nc xT ;tdh/:I1#%Jc}7XZZ4"pO1 r28<` Z\,ݛS‡qg#;Aҟ.v%K%]X@FOy\Ɗl|@ڤsn]\pNrq9 ( ( ( ( ( ( P~?~5K>(QEQEQEQEQEW%?I뭮K/ד赭4Y'*̵t_Tu!-E +X![66hsNNv?QX70Ʊ ?@O=(@ʾ'<_k?e*Olgw%#؍2罼K$g˰HߒP#˭/[YC*3RzTZFOΗ$Mˢ\觚\ɻ nfJT_o͹RZ5*2!C9 ѶcT8W(-j G ;p4[k/`l%s% p01| 8V"Qqr 3 I${=cњ_;44KE vt#n9:r}7T;ku{8 HHv0^dP(P#-%*"viE`6l };}e!$6+=*+o]x洶`qmn)>p1LoEqLFiPDJćszY mw4bF; ~nX s'w4W 7,v16>W@@Jq@O(s]== M:pd \.22Es鷍\ZGl-ےA1x=T6!Ү'"9-DUPgy;drm[AKVQ;)DFF?x1Ixkh%Dm8;~''@';PP#.U#bd;r/-I)ṊM5Dß<#!* @>=F@::RbNĮMLGgl`X!_Q= W^&m>#SO<}X@;;|ŎlH"e[B& : jx]CLdFJg?+0r7r|NH0 NA);do8$*ɰj7-`aHAB9})QJA"Ip>] `eBj{2Cb1& y&SR;v@Ue|W|dLbU/saI|mSwmx[QICki$ζs(N.A9,6p:hZ̿nGnۘF=x,q~py%Fauȍao]d G$ 9AGe;#cqRB;J+>1b"CdA AZjA#5(JDvѷi*@Fr@vTqo Cn r ( ( ( ( P~?~5K>꺝j7R 'gPK0_dY3  i%}*eotDxWv!+i!u]-l-~M#\ 89?i?e5jI7*:rO<x8$70LH6'AI'둊ȵeO Avhynj.>FOٛ;Rv 9ϋ4;kKV8n`s'Q;R\H[[裘I“$gpPZӴo|jڊ|S`u+SyG;&K9ZܴA< _${)=qs_kXT8TS9 )\z! "x[VQؕΏXg|)dvڄIkP]>Sb7NQ\ k+j;:V 7r=\?DK~ G`w$/-~naDp>ͼU2]SSeMcONxҀ;_ _EbdQ2CWX4XQ~B[(Tr}H2 g7$w0˜B<ZZiV%,L K1X2HIs{V ]7l~t1E"288uu?*]rilt KO~HB.?֡>/I<݂]v)` `p }*m[Pѭ; #"t$*x9zTfBo`Xfsed 0 OZOc%Hc8' tAdx@wVݴ?)8鰶btVbӐ2߻m2hO#'$0vU~q c9QEbiwrK't\d!܁0G?? j`nQP]C{kͻT:2jjBc. /p 8ϧ&((I] []gOt~Ps@QEEs C?geGI",;ñ^pV}]ɹ26a1rW)ر%tagli)c?( q |8 v@+y3|s\+6[łyvłGq=ZRgOAwsmkWn[ٳ``sh8#kmEEm1Tr@\94/Ck AqzոDTvdH|񚼞yb2 c1b}2zu-j7:r3BFʒ;d*I c>Qm>u6_ R"=r}geOjèe Aj+k$]\E ҸPOMsQ]a|:fӬ6:<#cH&Qc?hfYi cA-JvEwo!>XIT\`;ebȌq+q~qs{Vq|5 * @逑0ʪ3Ni-iu2˪bI.u9bHʥwɯM7+H")C,9>ϱf8#9]0v\uyM֡Xi sQ^M#Crr9:+r 5uyyz$.^B㹯T b9#c9Aq +4$7x22Ix;U6![h#ƄGlU}JOE Z!iSgcb6Vܹ>c0!H1aGzP#xPnaT#E t׷N+>gǍ[OvLXg9 d ^Fyvu .c;yWCD~_TgsYVNw0qR׸q8ߎ}ب`$wFG8R^}&7r}tZZfB<ǤcmJ-2 - y=x+Ubew3R;Tu4_S6:~0W _dv%{kk Ҵ$+yRO2XAWU\Ốd<@=vD{c(E;|1QNJ^QK{dH`TdFϽVӂ/y;26/`+P ^f/:F TuP0 2{ڱl5&lmL$ 8³ ub6?OJ ͚]JufBQ…($(}iӢ%C)2gpq(m:Q+-6[Z}6V6g?=Gۮ5 mkU_kwR"6 !T G) <qWQ,E]CRccb X;s^EVm֡QQZAL%oBQZ(((((+($CǠYP}i5I-V h6M^ЂAǖ$\t[MR[6lvX(d2GjJcm `h:U֣dkt,ydkF2{c9T}7S$GwEo#w5o) tt3FxHڴ饽8v6B*'[AYDm p[԰v'!*I_ƫ2+hbr x]+B?"0iRq&`w&<r;c-ƓImR(;>^3NvGQl+-JݮKbA2,`: `x_ s!{$Ee4nrImI=zǦkriڝ.L*[v;؞hm#X FIJ@.DndV 2 3nuW3ڳm7FqOSl> ) fYa\Ǵ7)Cg)aRSI ɼ qʑ G 8 ;Kw`{2{%$dˆ9R6y,/YUJ[aX9elW<6EF0~1Ir gM3ĂQovV\*\yXI$a#nF9B4l4),H$o[6|u9vvnկGۆF opCO`Kdyӳ6{Pw`ccCNX+Z@g\°ryPvƫT[gy듂2})FMc+a[i!(mEU¼) |wu ]Fh^ v9L998}sΰ喦B.KT[~X $'MP m9FWYb,$`F$4)59esĔ\23/"WWiԖ3)hhysSohR2C4MHc&oA:WڍtPkV; m$FH?#\E;:CqCj&-DuU\`>l@9P=H)RP.pJ;p8f_1Ap%ft.UwI9';냊t I a3)p#=9&65[㹧]`cx;y"m°oռI@-9p$T->Tn_(6S dMm2{F&9-B#vyV_cn@my`eyWhROQKq'-uËu!@Wt?T䏝UppA$uցNKo4ɂ CyN,9Q@Ǥ[3_vnU"l2GNO 4|9k[X$`l@䁎co{5tڌ.X@8*,OXm&dh+#dr8=G5xGAH6mdҨWhހ2Sx5QQmbdqX+(((AL%T:gy/ֳhAEPEPEPEPEPEPM赨l'՟WKڏO|:w'#Ҧt_* V{ZD%d*~>lr?!i_7^g4@O|a_k*ڎ%SF]@Em܎1GkڅuG,,g;W8} dNk;Q%ռFI' 39?7JƛMomi>yGjN Ð9T#:K=G&r`*D$!yञ,"Kcw$"#M%ppYjW_D e;$X@]G('kbLI#nfFE($UaF2 eX-.[^#q)XY|I(Aڦ[ۼht/1HFyE9iG[{pm-Rw\nd+~s/r!)pQ#$/bےA<Ԗ)nG) %gdEbd/ [A2I0ll1sI0gu@79u}ɑ9aTm2y"I$l2W# pv{@Q@(1EPF( 1E`zQ(J( (((nuȾBj۹P~&" ?IQt1Vz?T);JH9汵-R{MR;Y%IH̊ 5;9 䓶4U =nKhY *e"F;}KɵwӚt ;<@pXQKQ4YvLf ĜqJxVpg">@fi$MIS@YWey❅^\h(0df'vGE{ bE h6U`asx mM~4JĄ/U T'̺ν7I0 vppENP2Zi\IKý>fUۃ]^/aP!1Ǹ5̿"̓J1Sq ‘:r })xQ y7`*#Ix|:(MT(a\*"G =T((((((AL%T:gy/ֳhAEPEPEPEPEPEPMZՑi!,V~ j4X(ɧEpE"sdz(1EPEPEPEPEPEPEPEPEPEPEPEPEP7?:~_A5m?QE}`GCQ??T6g̋rJ]C G8q`3Pa-m$G-1J!H;MB[;O2ǵѮ Ŷ8$gʦ-֭Y| ݴ?\Pk7;_l϶yN,yn0yv 5pr OMXZt3Y4ضM / wt 9qbr$HSv`q]ɀy-dB2Y&ݷU%S+=jcv6rGJgh+pBI_7<91V'f.-$A|m=Hl+Xb(UX g cC6Iza999?0#s76k l$K)cvͬāBz3ٹOX;}O`pq4%gaglLo"%Fx$} z&-b-p{vdY;졇OJt(9 9Ȯtaj`s֬EPEPEPEPEPEPT:gy/֦P~?~лEV ( ( ( ( ( (1mH{s/Q&eX84xM<9}hKV =I< |%+wpmodX`v~h̳&Si]F.=kOYsmq"7:LP0I)`ruWxMBEėl)u{_TzJZ +v^|z sN\ʱ ?.Ad⫸8Sr'B!G-yCWqEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP xf?"j;bam'#OI:x[DVf? 0b4R1ҵ X[Zޞ\aqU(((((($i*V(:MHqK ^~UI<yls5D5EsrxsƧRƘ_Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]«7 6??UvP ,'hWol5Q@*гc|_YOaEq B͏ƏU~f?]ĿOۛv+57\WqEpBO*sxus? Q@} _1sv+ϯ.h0K܋Q kh>Qd0xŖ>E+2җ~++6>Q (CП_gLW ly^%Яq?6 ]nh3>uRş? ?8]:íMTum>+}Œ½be`tiہe$G>@ӵm?W:m2UuϦAV.-ẅ9bn$P~(+OBID,;68p@cEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEf\5[6.7G-# 2 IgiYj6L, \84~((cus5q,Qʬ>`G>v ( ( (V?n-ٌ_3v=(VeνY\5ޭco2tr"0# o mukW(y}iawu @|\d*a#5ҩ4>5r ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (אsRc] c @yFk׿+ O]WzR0VHa::[AhZKkbI@.sǭsV:ߎ n54˯\(}6e[03rxy-艬WS#F@Tdw)%_astFUKU>)ƥ]j2gaƹhF4;ޙ%EDgm}R|7oPݿ 8er[lc=$ʟV ;>B\xQc=𧓴ddZL5ic*ǻn'sX4ҴJ-f.*2y(`+ixnR${(c̑TH}H@hZw`Rյ3AFydwde'[Y4.VP;`=\6m+=MV[h`_ 'Sö>&80kTB cӞ8ކ*SUŔG 0i33zSAgX5-J8eaVv($~=kFb|Fclk3u1)!>\{R|=uW\u!\(pIc=Ml.'~=+N5K{cwŹ.`XVRD 1;r=OC\cL-/OC0|%t. Kـ+'kK\oOǡ!59n pƖ:e޳>ɒwKpf/|M^mnagӯۡNU} ]|KM<kW~\G 3媳A^kx&sX뚆{wxgْĐ}k{LuK-Z..:ЎkǞ6sj;UA?WP x\òdOݴ8A#׎sU-\9I紷Iy&eDaqֆ}%wizho.,L;ch9~[b6M~V3-/Hz k3{̐ߪE$ğίxC,iVP.غrHzqF_-mG~&bK ካz~j~![kł[+q䁁u"&5nml"tl-Ҭ|A+vɕ&G;i,@Ttz>kmd1ʱ.2;kky=FF*;EˮF ǽC%u N8Lj!_qY/mX`qj;gaB;FMV)<,'zRq{Z5;&SKXS,gr$5' k DzlN[ Ϩ\LJ4}gC_u;3kA,fI1`*OVgDO*/ȝפ z&wcß5g7uu|,bDkw }h"nb67}s>օ.a/4 ǂ@W+~w0PF}ߏm_gXÚZj=8Ued s}0ySg W)>s_j jg,A;gcNzxu~r{du;j_O;f}|2*][G=MCA.NRiݰ!#p+Ŕ- 7,(7&ZitIY˃㠩Z[;cZ.ǩ 2imQ]0i-yѪ+ɂsxk,uϊՠaC.΢Ҵ=3d^LY {dN:UCXV#SHdeSk;cԅkkyFci|UjEpnC)Kw`\մ]MA'QP|glG%u N8Lj!_q ZidcB#N,nOJ|wZRvy"Y'39$qO?0t:~G]xJU<`ȼ~*WcXBo;8 fo SVO &ek{ZTk{=Sڹ3\J_=v@{ ]0kd7ݪi'Lcz={Um'M$#!?@gj>%۝?Lލ FSv!P2ǀyn}-Sux.&{)du52K0FGAGxG#FupY㎸q>(.gm"GZX-h!Ax8慭KC{Kנ3w"62~pG+:_xjte>'*pl6=-mOLk 7CŒ0:_i:fo} g12\'iokyz^_N붂MKA**}8#w X_ZSVeS {޸ 8 -A%#Ccˋ \$SkusFha4^N [~=[}g\lیLcq .o-jћ# 8n35kމ;Sqz#+~Õ'ixZԺMRҨ362Ku9x kt Svג.B#vȇ6КnȎ(EQ@Q@Q@Q@Q@Q@Iykl`|I^k5i KSd"N  '8ye/мOGgwp7<׌W7+[GClsf$y ң^y -Lù7<k_z/=GZ^04 ;K[`29- N xQ l#԰Z?+;Xc8yNA9]Rz2yrH[S2jՍ~+mia䲲1R#%3hyEŮY$$4NM]m c<{c?Sͫxםf[= ;Qotk[lfbf2g|G46>]֯ZB.3S`ϡ֝ (fY!R+:jirjpxR՝R[q63kVڔ+#=;]f.SN6Ϯh$E'$2;1R~2Q^'#] `zA+ =^%ݾkF$$Ocphң^y -Lù7<#o|sƺC>"s3~^|$8WZ%ͬhKgk,xRZjpx7nxI p[p3♢kE<.7B=t~Lr?4z-H&潜ז.ۂc0){K_1fm<qMd3~R~~ޮEO~0/uw]>Cn$( q^iiz|[6B6BG@^cߧjZKzX`T׆H8/Ak_qKcxv:Dd(=AA>Ү*g#z?k?6It 8 ]^*Ӵ s$y猜{+/& vd݀xF39Z]ú,&8<]ے" r}r>]Gzj6ѣִ֤U;F0I88C݋EP0(((((((((((((((((((((((#x;_ D򼽸9c*`Hd\ ! y$ ;'e89@09 x*bK&}3R}UWOx${ub9 ]=@/O oo$K+y::{4xH}kWql#e;qƺ '8]"|cNCKɷyFQ(޺}K-47xyvN?:kekf-mds# Rq՚oVq-ϋ<'ҤrNi8FFzVEFS$GPTFz}IBaNS>w-wQ ӜF3U;}]CRua&c'g=;WkE M \.,Ҭy,|;[f]WF.!HmHy.'rAgdNo?'oټW2}+o/t'NgVe  g:dpkt*c֒-'NbtD=r5~=]¸=Wиf]fG&q 2QJrN.-vkIF<`Óܞz?'¶FwTHn ԯ\WM)x") aO0IRzAio#| 'Oʼn#FH#V]É"n_HHFIIcz =Ahp SⶴQ5:ڬLpI?>j/1'ö*5$qȃ ʽq=/q*2P-6ijvp[F0Ʊ UmgN:w |ywmqѢ1Xl.HEshq8?u)<(09ow{>q] .[h|QKam&Fv;R=@['$S|1 ,?מJ:_ؐ/g~ zQxH^0ub@G,~>]M%ZO&|[<_xU $l&R29pI" hsN: Z'^XWӵ9@I,*N1H8]h_E$EdJ-0~E|72j6w&h$ s]=@ׇΐ1]\\W8}Frq5-]\-|;һ*(<7g}0M)SF޾][j khv!HנQBY#M| _#?{w{$:Φqjc'p:8 ]<ou &59QI' þ:|J`Ԯt{1\[w[6sM-Ls+s,@G[K>]cwȞE \V Inc|Cy\}@8uEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE%Jo*XFaWzeyV p?<{!6G)# GOΤ/?Ɵ,ѻEam~Fߑ4g9ݢ?cl?9g9ݢ?cl?9g9ݢ?cl?9g9ݢ?cl?9g9ݢ?cl?9g9ݢ?cl?9g9ޤ-#h/?ƎYh7h-#h/?ƎYh7h-#h/?ƎYh7h-#j7䉢>c N3]Q3LpG2ϟȫVu?K~Gߑ4{@E`w_]/G Vu?K~Gߑ4{@E`w_]/G Vu?K~Gߑ4{@E`w_]/G Vu?K~Gߑ4{@E`w_]/G Vu?K~Gߑ4{@E`w_]/G Vu?K~Gߑ4{@E`w_]/G Vu?K~Gߑ4{@E`w_]/G Vu?K~Gߑ4{@E`w_U/G Vu?K~Gd;"IG+O4I,w2Q_?Əhhs/yN&h[h ,M,"g0i+hsS\w>k;d Bek F B1>4{O f74gpv1EU$~-K ͸^[]Ș`~4sQq2v%}sN7n8v?i7,jY?'u/Nﰍ:+3::tVou/Gu/E`4_?Ə_?ƋiQY???ߑ4]JϹ~Gu?TVw.ߑ4`~]Jף_?^iQYa~,gʾMhγj*q`@S9qxFE_z\CEaGыK+?^_z=Xܢ!Mף+7f^h7(.~˺#hcz<_?Əh7.~˺#hcz<_?Əh7.~˺#hcz<_?Əh7hayW_E;mks^-Ύ<_?Ɵњ 6YVPO"+y X{; ŗ{V!:WJDݳ~cn*5kƳ@,po'%^F`>rlh۰sv33FXV_9>_=%񆡨=6:uKWO>ડY )'$pqxQLhK<1L NJ_]C;kTxd4^Dh/n!%h*|A#^M[.W<12ʮ1Oѵ9 d 6HwgFY$H:ӓHx^!Ԯm)͂F2s⛣.UOUs7Ь.31[ںxV{";ŵi;29VCh6ok)KkWQ7# >(1ظNkx^k#jh]Zƥۉj3^]\\]bJ;΂&fs兖@UQÅ@i25{{f #Ff,zEsݷڵ}rS3%P[$EK;r0Ǯk*]6_omuF("V] ㌌Uaan<\?}AVbnuef(9#HG|EI`E cדS@V 2H#PՃ>L8˟^r۩HG;{rG 5Rw-DnG#x:^KcmJ|uxKЯ.PqvؚzS|B2?Х`E7̏z'(#} VS|B2?Т:oOQG=XQM#} <B)d?GOQ`E7̏z'(#} ,Dd?Eu2?У̏z'(G=yDS|B2?Т:oOQG=XQM#} <B)d?GOSǎ;Os_`H n'ַB۬RLmnmrv 9(u"-mZ= Y#Gt$XrЇK\Oqnc0 =&O E#F8p+*˞.k=m6x:PAR2<YN60K ewGҁ`bIh\Ork%ZՒ#2:q)n=q{$Hd[w#\)tYʝX.cMAMJ{;3y3H2!A\8#a)iƅoM4fBuZ;5hO/^G9gxU״K{Ngwi4T܆V[<;oG5`jpu/OCnPťYC"4|?gOQ=S)l?GOPyTl?@=SyT>gOQ=S)l?GOPyTl?@ Y*k./m!f1On! 0~qP[h1fb'<s*r鮍 On|aT>֡Մ[N,𘶷T'9Mgk`g;k|d]+&>ƹ&'k0IMN$Yȹ8v}qެuD[^l-s?f n ʄe+Qfϧ)gRRZXc,{=}*UzS|B6?ЭdTsG, d22` OSY-r(i$238@RTl?N [m2kI.|~Սj1;*M--VO2po3~v'5i㳑:[;OaEp奀Eh?ΊM=p:*EV ( ( ( ( ( ( ( ( ( ( ( ( (9~5UQMDzf5~?V/56KQ\|V7(Zr8F*.FM_ec]@˫֍xӐ,pQAz/\>u9Sa"+)$'c?GñcqG=5AiՒ;!5U!`B@%9hxVҼ7liOPw z ~޷?j;?_esZզc nD=qɍ6MĖ:Ee DDqAuw&/g쿸٣}|Y.LD@YS*'ך'EY|[VI |#?o[ngCcqG=5hƗ_+?wNGW_bX&BNG;ؖTbX#}Vc?yKТk>9#İGy(ϻH3,?İG (Ò=K?,?B=c?yKТk>9#İGy(ϻH3,?İG (Ò=K?,?B=c?yKТk>9#İGy(ϻH3,?İG (Ò=K?,?B=c?yKТk>9#İGy(ϻH3,?İG (Ò=K?,?B=c?yKТk>9#İGy(ϻH3,?D OxޭF4Ya>ō?鿑?A55K#GqQ46cBQen\"HInZkSqaӎjWZh).UZ9" =l3No95ia]#'4cR fZ\Em$G#1ʖ?ZOEv4lQ\=S}[³ik.Đ7{WQamn"ˋQ +gؐE7sBŌodWK(ΞFe?ݴRqx>81=cGUF3Kg{eKכۭܠ]! q }֖_?=-O;F"yoa]ZUEejZڌzu׭J2X'bxR [6i7³M$*FR9ք35=zW̲Ҥj$N(]q؅FFXcPv]<_q-zon>lvO*}Vss%[k$\BX>N0hjڍ:+S֢:R5yVUo<"KEEk(5-٭_/TP_f[R@}xE| >o<"KEEk(5-٭_/TP_f[R@}xE| QmoRRD ?tRZGbYEV ( ( ( ( ( ( ( ( ( ( ( ( (9oCzwSt-Al-< V iߏ* Ʃ-bI$zJS~flz,h^_MZ1H< mgŊY,6fTP@elϡ>!sQ{?99ysv񠶆UIhf{^>鋫ZLyw\Q`qZ?׿*G#V6sk}mv֚kcr7rOemy}~. 2@"Ug^???U/f`9yF=,m:zw"SH؁ ĀB@w<:!sQ{?9Jsxf9MbmI5 uqޗG.4iVM>=T lE.rdw:!sQ{?9PiZ`_z{׳ AUn/bFW+HHZR[d|7\檯R|n$VYY]'}C>!sQrJh%5Q$rGf|&~`2qm hZsHQgh d+g^?_Cz0RVǨ6O5% `#?3*ν?Tg^9q_R,du3Y[_Eoqo ,c:!sQ{?9v\05n~`'$Zk4,= |`:!sQ{?9rnkqqŨ"04et$$r9A\$,- g.O.xK{?9Ph|/iz׌>at,:o n%v`jν?Tg? ߡHNFpn`*Վ:Ffo$1x{?9ϽT871 նyd>2/ {q|ՙZxs* ,A zν?Tg^?wdKi+;8E ~Z>qֲPu=ZeLflh:%MIa]uA: sRl|T ϽTg?~͇0Rg^??U/fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJ)?U׿*fØJQQ{?9gՄK8b3N +w&/=p:*3Z(QEQEQEQEQEQEQEQEQEQEQEQEQEsa![O[֝1S[j-&7֛|*?ں4t]jmGE]h_ں4jmGfE*?ں4YvG?at]jmGE]h_ں4jmGfE*?ں4YvG?at]jmGE]h_ں4jmGfE*?ں4YvG?at]jmGE]h_ں4jmGfE*?ں4YvG?at]jmGE]h_ں4jmGfE*?ں4YvG?at]jmGE]h_ں4jmGfE*?ں4YvG?at]jmGE]h_ں4jmGfE*?ں4YvG?at]jmGE]h_ں4jmGfE*?ں4YvG?at\I?#}S@{SOo?ƳhWBW ?A5Idm_MylD?x79*eW| oQTth KWOo?Ə]?,ERWOo?Ƌ0.Tth.U/]??th KWOo?Ə]?,ERWOo?Ƌ0.Tth.U/]??th KWOo?Ə]?,ERWOo?Ƌ0.Tth.U/]??th KWOo?Ə]?,ERWOo?Ƌ0.Tth.U/]??th KWOo?Ə]?,ERWOo?Ƌ0.Tth.U/]??th KWOo?Ə]?,ERWOo?Ƌ0.Tth.kC5SOo?ƳdY]25ąX7acEh?Ί4_詎fQZuuS>ȡC$pdzW3 /?i7yM xZN·˱#1I2I5g=֗sŽcfˆ8zZUZ_otX;K0޹߉_7ld=s*kwS%[4>Ҿԑ{-jkĒ-Ʊsla0fI~?d>4j+%MhG ]_q yt9A4v<ĭ!}FG? \g{{ީmJZ݃|[e1` ϿW> EH]LpI^09'#G* s&[sqqۨgA?h^zzsX7u-m [nϸ0{_I8WUu>otRh6$Py‚I9\.tԱ:}})]Gk ?jĿu*rKcsy$)6H2<2ylT!4Ԭ/>s'f58ÃzbD M]q_/'ƥ?Kgi^:zU|Kqxt F[\CQ1 \g5ZZi7&}Ja{乎X `07c1qg $gHq+=Xmbkx%'+v#q*ז鬞;ˎRBC!}q,wvtu.ZJ{ړnf.3 ==뛗ź旦_ԭ]6{iypiV:7 z9WSx K \}}Lay"Tgq?jg_uQDw#O1m `:kxo\G%JD}l+1T&n[.ml@n*_73hs=IfȇrQUz9P\T}^T(`o/W?`o/GU(ArQUz9P\T}^T(`o/W?`o/GU(ArQUz9P\T}^T(`o/W?`o/GU(ArQUz9P\T}^T(`o/W?`o/GU(ArQUz9P\T}^T(`o/W?`o/G[U(Ar[T3aI*OT/i im_M݊1 1"MtvD?V(O7 ofmnwr+Y%=WH)pMYmS UȃT}aTӍF `:ݽΉ{$#Ϙx7Ojݽ?/IUxK6{24ei 3Y5hv ݱK/ $CyOnQMOK6vao/G[W%aMwq0ΉY /̻S?7'U;kWZa*Mxtք~Umÿ=>oj9P\~a?_ʸHgY~ïBG:!3HL;sZ_Վ=v$I H>],B g= : U'׵l`kkIk<0Ȫps'SW5 jᖣn6o*3@pJ}i8mtao/G[WW>b$78$A/rNG['gjm.YٲVVW;rrN:sO^OK[QUĦ6]{{. xͻY$Tp}i7gL[ ݡBѦ$q9A;_[QU\xTFaykM#`cƷa20^&4m9nQ[{~V >S(2=p:(/ ֢+A%K7kQ"L'Z6+cjNI"Nqg5~#> i{v?q''ҾWjtv|NpApU'#>Usu[Jf* o-OFZ =yl~UZ[Eeg (cXz0(Z&բQL(((((({[֝1Z5~?Vz}%%5-cM;Nʩn A!bO[Ĺ }$JvatSLkHV$El 8cO2rw$&n$d;:'۵BQBzughB~0 'ugJ_>)JPC[KKS&9E %Nr=EI6okl~1sL|b7@^g; <_|)-'Oi m.t+tKFZ1iڇ ɽE0K)Uh=*-bo'^2o܈,,oϐB8%rY9R1>?Yij-ŕWKfjI#y#c0 G\sOUj^T汻{yc٤\G} A% =nw$Kv8e)VcOԮmqʾ`q9Z)$B C{{{M^gTύ%KwI;I6ڣk0r=EmxSIЮo-Y@ o$TSňOVVjW$kjO|pIJJgc5$'gN}輷z~5dɼA'`ǾR-d }7Qe#@+A=O ]`HҞe@|lHXx9@1柘ڛZ_IÌ[HdRC pG9ǭgci-,ZΤO3FTrrON٫W&oWi '92mAqYk.;X.{9c( _c A3횝rͭfGa4<,J3cGu鍦<+?ًA)V'r1)m|mi-w&[UXQ N[wp zՈci5Yޤlk/({w$pqiw`Nڙ>Zjw5 4 SwRH鏻NF<\ꡛ$W8ϽvQp9k;G'k Cθ7iR)U;Q#'4K}6hnRU8Z1,#l1Sӯ+9豛a ١6a+c F}GXӠ[k}RY5K+(, ?5P4˦ZB ? EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEU 5~_cG=Ǎ}7kXJ4MtvJ_~Q_SlK7O_SOºd>|io%`"R\ +hqɧEض'P۴۱hg X/q1Ro<_kݷo2gq*i5M`{&vGgIF$FKγk+k=m$܍ BGNGO5ylmFYBͷ H# jhPڶRZqoe \yRWWV'p9#Mti1yF%b>__Ƴ/rO>6h Q%ze o$>VL6pfY#uV+#2ߛ< UeXmoj- 9ݷE,4r!8e P mdRG&0.H$vw1F-gydQyS%`ds#vZsJȫ!#מ٢I-&iv}ıM$ 0˜n u2JO+KkLrspxɪw7X<7gM ] H7ƕAWAr^4*r$` /U$F->)i89PO=90`` ‚F9 X9-3[v!E`]v:~{?ŬPI:Jлk=+PKYZV4VuldwO|Y㆛Qan#iPc nj.9$16ݍ(!2"\Lay`ʡ(a :^-ķp;HyAHzh<]g<i;P_:(W|ۆppHJ Xp[ȡ{du$laz7 ."YrA9,Nz &n {$1\:L<( (((((((((((?hV}}¢{ F3Z(%eE,*I YHxXwlqqE4W+oXx́"!-ĩں(((((((|?{?Ix 'k q0ןa@QEQEQEQEs׳VVF!;bշK1-Ybg!1U< jP˲Y%oRI?֬z.Kc-r8t+ `G9Xt#813nEb^ 0H@;UXgۧCSt} `3:SRIƳ`3f-^;sd>/Xjv7:H,9U=멺ԭmbp_aj9={ġvJ{} l:rg6p_};dAWVPsܶxT4ݛ}6ԙ-_ɲ(f$rKnJn-l`3]o3Q*zR%ds)#UѤ#̊@dP=eMuyFo/,*YY\ H\cQfF]u Nx$sJq+-)(/Fq Dp8PqߑVRUKauɫh0νqk]]O?16;{yu2m#Y(^u<JwEA56yMQ G=95ZgJ0$:qIԙ1n8 +P6aX|R]\,Ѯ嶞V9nrz+]gOi`DfS譃Ef&IdӠ+P۲JJ{r@ޟiÊQLr#yoZ^eE*ɴ5Z[O*S+2܀xIiZM&{Z9# NF=k- RΥDge܏" ~ˍJS}V}8D6ϯk}iڬZ] /^{ط+e.er#N7Jm<'[ [R2mu2L8acZ^+/lJ-E#'|ً97vs}{U-;S"t,eon>b?#cYוn?L>_<;]"ɮ$)!@PYTI':q\I=ޜ(wk輠98.z6+) FC-țJ봃ۑjO\N./dm6 y%P+ZⷎMJ-:` 8W^*j+dQ2$O͜c}hN3/|)s>%w;6&Cȥyn~UK:Xk;9fc`עo]*s99ZJ[C4]c1PzL`n>Ԗ;M6{V,3@&1(sz]>>ZsGD:/{EtQǴ_E( ֢+Aߎ !r= 6k7 4^Gqohk۝UnAq vq޼Jnj)IA ?P@ Ot~kx3$cBgK[6WXyg9/L=:lקd~usWOukkl[@aW1 .JPH쌆6Y qZ1-J=kYtWD#zg8pj?sV|ֆ+ƞb6х@w4;{/NKIM2!<} Z}{}'YYZkefV9=V|+}yݾi1ԌҚ_?N|C?|GjWs\DL.ۗvq6?Zm_SEE2{  Aֺ_5M>KY>bJx=*/o\T^%-Ay gxw} /wBҵ9kcJ8=8=jxĺ|׷6?hI݂H9.|@vрYHII*?4ymb=֟U{;wG=}=7.{8+*J ߊGn'Yb*C)p{" S񮵦c ns.*HWҍd٨ب>8x ;iIa2/.:5.Si(NMKusncx֩KV5} f8Z3!.%Xd\PQkN{?mbjcF)##[V%~otfOjjq>3ӵ;{kneaU bHllcj̗+#IU*PG=뭢[Htm4fo}g6x рS,/--:}FWkjH6VUIݓݺפI++weX@''VѮ侉"3Ȣ'qNbM-/ Si%d09Cu$6ͬ:Fح_`gB4 :.ǙŦމ4}=4ԥew/ӥ;3hGwqeOiM FB:# xץN<[_-&s=t2 á;]9UW[\\5D6L2䞾5Օa#LO irrr~PBkxNյ럷C]2R(܍a?0>GWCЮmⳆhΌ/pX޽>IkC|gauekcr*kgiIp_̐W)_ƯsXMB{gtY #gЀ? X/mdeUÆm0|MުnDKLTTPP0>J (Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@PW4sgx&;?sLooGgGOP"İv$1 >յCwyCT;2 gZ_u=iqXm,EH Ѡ?xoČ~fxSU  J[kEpk,H2n es\m,s>(2hewuô##((@85jz"m.Ym:6(˒잠 y;}&7O4q/L$WV1OcuRVw%8u[y`dQo4! եd7tH[u{P.]I+.Vi'[kp>ޟOD=v;Qj"鬵/m͵YufTU$hw6 s[̷eP)L/mdM*1xSj^5Ac[k $3> Y'獇lwu-Ls2PU1^K1"KvyǭCUir  3B5.G``t$t5g^[OF5o?Zѵ]@5괄2N.IܘƏr5/?h@Mf3ں_پ7ӳHҩPr:ڂwq~J̫N{kE`E42!H$((((((((((((+>>ZsGD:/{EtQǴ_E( ֢+AQ@Q@Q@ektt۹&Hd*KB@n##jRa[@Ʊr 9*۾-Q@Q@Q@Q@Q@Q@E,Q\Fc4jZ(~;U ķW`׋WM=o۬=G?3}#EyYtB՗,21N.;*=,q,`k^x#4x0˜7^ݫ,5DT,mUn!YQjytɴuw? r}Ρ[] er{rX:޲' qeyww<fL{vMO9=+ԡmB8Fb|1d.1A}s9G`OS7W: quqN+KR4/M;]jGVǩi4NC.Ol*ϰ Ikg%u:O ce7=..n͇Dn̊mh"@93]v/E wq|\s$EG=*->٬3E<%YpW,ikV_纖{o[w2k4]Q$?)8Jo Vuu)PyWpOaj], B 9x\?U뜉A9;V&ڶyTԬ-u-NI! d7:*ޛwq|5'SNd]I3#T }}k:l͙Ҭ`n 3K6D]Z-#ydsX}S<]^Ouu+ymf,A%f zvz@V B|y3wf)QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEU 5~_cG=Ǎ}7kXJ4MtvJ_~QP[ h!Imb.cA[yŠrj#ZWֶFd3$sj0Cl$3Ҵq06U)cIYXєNN~oú7s[`>yͿ;I5麜-尖E]0 2@돴ZZWv<Oe.ki̹lP*u&^d_Uұ]:Xn,m_R>?.)d' 6Sb,S%K  6KB-@BbT  U 䩤H*\ɯ Ȍ4fY.yu}GL}e7HUtLhr8]m<;O07oTnpxJ4+};q[-'US#'dzԵ EM翎^I$YMdUA x=+DҭoKx],y[h]sEkAJ@$xS֟[++k}qqZ:nqt6cr+r<ͤ'lf?v j4O.urj[L[åo*$άYih$G aׁ'h:yΙz ݎgy-0}n uj- ۠Fy6uNt06AgoA%cTGp8ϵ=-HZ5E@#'4Ѣ%6m!?ْ:mP<5^ݦjW0-f: !']'=88Vk[y-v}1ThZJٽҬEM\`⇽Jǝ?SoOv? ;Nsڴm^{;KeglckKi4^C?1 Kk iaknŐC RF N:"u( Zjr3kXy2D^c(qcsZ>]RVK+,)57Ǵm#6}O4 \LҴ7rD+p9h-^( ( ( ( ( ( ( ( ( ( ( ϹVg*'hJ;5AEPEPEPEPEPEPEPEPEPEPEPEPEP=kN{?mdkӿ+^[DݒC]?Ƿ :qs(Ҭ?oA?q>4$Zm oê"eb,Xu-5K5[a,{tSFylkl꫾<&g<)z-Vv 6pROU$ӚG%?4"wOm3 ^j,V.7SK;%*%M.T*mèO1ZkYI4tdne`;Yޣ=&Μ<B3犕s33QfjZe^[u%6RYAn 6Ok6mx.-}Q]4W,w,vQ8tK(ԯgq,Ҕ # $dի DI,E$Xpc1#4Q֚֚i&RqHY6gaʱKa X#eojRi[OD2KI3:x{Q/:dp=zީQQ]fk=}sg=H!9 u`x>tLW$@ZtGe$UZН M~IgC+cm4p5cPTvR[x&9Eo+ѢP}8]Y6a+^-܍^P:mkWPQnldfX牢fCcz%$Mn\};S2EEQ0Q瞸yxSּaK{d(gf33Hg5XkWpmQtLLu(:{T)giI^Rvt =)VWH]?WƫEfnf!M sӊ54h{.& 3#F.0l4kbok gxUFB:iIյOMi.VXl6N1v2ziYBs;"+<ooF qJ7cJ]~ Oo$W1$-¨d : @wb 4#MR;3A΄Hs n}8@[/:[Ziu4E4GRpF:W4Tң:| C#yN[%68=JZ]7W!G"*;U|g oox- Ay1$RV@V)i4!kͩj.F!XZYԭm4_$KtDHѲ(9\<^6[5B;d0q?vAMFsޮ~kV"[v=K&KmER((((((((((((?hV}}¢{ F3Z(QEQEQEQEQEQEQEQEQEQEQEQEQEs׳VVF!;bշK1-$z MQM]|{tJmv36 1I#TZvFdF%J'="]^BoҴgW ~hqۺ8$ĬLtOAkr槩Mm{,QT,agTMmAL=1\7_miwo-]ICm<1޶/.5aAyd-8#MI^B>i;Xj+e#^cc#8PLVz3GvKu$a4B=kOYSVѮ_B9S+<{tg[@( Е(R:[OWQ$q#mX|р   5aGG5,(F#jV'07%ii4N.7c*s ֫@4vDmd";UW2pxnQMJ#_ LF`($څw6`⡛ZL0-M۫HzIM1NyUއjzkZZ4_fERKn}wS<%bD gXDQry$=(%m7m4ȢhAyʻ`8rW `~/^ 5P"-DFj<5Ol`A a܍G) 6w[]R+',xoDQ \(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEB _{jXim_M?ҹ3E–mTœE)3t~lq`\''4{RM2XtMA-gi$pJmWʎN,͔ok(>[3R~RsW2t _\Iu/b$| Ӏ@`F.m 1[yA8uǧͿXg I8|~`b[o+#5j:Lo/MKo$qƪ`{'҉]EVOO$g%gf K|ga`ױ}5٢-LG,JqRqqW: [mG6D8,㾶KUF4mu"CC׵M嵥đE\5ضсcw]EPEPEPEPEPEPEPEPEPEPEPEPEPEPY? Ь?D!/=p:)G`fQZ(((((((((((((絿 iߏgެoCZwkob[I?5- 8S_u=W#>t o`3m. TjInVG3*P򠎠彸$c e[S Nǟ|Ӱj-h&V2qS4^-R$-͇8 +ntyackFRMq}k&SDof{(# fo0~_iN魇 Yzfq m'$hu[=^ݧy%x~_5օo 2H'Wq1X~.VUWWKF\2"=r};}mCUo-cweTb;2M(XKiX]|pzT1V+snl޶tWK/Td)<?Z¹5ݼA$HO2JtwpK!$޸ވ5d+,RR>Mŵ6h(޲+4nT48P1 dacg,q {;x15$oI`0ì7z^\ﺷ;GϪ"mettBk˘,0eUF02*6:yc“Qg Ș ‚I'݃ijr1;$lUzWC\8lnb3e*AlkUi/$| P?!LMP:`t_3>wqsZ/|;X^D|N“FHwqʀZZ o(ԟurY1z҂w=-+u֓J%p>_bSϮXSu-old-]$XU,s57PZ2xZdX3pIgۻ浼;iz-]Z5ӓCyzvj^"􉣂謮(yojq]Z$AM/狵\Z>[:TcʃN=YesAs,h pN< U꺥q !ع9f 8Wu{t{;-Ŀkhg+hߟ|4{YM%-X-6hrvv¤qqBDK֧8on%Glu!T|bX_[6qZ ʶ#KSux(ᴼhdԱd`7QxZ[fKKz('ao;HA# BREX+ҙ ֵ3pjo0/C:%}=-Oq4U66#9G崷S*mPu]#?Z-zG]:&ӋˋGHx;W9_mdo:ObmW[iB? [ۥЁ$LhLc9#2kl-XJ-EPEPEPEPEPEPEPEPEPEPEPEPY? Ь?D!/=p:)G`fQZ(((((((((((((絿 iߏgެoCZwkob[Y?CR3}55 P oQECf$$OFE vhS$?/PT2 -(R" ; O 9f"Ai[twrF'+)K,K+F% }BheWꦸKɎq1\׉4%o*dҧHTZrq);j+R76e e!-8ik]OG2!eHyyNAZwv*yTP9YfTY$w8 I㹮bi.Xp,#ڡK8f z\j^&|n~gBh"V37 e1{JV&Oj)%4zX?ԙUHjkzDžo־\m]nrO׊R\v}Ey_j:٢mt*H8I=5z]_]W@]N30^RBc%4̨Ih}A%Ťe]f@lWEܷ97 mڻ۾NN~4oD{!W\xVK[o$8 SӹF3ں QW[P[a 6 u7~xj.uQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEB _{jXim_M?ҹ3Oٰ70޳W/Kָ-ޫHVK<ۭWd JC4Ś#amsc$~7\gJ&="ֵKB\X4-[Pcc+?@\O udnܖv0ylrzQº=t_^u(#ԡ1A/4v׎R#Wt:֗` iu'(vm{PcEqV556!ddYˆ m'֘}ޏ'N-eNdg,pK]O[wy9#QAaj'uƸmn+B'isommcҩkS]kQY9P=Wmy\;uvZ^kj"YQlMByt ]ڊ/SAi4B[ LeHє* SQ11ӗRRmnl6bs{އhREr=iosD(Egfvp8sU5z}3MV-nGeu=I9i=ƕ=+{ iQìw8\Ž\h8;{aëEJc%c~烓OQ\ vK[8B ?.1:GjYzPDUKrz`B:\h#Q5VZW6mc uM[^'}7N+ˉ !W2ʸw]SAiw&e4K~GKf(((((Y? 4CǴ_E/{EtRj(QEQEQEQEQEQEQEQEQEQEQEQEQEkӿ+^[Y׳VQ/ķd}fOjjAs!>=AuoSEP{H/!# Uk )ʒ@lօ\V*ٮa5Uv:ռ'i %Xn9 ޿Z0 њ+i¼f R8m;_1ڵT +P )-#ŧt$Z(6ѱff0 bIcY#&L/bK8]Ց1 [&,H qXaHfbF9;즪xšnY۱7kbH(0Dsp:NBWiYE܅ 8PN VzuWq]$ r#;~ao.eKY7Ug۴H˨>|omc˧jvlQ$uuV.Y\##ڀ:+oM*{řTmTI.85 aT k1JdgVAGmEr66lUͥlӻ 2,$aQf,ʶ&ؖxB꼅?#|vwWRj0N'kjQNSxlxe wC@KK\[ܵo`͈grGnqi֫_ E)IB:uPݕ+#bkv_*!07T1x[=5e#5C`Ek-Rk\9tHR҅2rۯ"|֞0)=öu kMv]n .rW=WEfZDaq{ `p~:- mVTiZ;fg$ ;Er#N=scnn#u  a w U5_^qb4YHmd._èCFvKmo!efFgFbтJq7k=.[0 G2M=zd.s qƒzz42}ϊhiI5Fӆ >%v=B:GO:J$09֫x]n!;I35Tp:+>%;k(XkvycAjH CӾ {VcQȓ sjvEsҨY<_$:l˥ٖRfv޻wdnzU[]kOkj<ιAO\3n(((((((((_B K93SV-,b1D#Bw 9?cx64rA^wbĀwhiڢ^d` O~ЯgO#lϥgsn(dq6wbkC(ʪ=p*֛~9!&?:F{z~뗙v^E-n^kb=PT5 \_,2|8Z=Γ YGw,,ZPP\kЗv(&]-l9qүq;%?iۉ8Vlc%O\x;B( XC"@Pʃ0='ܾMwkFD]“R_izyBy5K)+F̅Œ<л-4]>{[HhodqWFNo15֡qHѮQ9& uqrD](Xv׋yJjaSaUr?/֍wٖ=M O{mHDu {gR_hWCXWRNHb. Ay#GgY3De$I'>uGObڽ^uԖaUBNz{M7t-*28AT5 kRDC=XR?7QTn<} y[iWwVV,6# NII/ZI-n2ȍ*8sGQgš)`BTHo3;zg=8z`kfmDV Ԓ$k|b'ؓG:j|(mn׊OLil{ Vo2ʉEC18!:q2[-F)^2%H$gt=04?d˚uyH!QW9wMd:d& #olp⬧[ Om$2(Pi KlѭiX]ZBbk>sp*o^7H4c/([nsJާ%jj$7Ē,^ڷͮAse-&*^8?p57ZztW~/͚q%+phÚS-h~X9+#fr+$x%mt6Csv, N[haJgyleE_'$lNLf<)AW42Ϸg?4C?/ӓY>1kK[:]ETXXxxV6w c89uam?tanP(ܒ:w(8l{SEEgvqveyeP)}E-hDaG#'y2d6)SG_'d1*@?/ H'(oKk_%XUD GNڟ't9L9D0 e #R sƇZյ8O˜2˨kĮ+ܛ] d gatGLj1\X &Ciج6c?k"cN]gw)KztoVe- ȭA __z˟J9Mk]a, !cx8]=ψ[[;{N;{24lOZF ڝ21挲Ha@'>#ЯKy?ilwIl~B66rzkWm%BE[˂7~lۥ^]ūZ5n#y Ǡ>Ws[oY%+ #tv/3?Kx⿖񇗍Âx}~ 32jpeXKXo`1_ZWI#9&"TڒD0u? y}w4fhBA##p;qԷim#ɹpDXFoP~fZz%ܽHR(vfc>bj-.糼M/9*3Օ dG3Mj r8Ki7zTd[qnDȌ28鞕>%.lU{h$Fc9xA{)aj-{ jz6 +#9̍=RI뫻S$[|RI;@@k7tn .'Fy`U @mE_-Zݶ@e:->F7<} { C.Q+BHذۜ0j,vz%]>c};LNȖ1%GqUm].bW1ܕT 灐W9tkOJI7o_6F?NU%m-ݓ \ė~_ň<#Ӌz,lZYv0mSMF̂-M#[͗ qBIˑ&"&=j< ,bAUOҡÛ,6T1׌hPD> :KMJ::<w,mR`K+HNA1uRIӚC䂡v TV]wIK"?4vcٷ(=(n^a΋w[\iYi0v׷>}8[UZy`($Iك۞[Bʒy GP=I?kk+{;HҀ}zՌMYŽaH1BI!H`UgGl/2`nfV<\tf]&.`x,yog'U|3=2$-Gi yi9?pAwt_m&?-dmqyu ޶ThqyIf0F@H*=.ffhwGXm[JKK"XgAG*%r<{U󥺷 ۵ep Qw#ݳҵlE7-meZNr;}kd747 f!WDx=w+vՊ<z~ewQ[Ĺ@Lb 98n[~}N=CMuơjt;\ 0>oQ]=ao}o-?!Ie{$[NnA$Rdn q@xN.̬rms)P_;@6s>SaI|fUo((e%|N٥Y\݀c`d#=s9TM$m^Xy|`~}>R.đUC1w0 =sO}0a;0מ+V³ڛg{n-th&IG6pA:ӭ Xh֟lf]59ك tu^1ߥuSz M x"Ch[Jm {X; =y6pj-㱸[ngRmJZ@rpxJxdڐ}Z|IK2nP8¿b@Ax_#Ru`dɢ7N6ل 1mbj> S[n\5yCFTY poLqvRZ7걪%辴k8޼RxbV;c̢{{_ N y z寅ż: BK3ggx"K9\]Mr{##;n66Mloo!h3SRCK@(((((?hV}}¢{ F3Z(QEQEQEQEQEQEQEQEQEQEQEQEQEs׳VVF!;bշK1-$~ MQMh{zCc=}jz(($mQ(i>U=q^A;mA㻹FIU0s:Aw NvsW5=({yN酑9gz}Aqimt6L 6XԧxSweM-B͉¶̸Z]Z?ɠ%g4^Qa|@ d)o q!9+O}P{yg\u׊7[pz~I/j]4{&B,ۀ9VduMA+X|׍%1L2s]j6re V趖zƹ|5[)r 4A69Xˑ':WTy Am&c x;n9.ϓ>1|g)%`zij6Yd{;f#$`6A,t zזm$*6WׂG^+9d}^gyD6qw@RAOҵ[47.OW\gH=c91) (=^@qm`R ѩ/װSu]KCX/ M道F\ -ʠ`š VM|?ۯ-ݶ]G{ይW]󵭊BKD?i }8㎘5R [kwq@m-df1FT3*N73?Y% k@,ΌpNI^YۺGe>7zmsRմO7|<ֈG]+FqX/1Y:G* {m>WuERoT_^$/kkn;2MJpFN=VZE&l"-w>{}P K0,4-s輷A]^SlSr  s9׬Ϙ3#X9kѝ4gv 2I8Ui(-y RGBr 8<~`}Q֟V[u!'"'SnTO@H5söWZY=^V<ĊFr85 }Soc?7$H8 =MhϦY[o-Lڤl1 9⚸\/4oZs\K4F`~RrsZx~<%|:lx?A<70Jܫھihdq2ǻq3Jm/fQA#(O g\V&]X-{kB;(b"*X/8'Yd@A u;q-pn8B; MUn)ysVX;qgR+ŹSٚ&N$UbpFr8BK5i:ntSĉn^B)'05kkWz~2 Bc'2ѶОz4s6.D}U;XuԹ.n%4j/Vۃ9|v}{'. --E"ͭߏ8FGO dW ڣX!RbЅӰe.I^myߋon⹵X[0Ed9^YzƉ Q4p895.Z+^q6Q|/+?u~\wNjK$_2c=L4ȶvCKoԩl@~8* ii6 nY1ݘNߨkȞ(Jff ?_βx,!k XMm(YZW* v #3*9b >F^}=+R %*'+cF+aK2+1`.K{ռ4%C[D'ԌTQ>;TkŦ^:͓C(]ڝGAo-M/F岿/nD?B2Jdֽb+H]+haaN%vsow]Joj@]6Iޏ8E,k[ns$fNmAtpڛ\[y!itWE G q/]G*jZ[n(w˷*П¸n4[Gk.g.qjvcu[6hGaXݟZ] CM:ukzͮe"d| ĥ 78̲ͩjO;x8EzLK2M$1d{SI֟[K#̧1o+P;yY4TF)85KFԯ +NepD2zĖ In7o ?7֞ H+Q?wB:y5PPG"K-R(4X^L?ȿ?֕F۹9\ڏtqu=9YE}jKfKsYziURImcFwp;zw2ZAHoxf+| hzEj ^i%m罒-PNx\^ej_ys\ZKr&eځ }ѤTKxH2W{S1 mZ&yM|5RImIgYL qHcbxC]Moquޫ67~HD1;qkgjI"N]c-ߓޝ%,Ad`+]:]Ybn-Y{b(9x֭}^=3N/eQ5;v$#YxQV>X;W;xu+b4hYT:sS**.B@1Z\V8_5< )cV ]sU w5nhK0P:u9'OdwQ3$JmZA ۽Jˑ]3NovՔ~-.-y%X"*IulMHo]BO2Pʡ0~&:Kh&$9Fd67De=DC%vƙ5쫠d>BYRꢛNyOqnQ|wK j^yl\ߣc"4 C78 ϓQg -pŻ ykLwYVsO,>$nM:Av3?}5ch `?^mdyF=(Jþ]u3U8^5QH!MXbAÖU^q2@g#3^%ҤAȟq+=[Ku[x0A}itpZI?.x;]CmݷrR%};Lst< -(u8 xO$vvĂC n$Eً+Te敤bOSz- H(QEQEQEQEQEQEQEQEQEsG ϹTOa=p:(/vkQE((((((((((((({[֝1Z5~?Vz}%%5-C7߇CSP35_:M-B0;wH-XuwLlgટq@5=o}?$ |6 ?,!h.C6gmĜcNⱅMb}:O6+X8揩|Lx݂GJ]zW/{4$tדIi4K'AEB9YZjZlixّ뷷6(ݼ3Cq42/I}m,$ "λD9BIPFq[-lkFg[i62=x3x*Yc HF cҴ'ӱJĺ6 tpS6)ǩPwֳ]Ɔ?\Oo46EbV@sXn?9%BHXd 7%Eg46ײD!yXF8 zQjbPk 0NZ39"?$-56kq3@jԴ}VC;N?P)Z4w-tɤ-l㹷^f?Vum v-ZnR X7x;R"ɵA·pj> R9RKh brLgT鎃ifZ4/S/oqpVVJc :YpH:xO[&K `aa0H5<2ﮦ8y v1d*F6cE%߄R{P_5?1g].3i)+Cv%1pUb@jgo5E9G5j,rq "Ite9jxV)-9uMRĬlD.0GPA8#kֺo~x>dc 69'"ZnEbHhT $~uD0r\3$,hXj}qu4%*'bI }ճFf5b#F8#]pT''LԵ][SEWK}`EHN|6%IۏNk DuI;VK,plЃ ?Ok !TVyRC=V SG.Asjn[8r@o-',H9]4؃4j.%I9YnV4-gƓ\qKu} 3 =O !,xV6Z1$K%^N8z5sT`լ-...Ȳ>ZsGD:/{EtQǴ_E( ֢+AQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!;bշxZ4MONR s+#Zִ{M7]][y78:hb[VoԵ z M@Š(o?G?oFZ$$}zKX7e`U '4?S_]A46M0D|8m;kx0`N}:H:}oixv ]V[5ϐD+77RF8+Zvӌ fvuT7P$`qԷZ:5ƪۆq][oNQ0~GeEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPT/6 c+?A5)GE]WUK$HEI+H.E\7>hxRDwƹx]|C \%8OFRy^\tqZZK˸>T5O>"Ok{x.w,P9* vZUKvϣe K ǘ '<N+@+hOԣM>b5#ٕ\aH#w B BOЯ.~ʶrѮJ6rv]vBOx,nrw '[W$ܨ:SXZMUhc BoqV-5=ICPF3JnUJm{k{+C \脃Px_ƭ {[0_CnH<:4z&gmwZEa3qqK`($18m;fWKi!6[rً $SOfur ?BﯖWˍp{ojsHMv8u'#gxM𽵜QOwm} |?' {]?TcNfW[*\C{۸%d܋upYGwv[0@H;I'cj S5͵8ʗQ%IA'iƈ'9e/6 jต-xـwq^ھ{ +E d=]o7?WqAdm qI;`qQ'u$msa,Ke\a {#Uim_Wh@ǒL\։zUԵ[էRgXÑO~Ak6{R A&{IuK$i>OA9ȯ4 ֢c{6Us#^:S{֓" RS Ͱm9.@u^<%8I^b"pJsb!+x$wy")`;&6KyX \ & ?*I4ÿw:[Ȯ&8Ϧ3ϡ']?Q/ k/pxj9u* gmJ9 ̭:8',Ҝvŭ"3aW'EHt+O|am/hÕB |еk z4a}l,_/>q׊K-WOԷ"e}:Wm}-K+ȯځ 瞼;HabCiOERQ̫“J"; <{mhLגΡ7c/8'#N=FY%эMeo1"=#|9IZn-ZK@t8DʩqQSCsO,N7+#y?k?k֭$pB}֯x'~kv=nMcx3Wi&3#H%䑎\ ۿ/Q <\mdg9Qx G9/ZEu+x6]]ɽpN)^Q@Š(xS+Kmt.stU?kះ_&}(bc8*88dh{Yp-ĻFp9+?WGRWogޢ_g%$C]?)?CR0(ݽ#ߐZmA!$dQ)V_>ئ6:y@%)9Ph+s+\\ y"ܓcea_SBV/bMu֟.kmʩ0s~(ִ'][#61c@kF`B FDbWb CS'IJ6ѱw[X ̢Ar ӧzAe+]m bb$nl`}ޡ.ȣpd Ub34ytWO6#ĢYiHyդzʓѦC8pBΡmoIK>d9a޼NQk7HAGehT," 3gshVu9Al-Z3*#*t#=GKդze޵X+n {֌ѪZQeǷyQFflmeh^D c}紉<[k{i"L+[]i)P#*za7I) ((((((((((((((((((((((((*T/Ա?A5sgx&;?/?V(KhT$0)<5b *Ƞ96PiwVLwĐN޹JВK&A&F⽺sF d%a = O-\6=ߗ,.r 1q{՟ ks\-'){.Viʜn[[EVG+'POAEqj|  lAMg-Gr$ǖG Nk6-i "x'ku4-D@AU}EGksm${ :ʂ3ǥ^QKLsF`A^kZj\O.{[8 ¶GF Q⽻qm}eI` ь9aMѱ!^*A3cOo<<7 c3 4 iy=*ϨML#kX|aF7 cKLG-CtҥMDeb>@p'#=百z|wVs U c+˲(%d/zz5m[mBddMk;Gf&EͳGu֌uW7C+0F|[J072@=hK{}f,\+h}۠fI3Қe̒/Vs?mV3\#'̃i>s,,זRwmM?%BQA.{pkO{!CsoAvG )@S08 f=qcyWb8@)hN 2=q2>_7s&n7fX Ã)h2xYu)u~ܓæs@=E}F3˸t:40D/ bQnJ^+]x[BB@73RAB$dOIbFp9̳8vg`h4|>oҝ˓J8#/VK0դisC| De%X@[p'#=Ilm8H#|}BQH(((((((((Y? 4CǴ_E/{EtRɵ{G/*$H@YHI Yib1ז*+NKw<&usjWU\|$y9=8? bCpp8+GNk(gJ^]#^Z cp:W"<{ tK?[b*H' :(:7{.COo*M{#|b:; nJR5"=GO"d8Py#C]i3Kå>O|K{a3āF6pN?hxI-ͥ[9RAq~(𦣨~]ceb?'>%āF6pN?z-6!v7!mm;o+8"/ڼ=ݱW8یdB^#[5˝GZ6k$ 9`ya^k[mo٪s<^ ynuPV—[yP`f cK? x^+mk@9њ."ca=t({ם_ͣ!]V9Y8`MzU6_<9Hl b@w 'ZqxfMhhh*rJۢɰQE ( Hw҈+6"J#?WGRWogޮ#@_ I]z}%$g55E7߇jZQE5} 2=p*{l#t*syzuĸ۾X"Hf3$ehʌU5+Hҁ_a~ ۻH7}fPCsa%0"'s]Gql;9g  ^B/ɒe jM:c}=+NՒKfm1I8=)5U[;]F.Y|\GOp+;7~n,7}+Ghz:v_{J+c4rg_< 槹]ފsS46[}v[.tY&2audèUaF{sP߄fo$ NDk"^~PGsGtW -ݕ׺.8QDevx$9#gۊʹuԥn-LpD.'xdtv#(2J28~(ac;Q\zdO-Jb6O l&^xJh[ QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEB _{jXim_M?ҹ3xU 65ܶ\$S$hE `A@8i&dP cs{3,QE(-^7uI^6Sd2zޥ1*>Q=t_Eh?ΊQ$+3Rk⟆kQ-ʨۇ,mBNF}+Ow گO8sZ/?)^W?gn?5Ma%uWOk{]1Nzw5Ry{mI@#'8$g|W q+exXF/e C9_r@~xIDo $YBGПz/\}i_hyݝlh> K]]hEM2~RT H(Zzl\Ys _yJ,jKH,>lc<:OQ񍆛(1,vVi\c+ƞ)vUb9B5]ro'@8׷sh;A_#ׯA[.:#kD񖙭1=:dc9Z|=-a2^]HXj{_2r{<_5tw fT?p1?Lp롦>^ԬW[k +Or}{Tz7h~u$yѩU`pFYO#޹ Nj|yw ߦhG[&`|Q.9 2,7&=[iۂА? u'>vp9<Adœw_?v?d?gn;vY>4z|K('Pɿh Cѵt;#_h[ V7V"q؂r9Y?oqV] e Fz*<=kןB5"Il!PmIy+sx+ubw7n[Ua_O:Vݷ\y6&m;Wͽ |a2{s:fxJ/O'LTЎ{bԣ˦wጳ #7;r_>(=cOׯ^ ͍Û2y^j 9g*;z}HOY_{~/Rk6|B~$i^G821ǡ@=JDO)VXշՍ20e`H [6%~otfOjjQE5} 2iǼ_@ =7Q$UEUӬ 1ɖ]ʀdҍJ@Ѡ/\QI=; {kq,ryjC!Vaxl=Ί;)mfϗ*lueG-1@* HlsǥA],ܸ#sl`汣َY>H%aNVLuZ;8YV/I"Om|7wy+G @5h(y7ū[VaE;Y8ZD\A<Ohۢ: hv iw cp@>٫7U.lόE.zHSO\_'%R? y'O/8zjz}uY$ߛHn 2I~O;MtTAP0⡋:$6sZGZ- c 83±ĺlW24nu唇SXx[WJXlo$as,)ڋ_>5:oҭva_,~Gzi{iO,D${N ΘR=RXcm_{`RxP|J]ԕBNN4! ̡ܣ8s VuXiXye({-UH68# ojOm3H_Œpu%XNH$p8뎕Ruc%ɽرE<v36HRz=(\<~(o.+ apprAY"p:g=<((((((((((((((((((((({jPRƎ{LooGgim_M?ҔX!e)$PfPHUk[{8xR$vfx@ion`xޤ0+KL"7J,Y TVK;V&D]x{Kim-bu)PZVlOSnw8?.>bYbĒ!Aa;~B;nRYUY$ 0\?rx5 ts%v $t[>q}}ya{fv9|epvWF*árm'O[(&櫏 hl[ӥڛ(D!ӟQϵd\Jiٸ(_ߓ~-B[]4Nئ+t{R^CiUG +gH\F9oa[*Z@ p!}Xiڄ\A$ou8 ; w&܋{tyGc*iSSދ] Ȳ|/?Q֮{G Ƶp~ \3\a1Hǿl9\K e [2~ѷ xEWOQ Bh[V+rhK [fc*# \Mg-9$}Ȣ J\!ߓqV}Zws%dnWrzm.YEq/7h꺆DPw$I``F=A&}^mEnmAbHm>Q4WMqaO- #&78ycjy'+NǑƐ[id*P'ْe5cA9S`sy ڼ}V0c|&0 ϵ2ڽluMRIIj&!'Go֕u\,${Yo,v(/ew%ʫ;[Cs5H]K|+o \IDFmlq4ϋnV-٘D1(_;v9;4)cv.oWèQEQEQEQEsG ϹTOa=p:(/vXH^8ݏ7Jۉo-كIEGH.vyPxq^ڊj+q!g.%#7Yٯ'E$26cwSo[-,s~Ky`*xGLRŔגFN^1 (9ҷg7?>)II!\/yJÞѼ33fp>2>QB`z`hu Fk%e ǂtcVU7WLSٸ'q+9]#NjXvoK=II֡{^xuP܉Vb:g9 <(>sW,t}oPm坧b,F[wˀ_RkU]Vmtu<2~Ny1;Y2֐{Icxa95K-+Sv5")`]=o%hNi!Ϻf~V$Ѵr"0* RCq~xi/m!$ ƾqג}Zx F2hO^C(yyc*@cutQ 7-ouK hm Vλ-7zeN~Ϗ.d`$`8(p8m6cl_E-9fbpNGjk_Mks~o`;Y'gn8uQ}nEP^y$.Ί@HA?:Hw҈4/3Xvi]zE*E%v%~oԵ z M@Š(o?G?oAcP_mPL28utAZ|=2̗2fI'[]ܳUAIzr# bi spi- :%үo59MD-.]u%ssHr3|CmbPUyb!.lڪm+,Z 73ۘA F}3ޛh1_ b?.\!-Ω%%ݧ\Rv`8e~WSDMDmLv R/&QP2,"2m.pA<84֛t9ReP%@C6 \E)83;O*GeK͸vtm.IF XNy _ CάTa ،G聾V,\@c$te9~OQ]ږY_FC$h Ue x>wM֌ap<|h6\ SS96x N qK&e^^sqC!*n@錶F}u7Fz񤍗ۀT1;V.\[,Q<b 3!'ͶkD_3F{Anugyƒ1bl:)^ -/m \mCa2ORNOZBkY<l+0CaIHjOIw_NKkbvRd|m-h \<'{{=Nh'yW 6B0zQ\ݷ4IL{\I2(gXˀT3Ժ/luq2g3p.C3<7袊(((((((((((((Z_\"3#cakt<[}Qt{ [n3•$(6W=ZE CI}[I l?'lc}̞Elx/O5h1@zng9MSti$7Z|I[C1xyK}lvjW;+E.i Rtk)EU*Wo'U\7i)HDܐ7}ӞkTPZ{qy)8īRĒ~J˨ I^1'CeAVLǃQXQ[;4b&(StTSEw'a-"Xʂ#'P^A,'!uv_1`RyLtO[Ix,r@Tt%ܪ {Ox'ӵ &m;eYJ~fQk7ښq!&c뺪O[E6NvX@1뚷k3SmYO^U?Pߙ?M.Fk&)K5Ԯnn~/Tqpy|Q=Z2M0 7mN1=)מ%,L[f>aM@$ԭi[{Ma5n.'@f  }j^ {'m/XE7I0Td8>~OqZ[ܵsBrxlvFy>2ߨ-͐:,-)nFW0N̈́n݀HNulf{/H"8R8Z6U7I'K u?}9aHEY_ [ [ 4+xc9 ckg cxN/؛Ov*qt]>o|Q][M$GwL @P>7.gԵY<\M"Hx@c-),=Jev{Ge8@~UxEY?c 7(󟔟8WdfjR7H ###/!S>LN_} k9ݑy҉">%=&:*<A֪kl6׉vos ܜ\}W^k4+)/ W0pYxWOɥ]K#JI8U 09AӥV뫫JI>>O/>{{ DZf;0X$=q-狴 R"YԠg[Ǯm|95;[곦<4F5#s}?q0x*{aha'WW6񒐶2:>n n\jȳ3P9үF^24n96ێhV3 io\ ۆK(l\8nNj";ɠa")݆s M'$߯3qG.μsf/tk{{/ȸ*āԕ 䁎yG?:Ǜğ)f6Op-)5y7F4mb L`G+F_hp_}rVe]aA`n gRs4L'$19ycN-u,]]֨84m硫M."]I,wq5Njk,Q'O)¾3`1r{S4OWr쎸J<Ʈ22kj\6+`m9}K&KYo3,@G`u*iv<3y꣯j/|CK]tnYsAK_܏j7 =N=q] |K-3w% 6i5y6݂zQi$gڵu[lO-1zr++=xILk)lv`G$w6G=թ[ꉩ&%H 8<{zSz&X7i>.?.16ͪ19*νk{?˪8XǛh%@'ҼLI0fhT}"?ҵ< 4'nq2+Gy<*gE}Ni!WF ,"9n 瞝*߆|sM]MQSHb:s ,:Gr'pϽNזƋ+.D( "Yb9^r:Fh[/47>!.hZ$L+pxZOo!9 {i)q;{\WNBu b[>L873wXt|OuK,F+cK{:֙3E nHP>^m4]r/&謇˃.exDO9?[VUGT4w$jrU.xƓx u]+D޵'GPG5{Ƴ}KޟqEu)b.% zzi[^Dǃ!I cG9?xu4ț/QEQEQE?kנWlEۿ@_ I]z|1[贮[DݒC]?QE4?i8UqM9 @@;NqS-gEB*$H :z7 ^hq7ffinCf`$r{ЌbubKus^)GPzDpi[`<[ηeʘ٧V*@G,ݻUh_hVvL҄V9$q]2H6TWF* ֚y3产uMH[F&YFU[#rIt'GTHƐ\tSa}1ϮkmAq 豨Q za2Q5RRhCPAvRx?W]2n˓c+iiwq%edyVڕωtkM;6Y/L ?/$ph:E3CS_gᧇuhi Or ~sK÷H5=z> uަ\'{662oo+_X<;7l~h_Η[-@Qu}|EėBg47dqѵodx+@tjzL\nIbfX`1sf|$K-fgA,0IC]|#xb['M+nw8 ^ ln;ISkFk_^)Ό6;&F5ca?I134"H7?:w--ilʷ[<`~mѺc߻asFN9izO} H bTzcwzՖ%9 Z<;Znh\um.0 ֥kiq M}GCI͂GxmvWGLҝeg n7p@^93Vt nIag5<%%`$(}'x^姖% 31q dtM_U~$~i$,8#Qi_ Ogv﹜|4@m\}E}p]cճxgLtLġb|Ё(Ih,q?>" ~x.*xn {Հ yQ]AЯ%c7.#>~j<+e][ufcDepI=--pzq'ʸg :9z_CZ,٥Vj4FPA#޴oz/ޮG?Ǎ}7kXJ4MtvJ_~##񗇮uiH!cw RO sߧ^խiZH "3>Tbrǎѻ4Ȋjt$]"3`J9}H>Z G{7V&Rvdc ޺.ahTY&$F ~q Q%FqTk.D_3J95h䙢h\ 2zƱ ެE尿z`?hoi+tO5jƛ6#lC#cqMִ. ЙѣY'=:vڜ~֡Ӆ2^.)-Xu 9 惪_G}u]KKg5:TXt`:t70[Բr2QG[Kudžolb=SBfAL]Iz冝sukE6߻#Q[umX\jv]'>W> PF1k GpA]u5WDHlk@n?/<Y-(JB\?gPL9AzkvEn,s7ΧzwZTm<.cB3޷m-8*MGj:X<̝ZNn?,ſ2۱}qG֓4L9B8>8zVxq:jZ\ەK >zy]IOjjoԴ (|I+FmH2FSsU;=Xfq$񮦊w8QG {{V2wlֲ-5;} R-Y’1j+ѤFKx l̀Q٬ҕ{0u6ZP1C8<{Kx,5+netXU WsѤ"B2XdGƤڥ ZUŅpI VWk4Wiw^*`Vۍ ZA*ر([W-(cmm[K+9d }<]Cg&=js| lg˽ɏw_f3txu;C. fU\Wd5WER(((((((((((((((((ɗĚ<3kZ|Rt{ u j*a#5ҩ4>5r (PjV7W3[[<'̜s@h((yR0 $(I(J*{oԣ1w)9= \(_B K93 +jqpP䓟J׵Kľo`++%xJHFo#hRޙ\yQ$1Rgx Fo|!.{yHCoK" $vi݈-C-q,UOy_xVmYڼW;u-"*P|ۏ i7X%2ysN?5H!wq=vm HM0#?:_p";JŲ#*ůFH'kI˴1$qxǥ6( ; լ4 }3^| -ݴzP=Σ5ôsfns>eATd,a`A+qh[oUcƺDKk-xϘ2<VjCcOo8bJ<,m`HBKaAg 7qʼn26Oc4/0{QEQEQEQEQEQEQEQEQEQEQEQEQEQE!kǼ;/?4Z)dc&G^zKM.utyϓ _ɃtĺTQ1xmr@\۸dA<gW t]/H2Ag%{*t-5;ZrX2[(VqϚSMnى蝻o1:vm@#$N#ֺ[5xJ/]Wmv93f $=[H *̀H*56Y4p33՛+ {;t*ێX'~c6qg}}˸,рpġv5gD Lnu YkQs,Ѧ#+~ &]"n!deǠu-G֊/p۳DREsX~]6mA[;#Ew+9+,-=>{+yd2>u Befa##sWgNhqqO{~No+*WvQ zH|8ؕq$`9oYSH/Ms#E R2Wz3Zbj-}B?p@Nxj^MΈ5ݶr])FhsokZĺ<Zjh !F6&'$5/|p&Xgx0e @F,ư+ hgxٕX;)<'-p75}JlkM6WTD,azا?kE(nD4e 3Cos$d:#aC֯b 2Mܗ2s9{S潺hr6s_XI0[%ަhZF cgU UؽER((((((((((((?hV}}¢{ F3Z(QEQEQEQEQEQEQEQEQEQEQEQEo?±k+h'cRkN{?mdkӿ+^[DݒC]?QEQEQE^rm߱s8b)5+ekW)R);̅ё"63\Ň֮/i,$p3y'sgR@_űنYP#XkU*# W{)jRF8NAz8Wv0I98N69l:^9=ge3n ݥxRpN6qֺ+kAoYCc6q{W=akzDL:J1f8@C8ORyyoz\3 8,8Mr-wo^YIwd.prG2:f ߈tۋwln 1.Osz1cc5pc8擽jh[Z{Ew-^$9XpL#'[OiżQ\I5fg-fR}p^6 6k{+xgYcU }juiUd:rFiT\Gox T <5E,\6ԬW:.Q=ŰH!ؑbk4v5Q]C JevlGK[AͼpeX11x:mF=H>=c")ʬ+}FE[( LA0ӭDtj:8sڤD7\DpIպ( Khm(A=xTpi63\[<2J dWh Pi63\[<2J dMW4sgx&;?sLooGgG޹ᡊ ,yf 7kYwyJc`MZ7a. [d JARO*t[úy̯mMg~5o}B]r]/KkHM =ڳ$*V^~RI'뚆D_>vuy#x.Y52kEouo{ I*p AH>I`-$ɸ!ḧfFpcqgJ= [3<,[FpO-y>ZsGD:/{EtQǴ_E( ֢+AQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@x$O*Z 7IaXTӿ+^[Y׳VQ/ķd}zjZotaEPEPEPrʐDQX¨ũ[4N1Ԍj]V)&.#7O}Osjjh^}ZXL;+ˌ A2M4geU-bUKF֥0溭HnIY7r GxjNQ^긛Ҋ=@UǾk FSsQ׫JXbH8ּ-.]|;GMo}Gu$szr։T]Η,sIhu"6'1=*k:\Ofq=Φ5>xvF%Qq,;Vdf F0'<}kC_5#\ݥ^ZEwQ2+W WqJڍlθpNSrx]xCo/-&9dr8s\懠:ŽVWoܴo"YE8!@ :V#-_І&ܠqzcbv.bUY8I+4NTMԭ-ˊ(eF zfY魤ܭi:Ŭķ#K嘲 v^A֋|GqZns(l`qר5~-Nk`a*s\旨e+_%(mnW<϶xIH]H4JyeF@'hQ_APGu!RAS"״i"Vy%B?ڸ&mn[sY T3m\O/쵋R[X/|me[Hc,]r7nwlw ]DmZs=VxY"YQ0%s#kE6^ 6jw1( ?'C[tn1R6B4t`v*7E5G_߻oNksWOaz܋c2c?w9yǃ/σdVkD_`g]~~]6hI:cąBm(KFu'Ӭ%n!02g˜E>ZtM,ݼ3G A*F~`'qiz:>uե\2 rJ[%T}7֎f"$KT-Aq 'ХtP4SY$e^['MFb?40/۔ȊG﮼FuDJ,cfXt3-z'jV6uit[Cs%Jhyj$geCxd{:.0X$ r7d ¶Ԡ3$ZȈՉRWT:~|̈i!p0<`juCzVQ-/V793qwkz~9\+$&SA==k^=JQţlQIbQ`yjxAuDLld]ϓ7CՂr4{ԤBtm<FF _X!KuD|liF ppWZNqztˋ:XCiT*g'Kg O]\lc3ۗه) [>@u_tCFԦ;tO:Xsq=jxZU7H$I;kέ JK&ᵖky!)$wm[WҺ-*~!< !U$cNꗙM Zh;۬"_+ ?ií7>yl3ywXkƸ ^[.umomQ̿~Md_iZ.d$}2 8DU"e+35+xlc65ԭ8uu VUKu-②\H!)?Jt7S]FN.ä2Ćs# /p8ϽCOi1[Cs&fNb,NpO҉5}2ZMGrNO:' B^_c]ce{,M tqHZ][+}+Vo b$%̺LZG4O|`w;iM`R6Jv:`-uϮi6%ƩeHEB <\>j1W[^jQV#22p\n{TG|DX]7D<Ǖp‱/tץ~ (- ♨Xmw{yh-;F͒& Z^it˒v0)H`9SV/|AofƫwOwD=Xg }j"6`QTܠ,'QwOn:خ$ ˽N8+؃k̺K ̨g:Տ WAg0BU+8;RF澿=hn,/- %j0=rYQZ\h $"Uf$9 IO-*FX Waw]iz|Vd=Ip8H^wzް<I i B9$ 6e!Ф2 ɭ!Pq޼@k&[x5K!lWedTa_$`V5]k#w evvH%m{b?T[Zw]COP[ķZ[)u,z޵zYlR+icIRN2689hZ.-EńW"8";*FE\0}E:NPnu5shdp u=R~B[λN.}i\AfuH!e :RElod, Dd@J__Eigm]8r>%~ _JK_6"Cs$(%OESJ jfIK$-mJ]A$D@H dk񛢺Kl0y2a>c'ѵQQ)8̈TOчc?5l>ȯiM[8ϵ>]gL+uH%wB>za\iYkzse=)#ØѸ-A$^a}]%{s&Dic/(a# €WfRk:dKljVhGӨtɭQ\iu+$nNۨ`shg\}]B^˨,$ OAU+_QVừ'R<3 ;Gw90sG[K^/No;Xln G 3xz^}ӎGm&}s=͢N#Y{v9څ=iuMSGc 12J{T?4|qwoi:&׸H.V`Xp9sEtQ^G6>p#0}m8[a7;Ƨqm3ܺ%R9뎴Z+uTҬtMMZq1ӽI]>{9J= q@iv]Ey ZC^[LC3m$3.T3] R\؏2}A(ZMή(({aaXT)|biM_2@# @kN{?mdkӿ+^[Dݒ5- ( ( ( /}G=CPBU)QDJt+}Annϗu]Dݎ#;gֱ|55Ŭvw3_hFr}j#1D܋ Ҽ]:B]]iqx5QIz57[ʲ ܎!\_YWp@[&#Z=yyA; HehiW:׈oQv<.3Ӿi5f'@ :[qarXE(!bǼ7_qn˩zd}y _,FBvǭ%"FVr)vOqL uj&//iYb=9;CU4]5׭%U`>cw~TK]⦾5 0U`d21Wh[o9{/ϖ3Qѵ,jvH8Jkv̥xBյ}BJ ܣoHfd\Qa>>cp`uhzfLK7ՎIO7)m|DҶG'k⤷[+Emwk[KcH7N{תfMfgDa^]3~ps;qS7}hu"Ibr,or r:UG4mCTUFļ$x^zfb,!F goWLU 7Eݎp &qq4edmA=3Hte1c%$&cG0A)|EXkjWzuvIO1Nzϥ>4JP31IBp9_7sZ(0_NtmRZU?[G"ngr [%>rLs88cXEDQU{ y麓#iL WAOЯb@T8q\xS- Zۙr0H۷oyi.Z9$vI{5CЩtRn"-g;X/ԦУIl48Eb1Z5 nZ Z( ( ( (qi7hiX(!FN=W-YIg]ld} z,EPEPT/6 c+?A5)GE(o23ZԿ"*SPUG|#3#\ۼL$Zv+,JYϯ@4(JN$Ul#CUyodh2F_=9?<7"]"d6$ֹh.ʁA⣴ltVVv1$*)>Y&4}FFXn#{vUM+d<|gO769;Nc{RM&S455 XZu9h% Y#9RG< ^5 ApYbYDG 7?_U6H\"DfAbh} KZ4dE;{F)ͤ.3${vvRx6IeXfvE{|0`PA rm,]+ <ʰ2“H=i^//%Ή,3&w(r0X`ƀ 7:Ŭ$rN> P1AQ.^Zk7GIO#>4 Xat!`#\QRM>)! L~[)V4p㯨QxZ9HȏΆMAl ;H*H{d%,M nʥ.9_OMc[;~g-n [HD0P?tdՖn- ̒Hp g#VVf_ZrOCR*R0sM ]^F[)Q2Q3ӥ3J񎯪YM*[$͸hUd( s|Vm"_̖7kuLdA;y)pznB;(\spͬd&21XxMwbKx kYcgm_RX)E'Zǧc.ǟ9>G#mxEE $* ?ֻxahr^^E4+w#TvBʸQ瞂s]oH*3Ppa\;&~8ZgЯph>#mv8d\y f:1}O?v/ӧ5vqZɾ  <hīlἒcJǟ7>%?kaD 1 (|ZB|%IXOjgǛIPr~s8备AÞ/]m< +yOFG3xk@;DdM*]?EҴh=/MG;m`XR Җ' [_܍<@cGq@%c,0;H$u~uW&BFG5.VיƩux Co ^vLc=yFs:Y#8awr3׭fh:>mwkby_Gspq]/Qo=:M‘ @>nA隞}W/4]֯Iz-U'᜜Ωux Co ^vLc=yMvV^ [iդLYr OCVnA隿o U Ƚ(&?q.vAf-Nj5/---YCNN#8oxRZ$<  $sۚR` v%Nj=GQ䶵c鹭fLRrAVx4JڮAl( WOx-z]B'L~Io0&*;*ĭPmPdD@8;OR:gҼ3]^HJ%\8ƒ;1Ś+R^Ag^(ޘ ǑzƷ{1֚fkxfHyyYϫ[]ZXF54y`A>iG9<iZ}MG1`m_2뻋/Z\Mo2`I a\9U/c9\ $,$uݜ +ÚK,K Jΐ̅\VD>+Լ _ ]Dl"|PgxO?ScYVx mtWPԣ|PIfyjkWtG׭.\%"4동9xSQ-Kjt@˂@*қyꖖ2\ڈ8VdbZk~G.9:^iDpI,IWIg#~5kndOG酿r/*d7>~SoC׎n.[W[}OGTLl5~tr@) ڱ|m>ciZ:bXn$rTqqs811=OP\ֽ?u{-k!a : * NAl]1OJLhLooGgim_M?ҔX"QV =/v9h^ Z&#hMyd+Z/ҙ{T\,r>+Tfc-˺(S(P_hYn-=8ޠ9>m<\ː@RH1zq]7,8mlwLHG?N5?/l].]ɒ V  =qX״/w:ΒH ()ӃS_ږΥi%s85?\항˹p>v g@pxƟ5d}6q@Y)Aa8^\{eoMueqSOXCrz-m~[wEzo,-&_j7=͜w7JnDiPXpzJ heQxe.m,_{;gsU;U9_ iIiAiebN!zߌo:ӯluwgsnN&&@t#3ᆛ}ˮ+a,cd>n-_=ߩO1!}!$RJrX=N & 'ٟh7c=kW^o4Y乕Z>6,9 Ui|ZK;bk0bߎzlSk ѵr! %auTC֭jXXCIs{.n8<[TG=xk_ ෱ңhdYn?7aֱ}7Yol- ErB9#'Kz~%E֯!ůZ\KDi3ׂ1r+GZܟ총/T6+ͷ8^GZM.[OT_F1ʳ 8ֆ_IK# ӬLcS8-W6|S6-^ܭ}P9Q8W$'xZ _i.4yhTֺY[ŀG8Zr - Zpno;:χWXާr3"8_ sG ϹTOa=p:(/vkQE(((((((((((({V?-{x$O*Z iߏgެoCZwkob[Y?CR3c|?Q@Q@Q@ETXD:(z(ZxeA+ʅRMQHq=JM8ϥP4mGNH&'  x1_M#l5Vkϛv#fqn̏Q3ZjMl&3l4+-9xco6( ە qx鷺POb <9T)3 Dr1Uﭬl廹c~Zlp =M.'Ҭc[4R#@Ȋ6UTҮ[DҴe5L8 r~qf#* Rkn/hw1$=(tZE.ϲ6 (]H`#ɐ'*׊%EDmkAlUp#QݎajkS)@Osp =cQs*4rO)}i^/`0Yo=ï&&r`On*M?÷Eim~N0$1Ўx#GhA+E`യ4ⷸ[[9!uWiKd`K =נVkh`+W2GmZjחqlbF,~ [U&AcMgE}PŧMim3 IJ.;y<<*yMW LI۰EVX_r9qڻZ쒘l$f"U[_[l^1e?( ^94]n/Mᶊ !;v=FNu FͪGol,B+WRTt]:KI#?Z`e? +gvkᗈ,-þ4bo6 y88oy@-LQ2VǶ MwZgx&;?ZM6()T.4^ 82"Sf]+'ul*ik!qX2` z_ַ}öHnQԭQc*ȿO{UW7QkE6UHSBCZ!Aߩ$A?({)oqfP&EAm9rӿJ9x=B!-t$vB~=xl9,5=*}İ'iV=#YcGo<ڃ$kˍE5!Ct Dc0I\ A|GzUsŪ=ۈ%d- spz8;]|I`5-..dSN9uS vrm_LZXwP4Ec#XSYxRo#HLO{1n0Ec'~ꫦ(#I)m`ujzhd ;3%@dB74Qm&`j׵G[ld͠G;8خXh9k/om2Z$K#╜9<+D5x20`rVmi_Z X}Yvd++B(*b[*`GzƳ^g.oigm"MZ}Q]\4:WR2Ǯhܸ#4u-%6edDA-o gx<`u]UaDݣ9Oz OօuCS-U,Qdv ?R*eXƀE! u QdgҀ(((((\Lj$|Ai7m?|y[ϙN3c]S+̼]wN=kĂ-7ԏ$S2jq~U-y>x[u.KkZԄ9Ǒ^@Q@Q@Q@Q@Q@Q@g+BhEh?Ί4_QEh ((((((((((((EK^^KBqPd[1Jtl(5~?Vzص BTe<#Cgޢ_gnf KP (((*FGUa5_(B3En8q^kbhn+Y#\t\GpP9OGI/bgÕu)2\SjI *:g^_ F.48-O ٞYo"LGZ~mۘm n!=:Sa{ȡ5̒AV$/W-ۡVXDGq4Gye7FlsLQ.Mٙa cm7.훀8V64kw+vYKkf jEFs=;W>M ˝*fZUt*O6|ui\JTHyro3`1I8xjɣ-%K--Vck#ֻ(z8՚MKL֒ͭ[<"xH5/$(ѝ!n9=s^Ex:lx~UER;2KGsXu+k+9-k`/S9;@ݎHJwǏ\ZD_SJ&Kx? zo۟~q\OXSViuM)eD&.r nK$nYx`#O$y(`C,Jd Ltko=6'B?8=XJ XGG8 T* ;PWs̼=pc%ֵU6\,Vؕ}& }6[K 3,F;E=ƞǎYv XҞK;h,_:ќF r sfFa ytH,cVrBd<ˮ2/3ѠNt^i.@^([*0hv55+jGcc=-#YoY?O5}KHx. w$iDr^EP;k6ssGL,q-&Hr~\9Yo.keᶱdu[igR8H)X]iWHt+'UVf}jn2y= Q[NKҢQ{wy`pr<uʑ]A Ǎ\NOZ|4CNiAj-x deӚI$"R`pNT_Zo;a^$[)EkNMid-QHaEPEPEPEKRԭt6PEmoW=@kG?bb$f8_WנkO,V$ *Ci B2v<z_ oMknw3ǿb0-?)'Vϛr 0r[>_+J{.%Ovںp:K@Q@Q@Q@Q@Q@Q@Q@g+BhEh?Ί4_QEh ((((((((((((wGyǾ3ЏppG:(kms^QuoOc'8bA1^ܥjʓ*ȡϿ5kN{?M"]I&OjjoԴ (((*.|!zEB$b h@)<_=wPLQv"aQx55ÃX h hû Y$Sڭ-Ĭ}ÂNqҺT7׮l^du>R?PіmLV$LQ=y'W,tkT kj;(w9lC[H9+*uE̱QR dKCM&XLr[o9= ~G FIfo%FO*8qDt{.meonuNx8Vv;xnlu5]v]f- uDr%B H88B\+jڬ E \v${Mi7t&[? )fVH5~Kw Kur3 F$h!5>ݬ~ }n#K!+{Pj0^jByieUhRp һ? hv_h,q9O9Km'6h6-20] d3|Td2qvj㖩t9u{ +X7'ϐ9fۏ sW#uۍj uDVhe[t-"j 7`j[š$tqtI@vps`$Z`-q䓎I:n>7wZE̮uٙUb{";N;ⰛX:uh~ >i/9 Su-.V6I$II9<LlKleO4ט=9mRM(]M]ywZ[YZ\2gjI^njƙu.so4^$GDJ]Үk$6)QIRI% 䞇BV+hNVQA':Vmsc\֭t7XR5$Q ԡpwߥtktKkB3ē**eAڠs& RŧDʮ T.{ ՂP$QDQ@5Q@Q@Q@Q@PW4sgx&;?sLooGgGhqҙ{T-E}#R0}} ˶6nFpGzPoTZ̈́a)$ԯyR9̷̓2[wm`DE)9I^x^[ )홊ѴeQbרI]YoGLP&ڽ7&Ob֕36k;;CNI⸵:>-'جI5H]+cq9QOw6 Er {Gݍ?l-#ƶ:gI`T 1P2MTUS|A>HẎ⸹HTXؖMynF:՝Cyq n r²6rmϩ]4ЭVUNRBs' cY4@\)MC)9}ӑ#Z9-GējV:['?ixBOtr[Bp.+N/[ OUc 4r {ȶa5Rdru/*K5{Z+^o慤U̖7si"bV0F<9.2RBtnmj[+}ÞqV%.|dmeed( WrpGaךj r6X#2Am;t$+YesfdY!t GQqmHgWS7w4T\P(((((((((?hV}}¢{ F3Z(QEQEQEQEQEQEQEQEQEQEQEQEQEs׳TVF!;bշK1-فxN c%k\i~,WUn$qdj^[Ȧk3ĭmT<ǽmXY83#I݄rNv/<{7"zsیIg2B#fC"8er>\[^{pZ y6cSzs[?hm(l՛vq\%Udl{_o4{ܙs tp:Չ|ptzQԭmo"{mπvGCdv5=[mKOcg$nT1l`~$1=b$JLLę1#~֦oؗSuiuu g B)O<⵴zV9H-6e/ LeJuYw>~- ,]Y8lHC x&tmP vڢ}:) @M6VaM$6‘škd 2G5e}kg]jvE$AtFC*n"Roъc^ 5E2Au - xc+aB| 8].S5?x;2]ޭ~ia,Fi)Cyr)dp –#ҟq^cc{&ki(FCyݐqZ_ ]J':[ זlw~+=O<]D(ZV']=oMݙWݷ~gG{j,cyg+gfi=Zb3̑";UBG>{ÚS:ĆkenJܻ&o5Y&kZJ`{_0jNA{.2s1 "S ~Oj:Xk]3Y[}0]mF rj"Q EeI&B#}[ m 'M77$ 6C%FS;N 3IxQJxo|-V%X1 27 0FrGEs6]:N5F* ]R79烟j.Dcm k}VPF"⼎G`]-%smA adծ YSgˉfKEwߴ)(A 8 =t+yhgX3F]ZDBƏmec\̍ B<yxYV)Ϧ~MP,GO5(:6^Iv `$fu`CI:՝+i>.LYcQop9#o\ R^el}TY⽎6ydh䣫e|y*Ѵf&2,n+屏mحJlAEPEPEPEPEPEPEPEPEPEPEPEPEPEPY? Ь?D!/=p:)G`fQZ(((((((((((((絿 iߏgެoCZwkob["p&s%"$gqɫpOhs`psWsQԵ;itimx]Â3|}2;OYIw;C'}ilB;9(L*Ysֶ &W+]\ۅKe!e*93#tX亗oG=\Xh]Y' ~ݥsY6ӭ5loZ+hR6oI2Y_n }GqMMF#TI}4[\H[jdz3ķ:..xTHr0 :ƺWOo*.l$d*o v Wwj`nLcwH?e|t!e9*=`p:Vui7yYs-ܹ$7]lwkiw3_[_A%9e`dӃ,k$lR;\FsͨyU WY髩@`u6>ĎԺ\]l7ReGswrɰ9>)kBKI@VRAggF֭C| A<ӚxaKCiym~vẒG$u b]ޏ}koJ#L0[{msG|ԓxNRlM=-~, @S~b98jGsA&\}[>N䷸h8Qk~lt5iyqg1N|XLdFaF-f[Xi7>bB;W< TpJGG7t-̚cWߐXuǯ^)K{ 4'#gϽPIu}&KnBFV>t}+QLk 7́m%;>qS~@GioXI@"7 %0 ~)'4iyr|7k5[NҤ}F bѪFR4FVg?!#ȭ2 GK:L޽ޣsݹzpANIt>U @ZO3%vGsVΙmv%8m;gڸۈյop.77'qr\g5c)Ϩ&7<)}6TjvW:X{,GH(͂28\csm8{X[F^gX8w?}l;5DգnZy@NUv%ouP. J;{ `K%BD!cUZ`ٍ[Wddl+#]5g}>bnѷaq7UΛ/0lu(SM 13zSj^->pc~-ҥԥY#r<)V} F;ii[ V !riv isӤ$m03p yIk6q.3K_HYVBI aOSWkX.,-繒IV3@X)9(Zu!doM帴`{8\ouz|)lb-t t5Co"7B/N c1C ṅ&%Uу+b)ZTF3ʂW=p{fJu f֭l-#q]pZi\=̯ddw>ET5ga'usi $9$זMqQrC~X oER((((((((((((?hV}}¢{ F3Z(QEQEQEQEQEQEQEQEQEQEQEQEQEs׳VV>!;b,շK1-j(aEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPT/6 c+?A5)GE(?JdVFFI#x|mp㓞*ArЊ[XBFp>Q8; Awqokk$R$p )-툦Es.M%h a?3N}2T,C$dJ9BO^ICrV}N+we 3̼ḸFqf"~Cv8*.6KEˑPUXAr+.}RBwou!wڊ<@|-gvT@+bdҸ/z׉P>62J...hҨ׈X干Uش.8bIc(S,]2XWl AjfzXbrx2k뫩Ǣ:ڼcf#"]+Q|KH-Z]Al aB7'8Q^@GRBE A{eI KnλD:2"@:F'e[`eP0kObߴn3qO!6г#41OJ ҟظ''֟Eehvq3 V q0*f#}jj(?*0B.QQy`ќzf ( ( ( ( ( ( ( ( ( ( ( ( ( ϹVg*'hJ;5AEPEPEPEPEPEPEPEPEPEPEPEPEP;kN?mbα{¨$NEJŴc t}SqQi7Ji7vnXpm?cQi+tV'?/pZ_+nZ?~_j-/axFG?/{nۃ~֣nZKX^=ѷEbm?cQE/ۢ?ۃ~֢VtmXpm?cQi+ Ǻ6O?~_j?tV'?/pZ_+nZ?~_j-/axFG?/{nۃ~֣nZKX^=ѷEbm?cQE/ۢ?ۃ~֢VtmXpm?cQi+ Ǻ6O?~_j?tV'?/pZ_+nZ?~_j-/axFG?/{nۃ~֣nZKX^=ѷEbm?cQE/ۢ?ۃ~֢VtmXpm?cQi+ Ǻ6O?~_j?tV'?/pZ_+nZ?~_j-/axFG?/{nۃ~֣nZKX^=ѷEbm?cQE/ۢ?ۃ~֢VtmXpm?cQi+ Ǻ6O?~_j?F Qۃ~֨խduʓ)rMpsGCLooGgim_Mm%[F#Vϛt;_iA1m> N4>J8QAG7|4{Dv;]ORuyՕqJuj?co˷w>oo9XҢ|h*+7ϛ>o9XҢ|h*+7ϛ>o9XҢ|h*+7ϛ>o9XҢ|h*+7ϛ>o9XҢ|h*+7ϛ>o9XҢ|h*+7ϛ>o9XҢ|h*+7ϛ>o9XҢ|h*+7ϛ>o9XҬ?7ϛXcS)&/{EtRhN; QEh ((((((((((((( -H3)^6?:/O_Eek~W(QEQύ_.ύ_/O_E\/O_G^>6Š(^>6?|mQp?|mzߕ (zߕ ?+QE?+ek~W(ek~W(QEQύ_.ύ_/O_E\/O_G^>6Š(^>6?|mQp?|mzߕ (zߕ ?+QE?+ek~W(ek~W(QEQύ_.ύ_/O_E\/O_G^>6Š(^>6?|mQp?|mzߕ (zߕ ?+QE?+ek~W(ek~W(QEQύ_.ύ_/O_E\/O_G^>6Š(^>6?|mQp?|mzߕ (zߕ ?+QE?+ek~W(ek~W(QEQύ_.g_evc'eߥ (`KfXύ_,a>6KQE?,?/Qa>6Š(eߥ ?,?/QḚoGeߥ (ٖm~(̰oEX2|mٖm~(fXύ_2|mQ`KfXύ_,a>6KQE?,?/Qa>6Š(eߥ ?,?/QḚoGeߥ (ٖm~(̰oEX2|mٖm~(fXύ_2|mQ`KfXύ_,a>6KQE?,?/Qa>6Š(eߥ ?,?/QḚoGeߥ (ٖm~(̰oEX2|mٖm~(fXύ_2|mQ`KfXύ_,*( QL Node-path: plugins/org.eclipse.egf.engine.doc/html/overview/images/exampleFCAssembly.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 23799 Text-content-md5: 6bad22e754ca13945a7e5beb809bb310 Text-content-sha1: 7f5b743a8792b5003fd0e93fe8632e6236a5fc68 Content-length: 23858 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxExifII*C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222?" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (:g;Au2ctr"'= _&?9\G$4 hR@qh.? J+/mo4MsMƀ5(Ii 6A7Ԣ&?9\G$4 hR@qh.? J+/mo4MsMƀ5(Ii 6A7Ԣ&?9\I 6[s_qTωt:TK;kt_b4546IP|ULX>Hvd5eB<%B? ' k+z ns_ysy bf*L.GSՅ 9+c Я/&B<%Bޢf!_D|_MxK}5E`/OGW?_[P!_D|_MxO}5Ep^|%vY/:r% 9'ySGik{ӹC)X`;^ˮEx徝syۘ#@W!r1t6)oA>mU^VFqi˶4粻MLy$P\2[T%p0tk?:FOM{5O? %W41X}_t YBYivmm/U=Y]E md¤=kB 9o xF𦩨V-tw<< ۶;5?`YK2RWDk? 1FķF*zªATI7 Z6M-WU gz,!e}iliiUgL6Jn9ICW?rEj2Rdi1w؊Ek!XtşO VomRZr>v}Rt;="o\??TW1ԓI-r-4o=o3;.1$P*SxZ G4Zq Bi+ Tm\χ|u[M?"X[͋hې:Ԋ騌*)җ%D (QEQE&hh((((((((((((+~8O%<1#ߎ?Ic((+mN+[3rmc.9 ž(76 <,wĊngYS,^[X{o]%$ ĪG]>[ԓPVFcՃ˅ 7 @G]+A'['Oyq"% :X82xRAa5KB;UXaI`r+.i\iZEݔhqyJyi" W'do$]Av,h1cV1n~`PFCh"AE8>_~6 3@,Q O0 ql;g50sx{ͷ7wp^Ə3HW'3c֩OV[aQso΄>ݶPꯍ˃RHvzƷɫ&M T7Cr 6gm;ۆOܓ֮g3$:p9.vN0Ga<Ɨ7># JLU$11Q.C[ָxQ>l6l0 aF Ė{i9@qI c <2^-2ɱHv|'zNEVF.vgإTי=vV+|0𶹡xTӞ13eO`kըMS*=n22R} (9B@ggyƾO2+d_w ?/L i-5iqTT,xF|$Vi'fɱXOG~ψ<0lyd9g67(׊*iqaXY%W X3ry?_: (Q@Q@Q@Q@Q@VG]iYmë~4!IZ5ZE''ʅ mR7>vHt<;KME6l#Iëݢ]j o8y'?&9r3uk/ ژ۱m@X*4ԤS*MB((( X믮C=?:袊(+/.iOHn#u] 646%) |{tMH ådNmxJ")rZGl^Ӽ7nDa9(.y5w>)?E(O6r2 l(\ĤwV"эyݜВ0kӼ7ܭͧNEF; yɮNmM]UDΦE۳*NJ}9: w:\R3<$9To(ַhc  Cԋ,QEQEQEscmSZs__G#H.Z5RO y9 X[t+䱺%rm ぀['t5+($Od##t5cI5Z$v@f*M%}nYC|-^p O6FAB{f;qRE%euS'=8`w4VYxK]~nۅm`dlE{XxJYbC$lA`(~NmgjK4KyƨrNmgjK4Kyƨrj֚S=2yRBUUzwQEQEPcތ{@ zKKyya>TglTP1ugÿ'M\o *Zu wi JũBs+Ivʅ@Ec=+^u7;,:ϵM }0r9WQX/ӊN岰tymdh̜tmctUs¤I^fkYGzxGSY.fXԷjp &D_Uq dP/mMjn1qnj $]З4Ts,{7 ' ""hcEUFti Sú" .A*(w?Q ߃kcW4oX27,??€(w?T7^0E]xA %%X{ի"(ѿa_O`W¿WU"*Om/§=pG_ Gھ&*m/m/ŽHg~'0Tᶁyqwa .'f-!b%TQ vv_l_l?ER{OEV:jhBSl/Uc{OEQ k?a[ٶ?o~(ͱ+@/eM6dBM',!q57[ kUկnel x#<<=Og{Zo!R`q q޸P8^HeY!l Sן8; Gc=r6~(붺\}wsv 1`8-4K-atc7$89bGPZ[xdo e/Z[_KXG]{OEQ k?a[ٶ?o~(ͱ+[?T{OEVm[ߥ ?l/P?'D_U?Uc>VK z "; z aY=؃ĿLg~(3ס*NC^g~(g~(3ס*NC^g~(g~(3ס*NC^g~(g~(3ס*yR*p5:ēؒ{t kxFe*t OwHNiW. K^o p-)OX?  Jk " ;e/>Hj2ǫs^IjB>EijE ¯cyGٮFї;ixwSƺ5iEۣ~5JNȱ7q]2C;WֱLԺUa u%Ƶ>GSF گ=\cRRtmc[Zп]|LmVז׫#ZE0FCpqЃ ׉cFpJǦ@ZgWSԴ%һ,6z}I9 s?ђT.K2)r1V}D7&סѮ/#"b؊~sq]?oq|]5T/36 =G0ylo-'trY2=uPxCN{ >٤{9R&dpŗQ:mt'xՙB.&ao&!s)i806!Nct1@VkI F> ǸU[Ej$f^ĥD1.A3n=k\}ec=s15> 5_!j1 `Knݫvuyԓz[QEQEQEVdJ(;k;kqԙu (~f&񽽧WOO[iIT8*]Ec/4G%Dm #rt5:K4I h#Et e n#4c vZEݦ=nIbV a3Pya<י \Yقl2IzOgqsLo,pʒKlؾ[(lq5WŞ m ۯ%gaH&(Ѥs J3p(|' -wXMk_\{II񦁧̑OzjɷP lRQH FI|iCbfIY`^@6HqU4^JO{K 9_7'NƐ=& /n,7 `qmİ|aQ?s7ſئG~#g7涊QVF-+ X"L[mgh % FQ[om&-\ior!ϒPnBr8SEa^/nw]g4aÄwPT0sQEQEQEQY~ ĵ{xm)wEy<XPe]Sͭ髣CEI'<,mK]kZtvX[,wQ c:PZxN4_jA.,uEqa +;Kcp Iqkh4;jp #ȠhkVGNQX1=9 aκtմ5I4-[P7L|39㸪xFC* \۲J ji=}u ;n%0F2nG#Z쫕KyioC68I$]LF7m9)m٭VaAsDO'$#pC.݁ ݞG$mݚБB`**;Y~|%HctLo*[n~` +qO_k(h֓FpYG 1)ϗEM|+G7tKyR9.F9ͳq!Rɪv>;nc$mo~ldlMbUA*Nh)ϗEM|+6?Oc2-aC>^![~6+n*Xiz\O’?,$I[(((u ;0T;8-/E*by#h<;ؼ-뭫{4s"oq0`cs$4o api%ȏYr1pBsW;S"đ6eo/+Bh oL8GI}K%$i+.^$DeV !ƹxRoRs6 vRђťbce'v"_ttPoOKX{$>sde㌪'$eK mX4)h\BW-bF1@b@+ zV5xCM%%غM e䌌7oim K@nV94sXilLڎ ̒eO?)mϪZ-|-b R vTP Ck]xsٗr$F2+WG8-+x/^[9vȢI#q#RkNQ9ǪQ@)u^ \jjccP2_16w|ϢRO#%o1P2]\((((|q}\^-(`T2 fN}*H|-iA{$W[vp8##;*(&oOh=&bId]< $NnaI⑦X|A#*I+S"7pƲf{gP W-JBit`xʁ߿vP sOjz@:];1<9=kwAgӴ:=w2ŴsHp{vnQ@+_HA}w drD@;{TO䶒dѻ\#6cpb2'[3\xwFoGicsgpcg9e;"=& |G"HnRg$1Q=r;(u\j+n ܅h#n `-M^ F|Zj6bd|7G$r`3ӑ=^ҵ{♄b}Tg d秽uTQ@Q@Q@Q@Q@Q@Q@Q@?x1Nuc]QEQEQEQEQEQEQEQEQEQExG]}r'wP_EPEPEPEPEPEPEPEPEPEW-o M댚ZShB-c)4ohТo%1ʐ>:t5b ( ( ( ( ( ( ( ( ( (8Nuc]p*ƻ((((((((((+?%|f k^1X\f:2;eEr?]БQ )x?uW# )x?]БP]Er?]БQ )x?uW# )x?]БP]Er?]БQ )x?uW# )x?]БP]Er?]БQ )x?uW# )x?]БP]Er?]БU{[X\\xLQ3X`0 =hfg񥘚(N~/Z_O%^Far\' gq#ֳ1{hdv %er=\?h KU\Z_0*ې1}OSjkC.1l]]*y (6CuTz=_ 4{t,zM(K4һgiR+/E#"I>V>h6_k:ͭc RT&::ukG8%,O5N s *PN#Vb8Ac>Q'sW _F~*6idVκLq7SZct!廎خi$bO2NqHHМ QiK}?gGfln8PxOGl-BֶDcAʲ< o"ZOwضO~/<<;v~^wq~543m%^jS M q\l PRQ@)|7&Ԥ.m:uʵ?=hiB.YeI&V 2C P; .糇gb8P;cyDgsݠX j.UѸbWg;NsXw5vnbnR.Mˍ8?s,k0 '{ Nx]f'RTp%[Ԣ2<7rq> j0.Ѵ-mO:4 줜 Ē$ٗŚwv z~o, }1WonZk abK/hc9 7RIWA+<Dܛ4K#4YgrK|@q_G#oϸR2Z18ڭIiYHV[X!o;JnvR΅7*95=*XEq"2## y>tU&a0K-Գ哝Ġ#Q‡ZZºߥyVI7lAOnyK[[ۍ%Uib8_!X.o11d Vh.Equ$4c,I]^?0n%[K dс \z +oo\&[CrRg'XVP2 bMsZ^J=>;Ŋ;nm16%~a'3G&(na[E.l"ī@¦3# '6%Ρ<frW 0A穠 Św.鶦 :To3ϐĹD)9`HCºΡiwgomHb@\OZQ _Exs$rVI** ʃ46HK+4)32ŎYO4n(((((((_S]oq\?x1 ( ( ( ( ( ( ( ( ( ÏvF$T6tXz[?t?k_Y?G$ֿ"/W~ i s"̻bbOZeVO`Cgjz6s*nɚNF$"lo`ԴkW/osF`8<PhdV\ |zg|犹'2wUHYWFcWx-|'dp!h 68 /ȉ[襮5G8xjIQEtQ@?8.XMra >5C# InQScT]ZxJZ~S4LrGG{֎Pt}V$3 H)cJ[;i- +3C&"Q/k{NE3, aZuI\ϻ-,K >ig8;NOn@?|E% ncJSSmkFT+:+_W/~C߻c?Z먌4vj5(TtIt ((((((((((((((|K#I&_I((((((yٽww<끇Cfp!ypʎek_P"wt|#Ba(pNľ"2j7qEi6e5~n^,>qKJ́K?.zfZ<GsO*ZgHqcbIM;~u^?ӿY&:u;]&[= W4%7 -j sVK b]P񪶛gv~"$nsbpH89ӿY[;84{+X{x($E'W!Ls.sM/G82 ]%ZPmaMHNGwFX=M-pv:5>S Ҧ7nY8*ɹY$LFpM%Xj X}QFyJ/%V62Ey#-֛j16֟C Q3-+ <04+קDiK [[GXeX.M;6$Ѩ+!wHZ50ZDd9'qTV0KHv$g[5MI佒q$Z"mܡ6TmnH[:햓k6_~ьРFVm{(g+G3~}? Ek #QVayMo? 3 џZ復 $((((((ʺƁ}L?h7FxW^}aktB®co.GU(mc-R)0P=01Q]^iw\8x]ep H 'vt n(OoX?m-Yiv$T2zd⥢2 hMtLmqQԳ:=ד*_"V/2ˑs:pŹ$rO5Erzǀ4b$p-dH+d-eN8t2iZt֓Kak%JJ\`y9tP]JM2D@`pv$t#lb1$[bQ%xrs֭Q@#M Xu=:%;.aYTPm֍wIqW ϧXȳ+۲"*77ci:k~}^[ L?*2'W( 3U֞}ƙg51sm$ і-c;99]HUWJ xO6U(>= H.R-*ė C?195EWl廻b!v$vՙZMޑ/5\0p!oF1Zi6_ l{ۉYaWǥQ-'Ysr!UODkn7܈ȟZTvpۻD"oUpAGZ&qvۯc&Of;fo.;lQO%n}6U (AKG-K'p* (縆1$hYP3s2{@V~Xh:{_SmKgֳtxs]MiYK6@(.I;7hԔm>󢢊*Š(((((((((((((WĿ8/?j꫕/> $(((((((((+&&iڛjlF+Ӝޡ;fl-细+DNZ]ݴY eZ> fںޖOӘzy+'] y$bǟּ{O?xQb% cuJx^igzE 9 x̰]hmI-2k1{lyWP22d;@xVޙ,4\P: TFA; Σ0==t]*ʣ65*oxAuƢsMzjCg6w{o=\isQM6IsxB7ײ,݄8v'jh7n-A4NK`UT7ώ~9; t8h/DƑ5;WMumU(6cW-gdLI4QL(((((((((((((((((+#ZV^M=V²;mzaey6j.-L>`Mʎ 3M^KciwqJF8 ;j^"'ӎb$C>]<=t-k1]^ y0J& AQ]{WԮ4{I./t{A0vybsk`C MgOk2AWH*Ae`H6Ai$[ գ9ߓГ\b.ZT%ωy{K}{c+<BmAjq@ "y1$jU7:{r1F=?ZA @\Nӿ/)ϲ}߷Z ^t>TMmj+]w1jv0XǧS=SƷ:^hi }#+9?N-WtSG}L2'YH=ȬB&Wv>6گA {$BHhA-Iu{1e+.qemMp纚!IQkš%Ow,Zd"̪$[xm&QYtӊ5KǿdK8<=wIuf7(^X5$R\ʱ:ےF0>s QeK9OtlqK$3$@ j[ eQ-% &1cל7 .aXZZ[Z %D@[ 9Zڅ]jLVVAf8x;/kZ5վk|OXWAvOs`zVޝ}OMѭḶӒ8#ko5b$+yo M;hw!m$I"1:ȬV6xH'Zx@VR#J"i.c *‚2q+]xCSO`4;]'nܒDUDw1qsVwqQ0N Jiڤ 7dr@fƜ4a}:8ZvXFY#{qyFG;nPb#3 Tl<)$4{kB^ܴN!n98FOS֟=_S{&fZtI r*wnPL5!Fbn,sM(3k]KgX\Gh3pܣG' _C^{5ẵfdԋG+̒*-k3-zn45jAEEAm9yPv˻hGNMDkZw]-ړfgq:Oj`XgvA&ݻmqs\[YU2[IWb@2<9+j-޸ ċbE4QBcY#qg9 Z<^7mb3goֿō:qN^jI#zslN-#~_ŮZc [\ @ eVi[ y%M'|C8Ԝiy UW0XwdJ1ZX][[Ard.-C0n-E{F VmX]ԪƪRHyRTs櫫NA5 1(d%B"E2 h-c1HNv+C2Z^uq?'Z ^uq?'Z ( ( (2KMxWW-6k@JD,}'R:)`5] Fp}Mu;y_]覣O<3`_&R7MנSwz@]n#u-%=k~+a 'HS}$KP#wFɺ>,VE9[='R7Moԍt&(?R7Mo@<.H7X)'?r\Zސ-s ua޽bow: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (OC_}9ϲwtjw8u@E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU}E| 5RTU_(KPW_(KQ 5RTU{20Q2N9'bs hcßc7A_oٵվ3qֲ|d׏*Ϙ9?GҀ=_W"3Iڽ~"ud[XAt$\Bq{zJ+/߭1?7_?j'vao_F-)ZcQo_F-)ZcW.g iE=} _<3_5zyv;(8¼ſWOIֽſWOIր=((__:wʫͷNzc^xEE]F ȸٔ(xW_)/ *E-;y_]覤7 *E-n;cK_Ki=x{V^9gqol8iØih٧-un"v(A v1 ҞzÛP36ZFU7y% qQW3Bެ'x4za]_k4Ͼɂ?oj>#_+=D)黦ASWj7clBFjZ\[֏&u0if񧈵;Yt=6o\y-u0;j;UL;[ d!$Mĕ`qӨ,QƗZzvKh/mnRgS O'<*|+Zdd.ytX @z}W-ZmO~,k_H7~"]CvcrNWpO'PzxBN'E:ҔS8A?mO~,kPC֣Di#wZLr H>-Nx?Jï:vo,ox>}#ۻ jvWQ]нrR_?^ۏ9^E| _%x%TK݄(6)?;d$2k|cIeZQ ?"AP?'%Uj< $_ KGxW_)' *E-lʌÎ+񧇍=h0VuͬWko,|0p3g85p+Qv{ Ƿ*±;A!E3e'~;zܴLn@у^ӏ/ p˩\3E2A[X ;i$-y9A=0z^o hJu\CGZgHC"y$[2g[)錬y8m8ķYN0$y|-a]^Ҭ5`W=@9һXxB)EXB2i Ҽ+_)5DI'@̌F=8/ [Fi!Yv8tY % kJ: ;䕵ŸM]FԵ[}QyaDp {)u U.l/fKIK̄ ϯ7:*( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( nυ}_?(((((((((((([d^W_X2Mi|via}mYI>??i9GᯎWn߉AKYEPEPEPEPEPEPEPEPEPEPEPEPEPKJ_;V7ӭ ^p'j0?xuˌ_ф2}qZ$qNmnR|Kj&p\zƨ<(dkv?yJ g<&5wO} NW  h*h. ?_hABnIA]}mF"G[ӊ'T]G SCt?MTK$|ԢO?7<kW~x}CͷPd?:*h.OЩ&(E!qM9q&FC z>xLO-r3W  h*h. PpHEMYlj1r{~T?Hr!;tx?M4 4?Ca-Ћ;q}!~/~WSEўbN'+*h.OЩ&: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( nυ}_?((((((((((Jo*ִZ .A;0}kOC^oz׈5K29X׭\-̹|WOa[7aSAj+~WXX[1zI'o jw!i WYGq^:S{mO^4]:U` QG<^ q_fED>2譕'8Eimb]|,v<|>VqhT*0*RJ4(ݏZZ ֕,)RXԚ(QEQEQEQEQEQEQEQEQEQEQEQE/|GV?fV'/6|v$HZCa@<߈L?o[W½K~!0Q o?&_ (-D+G%~+(?Ca@<߈L?o^2 ڷtiq͇hpG PEPEPEPEPEPEPEPEPEPEPEP7WPYZss" KݺNx`Ide9W|Z6b%l}R+[C.'k/mk쯭c~_޵GW'm-6otӹEU8uHIK`ƶ"ix?eb~WK_y_`2.ţ[43k.# SO+k֧'(&ϱtG:q6ࢊ*p(((((((((((((((((((((((((((((((((((((((((((((?W ((((((((((@o._ӯ?oU=jMZVu16~hCޯ1Ki]xe>W΋~k؋T"ǧjs/ޤrm)ydV7S$02WxzٯobqC cA`>cs]]bu֦ҽ+b:q2Sxm/jF|'|t<~ zAUο{+r,W 3gnx'xM/DtnͻA=kIN.[m=hI|:eQXQEQEQEQEQEQE{GU;EՅ،XQq]U|>>.@L[i$1c>)'[X,q!wch;/5`MWp]]M|m^>*?^4ӂܑw⾤l/$6@MX>8ھ|3HԬeU XxFyKY%O&\@z)|1EvxɼZ&1=HyO>9ei6pHXyd#=j* m>k/$6Tu$ך8/v=F7tc#>Մ:8Sp vs3uU=?hE LN6ũbc};\s=kڐk!&SX7x3B[NT˙"ޑbFqnhѪne8b0F X;\j~'4-=.mͽHR ¹okXIl) ;(S< c6S]_V&hy 9&x2-acDo@#&D'WF z)M?'\ZI,Ms85:? jm,F 3آBwS[I< !]|Ig]%s @ýlQ^mrnmk#yq5żWf3ƮrX(`q]gcx4[=#;dFR`TEs,΁h֯<1yHQV7>/OZ\\Zɑ/%IhMAw4-+0b;F0e|W–ouqzщww. 1Z([3H2.䷉ Wq\zv-$ !TV`?P3*!f`$2hmIWR2##yow<"c-)cUy܆;#a=Gi|%N|/gm|n$Ȃ6FHbO$c q@Ep~+/Iays=X-ɞĒl<'x_Edl)I=ʞdPIErZ]Þ,>ӵ|D;gMSS|D:k<_m[[-B5MA(KvSaPNN^yTi 2(+ H~ YeZ5Mkc8,+U|kUg_A5|9k#yg2+FqLH2( LUKL'c+?~nu(6-hސ{ICgx$NMm|l_]x;4mjȳlnEdR3ڡ%Oⷅ?hV7V{ͽT{>qހ:]3#Wo,lٌcJOs}^k]Uu۶3ՉQO w'?b?˿߷=E+p*^ƣ^ynj ~3dԯ59"IdqF =>tzVWvl*N>èEGy^_[Qk.s[`rG 8/x|;*Mz$r $l ;:Ė[$q S\r0"43--H# coWY[ڗt; #j=#zS럏ͬkOXzdA@j:k{+{Di&ƅ]8ŞWqyVOv>)EŒFX݌5~?O5 ``)tuGSWW{Nş A j xC% # sU~)Mvqy^.:F=$L@-4"?YCn܌D'wttoe6Z@E!(u-f]t gYB6N$q[? t?Eu},⺸||<)4/y[bhVov BuGό<9-ݎ--粈T s:6xu]OHMI-f6)-sĶN'weܾ]\hOo+&8Qq3@\O{:vVAHb>Eugza]AmZkV\otb 0qB+JʅFR0G@_>h*4u8?5]WE ^iZIn ]͕8y4τ2Oǣ ZKg1RO'#8C4ig~oGn!xfOUۢb >!挎k &_r"xVģFE0O#l̀rG\z ։N{iqhViJ8V9 ެx[+_kvl,+Hvg=9x"o.􋿄Z+ ̒@pqفWK{xe\(=>Dz'ح좹I"bǩ`3G0Ӭ`'hQ@R@O<5`_gmh>1u[^xqen?bXˡb^)7tQk [DRfV#:ں}\k? $j~%.5OM٦-Q]'r9Y>)=Hχ^kq$&/ ʶ@An2I<3[~~ IavnB 3L4]>5HWc?Z)Y>uH9>Lq^@_j>ymG]յu5V12 *x\Wψou5-FV8>u0-3˫?QC-u'Y,+{uo*<@UO U!Vm?mR="^^Fyj  Nynfx'rKzUj'H1j`l=S7kW|C5[ZihV4y^[0rO^*O7 \xk:6sJc$Gbpw01Н-#cgč3ij7:_EcjFq靧##rx-:U|'ky ӄd#ꢽ*@v 'u^@Q@G57 hEjJ(V>P߱X4ݾ[mlwT;WUE4&|lP2G>j-ג_؞tz^Z1W%=tQé(b>WevaTU+uj:Xz*%Mt (6 ( ( ( ( ( ( *ܢ+Yb8 G^cŖP?9t,u=k7~ۨʲ}H8 6⤶aER((((((((((((((((((((((((((((((((((((((+>|7y€>((((((((^:ivu,lː n7Yt9V5ճtewRtGwt Rhgo3ƤмkxP5\P#EF$GV' /Ǟ-n%xŇQ̠*G'&g@:u!Jm-Qv:z.ִ?^ڃ$q)p-dn~x g%)o >>c-ωa}kUVYEU T(R \ pH%r"& gFNk]iJrTc |c@KEcmt"lKm(@Nxj*;u-[I#ƅ{dԔQEQET,o)frF!#JWHESQEQEQEQEQEQEQEQEQEQEQEQE.YΡXM Fprr@5Z>#fF|}DfY@3GI$g{%S??6?j7ؼ޺m?u~[&rO4biE4l_ H<>%Kk7 "BiIbH%^:|9KO hHӡv\`:eI͟2^\"yd֊( (((((uXhza3}#'nl*xUQzt3mEqb3>h'>],e+Yd6"=?;__>L,lѯ/ =F%I\?O)jЊTW@)QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEUԬB˸-i7}2jI"D5gvMxbZm/I%O([\$\qҪrv1WSszz4Z9Q.>Z|tAQoUR#9ڎ+3((((((((((((+>|7y€>(((((((UP&5= cԔPl|QoKǨBޗWX{#[?>(зtQ_[?>(зtQ_[?>(зtQ_[?>(зtQ_[?>(зtQ_[?>(зtQ_[]^Tsgi>YEWaQ@Q@ھh!D`/hzM6KZ~d"㱭Ҽ/$uȬv$^Je`yj3R7dwԲ<۱Y[cLe\܊Ҋ(HbPU^_ᯈ)N(-3\}1޺G\an[]B<-'n^8/ı[26ߝIV۩XGs+:j34xkH֬aTx`Wu08LGC1]/ojԉ;Fl~IZivocM%qL6*m]H+oxvy [XأN<šV6~cgẄ1S$.r:պFEPEPEPEPEPEPEPEPEPEPEPEP_?+>Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@4Mbh8 rGܞOW袒I+!$ ([ƞ%-g[VbF_4S@*yL/;SM|9-{썔e28 A~$|CKA(' ic@MgR[mRM-Ɲ8+зS/޽ʼ$}+rQΚۈVIQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@s2CA\$զ0={[,9#`< K3[:mSJDIlvTmo=Uɠxžt-#\㉔F˅@*:Pc:f2x<>N=++]<' j4Y"i?tUC65h\: |)wUilpȍ4i+`rk?]?<[ :94W4oMbNs*|G|+xzxRo?x*+)8P>ܰP9@N+Z߅a{b-%plq0h7Agx5GMGN-ap$9 H_C[VMCS:)8^X8mj|Y[6[|cIצWh2,HĻh@诟~ͪK:sge<+'TlqxWj:@' [(Iesb\X\'E'%H󩠸hRH2uc:,ՒV 2{ⷼbWX0{Ey 5 SKV Dp qN=zLZ=0y̖2z"S9aiQnPZ)k"jVZ=Ū^H"rn v M{AQEQEQEQEQEQEQEQEQEQEQEQEQE ?@@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEdxWAI+ۅ`p, )5C^;#B׶Bn[v8^.ө w2KMxWW-6k@JD,}'R:)`5] Fp}Mu;y_]覣O<5`_E]n#zwFɺ?ԍuP&R7M|F;E oǡ'P'o.H7[:,ci.HŸ^Eb2Q\Gp '8(ԍt&(_߉/<]M7\lz(]Ey/$:DQEQEQEQEQEQEQEQEQEQEG>VWVV9+@KoV|a6ѯn #E [%o\\5ԍy$E$?1cWM>$u4IܒK1=z:sҹxf]G쯩[ZjMc -X'rq@cTѿgo黾 gK~k7IȴԞ\j$y+` rּ?xgHI 3m?+Gg=gwg1$|ٚA*Kxl:6#@#5' qҷ+3--֭Ci[!!r4g?1- ( ( ( ( ( ( ( ( ( ( )kz>jڶq{<.]wLx`AȮ¼ow:?E?(G"_k(?K[|C @</So5›%Ǐys~߹O~ V6\HX~%P-ƏD!OxHQmo"A- XǠ"_hK[7þ V妆FD1ֽ <]~!oY>wm%򿰭~-981<'}q7C̺5,p8$;y_]覣O<5`_QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE^$~Ëk}/,͋T88!j]n ^p'j #wFɺ (ԍt&(?R7MoP\{J8T'T$Ɩv; ']n#PCQ;?߇TtQj?SS~SQ oÿ:(Ty)c(7?Ez}Z*<߇T⟅6FPR#RK =zҖM$LT\ZQ[k&֧ʹvq״hz,3"tkKðG [nV Nÿs*E5yZ襣OJ|CAS$/k纕o]C!vbdμHPW%7'=ZCL_w?rxw|OG.Oϖ~裒Cu<'TQtj?.9+?=_w?rxw|OG.Oϖ~裒Cu<'TQtj?.9+?=_w?rxw|OG.Oϖ~裒Cu<'TQtj?.9+?=_w&NV)ՑbEq^?'[Aq̑`8> ,knX[J9zעZ[[ ,qUpGzv9tޝ=((((((?$](ow: (8OkYn絕QK!F#cdʼw{T?ƽk'.J񱲒=\$S>yuq{]6Y7tvlJdz*׊WTm8&Ѳ&U\_a=5!=yn1bW ?wq%0 P+b[Ք)~=zkЄyd4\ݽ\E,8 q_EDxW_)' *E-;y_]覣O<5`_QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQENNW|C/jV'8]s:kk矉POej$;kHmkQ)/aWGr A+7ZH.6/$`[4V!^+'^^+'@EPEPEP?'%Uj_+u_\\xkFytgI,"fv1)$$s[;y_]覣O<5`_ 4?C'T][QKp A@?hXt?M0/`c@?MdXx\lCy߈t{mx&B_oNxV ]*h._Щ&OԸQ&S*h.OЩ&Of SCt?Mx?M5Q@ SCt?Mx?M5Q@ SCt?Mp'3nya*?#dYGg0ƻMs0iZVzu涳U>R@\ɮ__5{l,qk{D|?Z( ( ( ( ( ( ( ( ( ( ( ( ( ( (9z'TQufg)tW?. xZl1OQa"u=PNnw&Tgy#%$B(`O>#~tLm"ى[E*2 X+S3 +U}G*ϋ>b(V|_+E>/">Y]¬CV.>yu-rHS_yۏ(M|G'n?S_yۏ(M|G'n?S_yۏ(M|G'n?S_yۏ(M|G'n?S_yۏ(M|G'n?S_yۏ(M|G'n?S_yۏ(M|G'n?S_yۏ(Foٔ>t(ƀ>ƏQ0h +Q0hƀ>ƏQ0h +Q0hƀ>ƏQ0h +Q0hƀ>ƏQ0h +gOx2t;9t3CKG3CK@@Q_?;9t;9t3CKG3CK@@Q_?;9t;9t3CKG3CK@Ziw%wG@@,@=g%5Y $8eapk KZͨeu%!vǕb733sCjE_ }mg$K5뭯G<=kcߵlݹtqk_gK;ԥqM]:iu=fo]/kgK;CG+vO3|QNcy#޾vïk^'гYQ ipVO>x7V6C&34G3}GN,߈E?bF5Wo#ӵ>ef9  {FyЫ,W72LbFqߚv;o3_5|f).W 1R;ת?.U›RvҜWC<?]<=>zϬc:^uq?'Z|KѼAvk8xGOt%H8ʶG+zI;c%76h Ż =XL$Dl,`u+)H|͏xx^FOFXr~Zi{;7]o${ZxkH?>QhQKVP+<_xS,P ,8R;<Ȯ @(؅$'Ê 2wDɢfRYYJ? 䊏IUȥ0pv0%XL jZڕ]NK<^G¬xnp9>&#NH|!%͝WQ\-?7W";mgZGaxLIp+qbXcgݺjZ68 p3${n|Sa _avR=vk-R4HX=FA {+W\OahчU HGp}/ĺvcLin DO!*m!~(2* ?RI5Zq :xc|)о2ef5v%X*ǽt?os(>7KG$DtQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEs;y_]覣O<5`_xIu<R{/RM9qVu+ 2UOXqd;5oZZŞKoaþԊp9%}N'ʺ[+wM&7I,*NI\u SR+ XZ{|*3]|scu/<8I_[Rȁԉ[c>[aA=oh9>VۙVKen~ %eU+ ڴue~65}sdgt9χ5_Xj>uԾ^$\E't4۽U?Xb(S\څjnm |+h__j_{zc]̏hUqqmkd۵8x'ooE q~"4+].: ۢ/$:D_WWyEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP#8CD U,NI\$:DuW;W.adD 3y澒<+/Jďyk|Pv7@^ĘxQN.NKՅGKSD<5o-,A8¹=Yg7sH(-qi^*РXVbgE ;1 4ShufVjhnR]Z$R,;g;OJnc~.O i@ռl x7zw5Muẗs)O!Tk>s/}xB9cY.ǟS vZ U_sC3Ku_3Ku_l/¹[=kqo{<.%jʅoZuyZ襮KMzk' *E-z?Dyu/VtQEjfQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEAwciGym #e@0p{(%%{/??PrS%%{/??PrVXwiPE5KL3y̛yjtZkO Mu"C#NUB*;(O+?ͯN>!ZÚ]Ʃx-"EK~uaKm?e0{*'{׻izUYDz*}Ecww]Zqf~0=0y皨Vo3KTe`vs 59-_zsh:i;0kY!7+`9tëjZx]Tvė6FKO hhy_/U-9#x sI> ULLY+l?T-h'oiq=rkR8eVmoUǶ [I*5ύC:yz?Zt3#G,vѫuR sӯm~ xH$յŒAbI߳;p?*MKZ[zj<V)%n3dx;NW(!, Dd{dU_Huw҈~MK\Pb++}\I_ȥ\e#>|yE(((((((((((((((*E5yZ襣O o???M4'KQJ_`ٗ=qz_.\u›iO">=I,-001+;k|5*4q)|w2~ !пJ$@?%$B(3 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Huw҈+6!J#@4 guPP⾣&'SIRQ^;0a.wh=0x])?KQ O1o㿴abخL?%('SI=#ޏ~gh=v?a/G)?KQ18تs"88 c^ O“$e'չ52&*j[O'UZtOG> zW>iWٳv䑺d:ַ?xkV)kեqO<ʍ9QZQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEy|Eg3'.J|EgkxW*Рf&v!p`yc)$kBJ5g)Ң2a~cSyv o???M4'^da^*,\w$co`"˴XحS~!/Q o??|b1!/G%~@<߈Ko g?%_k(?4YW (,D+MCa&K>!/G%~@<ψKo?i!+ռvȯxvz ((((((((((((((((ì]H^o#F@`IgHmmⷷa$ qU LD<gO9aG*|s½U>?}? (V¬?8+(?YSqQ @<gO9aG*|s½#MI䵵߱`\vsX((((((((((((((((((((((((((N>[}d[7m`Õ @<Т<vQ K ;q+(?%’yBN (I|<{'n?нrR_?^ۏ9G)//@<vQ K ;q+(?%XXu~]I )<:Պ(((((((((((((((((((((((((վY~#5|G=.Bio-/2przZ @<gO9aG*|s½U>?}? (V¬?8+(?YSqQ @<gO9aV4VzgroT>ΚBL؎һ(((((((((((((((((((((KR,#K_+bN*!{֧) ƳCq"P΁$''InQtyZ襠 YbiiqJsχl3z=:J)uxSt@CfR/dP zPτ5Լy[ST{u[TeRw3J+Z|'{x6 7"*Q ck¾(teqmf6 ?u3Uύ5]*W62 hFkVHfu G tc,V2:<(O:mdt3ON|K4 2+Mzyp-件Z<:~E<j+˾,[ҥsoys $fUh@XaGZğڷYVky$J+pڌ,1OR0q3Y[ߌzWt{]Q8ڄJNOzWMo%M,zQ!V+>4+? i%k&AcМgh>h3ōo)L;mFK5MA+0Ezy[X²ĸAx!rObWj6 -#Ybpxea#@^_|Isi2[KG;YtXn|u N_}=zyx5gV'WhlY#$d `ÏNxpxk mu vb@$s`> y3W/e[hʜh<-qrAeApC7UzlWCREb%3ʩ3Lꈍ!:".Nk{kjhZ-K wЎ7sހ=f<[zTuu)\G GOsx>9[o&|ju Yu(`qx \ki/ ZKyDB*=+>x}/Tѯ.v+BǑ@O觑X_wwIwlGKeÏ@kMƻi˹5e>|,q:~sIm]R63IJ9<~X߇%յ_G_Ki +3 Ġ2AzW`1ESZvΛo<,`e>; +Ǭ~3x rmKbӧCģľtߎgme {KE}lۓ2'AQ^oxwGK{m{ $N3 sWO\izr!k`ۓ8<{=Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@gzޝ}[V=|v3G <8^InQ~Wn]?a+7Rx/~/.<5M/K[]TՇzu_ ykx> AC.v PQ\|<###j ăcyscW-;fpY-#]g8 v7]1[Z7I,T{XdžYqqoiy-̡cu3=yY\xn\^3pݒry{߅$gƣm%(Z@۶Kci@յk̗c>pU|7s]Wdo)pCֹHuw҈C x4r-uQ1ԓ)3U$o'|]ak#3'?:_\kܫ24?f 'ː}'5U mt5h2g?hhoE/նj yTrrZkڒ-͔Io"`HkQ^sn^5\M\g%nhNiO OyWzĝmqJد\ӼEE3SҮm&Bs #׬x:? jm,F 3جo[Ӽ9ϫjgo.}(A' ㇃5MlY$kȂ$OInQwmg'kuM #r0N# b<RA@r$_1k.Lyd@9E#ʺY J}䌩 ?v<$?lxo'|]ak#3'?:'T]W4 h:5\iz&c;!F"bPW4<[Xii;QA,p98E/նj yTryž.𗉴)-KGwO; j?6"hē~?秗6tZZ[VgR .8#k<'co!t_ ⹺G 0V=9$z|PMxú߇u;P32.͈R5kzwx5m&3ɻk<0rW7+F0]qdkoex9 ^/ i ]z >+{x:W휮{Vֳ<[7b2;>#}݉%w<_7 [nŭo.{daEqJmKM6IN*׉sxOU4F;&9 "U KaC@5g⟇<]KH\BO9)c%Ns9PEPEPEPEPEPEPEPEPEP8˯xVzncAgz% mu&dPrm>{u|wWct&} cb 0*{_MzOw\?ʁ*Ǯ4+-9YutEđI\d#{e|& ..pn-bK߻&*Oݵ=^A2A q`cQ^A>v'Fϛ=qsx ;km4n[?;q/h?m;]*YڡO3}w?JS7@ct{zp kx·Z3z궨ʥB#df9˞oG ٭/kkV Ө5?O5 `/ռ)MJ QWR2ıT{x;xF!r얲iBED%Ɋߐ{Ԏ5Yjv4QYU6U GSG^ Yc}Eo5ܩ6m&G'y'/'0:Oi->+N E=8>j“{9'k;GaU (<(?Os^@>& _^>-x.I?qW\xS. ҮMnX;~R@O/h?m;]*YڡO3}w?J$X>7LxyqvBkkKiպ29 tW ?|kZig-SMƩhUvF 64 x/!IK]Bp(<>@Er<׆4{kV,@QɮNQGj:n{鰩 uv)=X=(=cPV#BM- C*#pA8eǡ_OOѯ_!n.P׎V2*œ{}zsx{DPvQH}N=f߮^*aa{+7m%GZהּan<@NGZ6g|㛍:;Yzu Fd|h+S^ɼ{[g-_^݃[\c2eoWSxj%ĞT(Cǡ *:uPbO x.QoEķDnC0#>6~$j%.4 fuFA*Xt6OtQEQEQEQEQEQEQEQEQEQEQEy$:DuxI熿kD狼 hvAוbmOE=MLQ5[%SQZ eY; ONLhKKm<;Wjpv7Wo[xΧh$ ݀}>Q< _ U<[z wK*ve=phfv &aH'uPS>]&GRy\YpcHOQ8Z ]x몫ު%vls#1ᗌ3}|M]6Hi8?|I9oik@Yʶ27 ($ >/@?{p5Nx+Sk(E$b#œnwZ?!nCVT,jXN;* ͫx7^062FHQǿAi}cϲ5y`H`}zx|??H+8ǫ9'ܜƀ4C~oZ ܶ8` 7gr?=k.|`} dxϵr_ wMo ƫyu%бewc RhԼWntSZ\b3oSV_ ]rGoe* zteWeGK[)톓Z*^@gQjfSPG5&-?PsЖozEMFmjy e5Kz5 {%T<3#2@!קxoƯ %|klvXcd01>(agh_ r#Rbͷ^^+OVw61 B$ p{pj<Ph^YdkpnB HPOpK'<ut)py Z?ʹo^5$J cOm5[ȇ$y,_Ícß P$:Du|Hg y8J߹GsxmEWdq;eHד]->YxWZ;O$dE PMm0h]!ST1WxLI7kg-!Pn؀Q<xrhS\g_lt>,1LwO^>y8=I4| 'G?;IaXTxZUR{I ֯EŲY|ʀ$ hKǞ!+ԸfvU*j\v((((((((((((ow: Huw҈j>/m'k6p\YC,vщv¬ qt+~xNlon>'k7[G, v̪91k 4?Yi쬡"3 8 ;@$:DuD"ZZ좹` f,{=aWԡ~_"{oiq`4L#8><Rǎ-"ƛ46kmZYA:#QaW*Ɩ__"u>`UQ̄m'Ď?FJ qG( *mw?±k+h'cRװPmCۿG\_x>Qa m L|mCۿGUo?Hg;1ЭA2$HԮ?C^BmR,`Ϡ8uUQ6G+׵?4pip6\Jȫgmh&:F{} LYaNS&6ݷA]w-O־k_kG{;9n4o0}s8+ >&hRI&~{qFF:sxsVkOw vF%Xq8{ ҏqc^%X(3{SBZ/-G<= T*|$>ϏByHnj<9Q \qzv9 օa~ZH#AbIvgMT񷉮㜈(Ѭ`H$3`#ܣcjKWӎ)^#ʜ/Ćlv[+_kvl,+Hvg=9x"o.􋿄Z+ ̒@pqفWK{xe\(=>I熿k YGΉ_bw0 GO<7 ;W4u.OV{ۈi!(g`HN2} W ~n#h[Jd( }k g/"{Yc(~ゾpF=+k h35̴zxXa@$`/ H%<3Xk,ȕ!,> (Y&_~Dk? Կ)Y&_~D݄u $3%$B(Z/7${UO_ǎm-t+֗CA  .[-x }ޤzvk::yBb`c[$w#ώZ Vzq4|,{Yʶ:9w>7Cx݅Pxd_Ui--K/t8t}_\]Gâ ##~OA1Ѷ(hjG((((((((((;.BFpL[N=[ʘ vؒO@i/|2BY*/@>(}O}oL};Bx~#LC/$ڀ8?l^b֦O3}+UOAMJDRgmxᾮ$/5jwkeMݘ>sg<[[ĖڏVeLZ+h!ە',X`<[^\x-!{ fԌot`l`QR sסzo?6؇TtepH^}+ZZe s*l#'>`?m/^^/Isr䪍7ow.X_C²訫|+hK3Y$Hz~Bx+RnR{I]BEܪs=(7Y|Uoi.wPe  5!{Y)iVn8A,F120x@*h.M7ItkvK˴vJ[dg G9ߕz<|Hf u <۲aXKp'C_ ~+|G{wHWVV~jB73#<~1wskxÚI47ӧƾ,( VآͰ0/ր1)ɽx+iEKZ4qxg/gsboټ&wFHRO$c q]o'|*OE2̥rY\4i^kAj-F;;rsz]}y'&߉ q/@+NTֻ+MOw \-µ`;0緥Tý+2Az\ižheA}G2pFMrxOf4$mV~>𵮧j3O5ە6]QNrv-.o<߽jF7NH6H0Aʀ稭]?j]m)}8ٞG v~.?ͤjh|!1'}#; s Ei5b7*nJ v{표+ZZe s*l#'>`?w𕏃4%lfs,}=Y!@}8 P8VNT|_§FIZ+uM6rGo{w( c wOI;_?] e*(e/_ͳ|?p22:+|R7zuAd ##~IO!%,m\rwVmljM7]ucvV+(8t9[8>f9"լ|_ 6V1о}""jEEG$P**x&Z>[ql3UToF :ds\!h>$²_ d2 ܕU]( ~*H=RF;[++GZ>!x0{5I?uv5O.I{qz$X 4ddmOM;Itk6V (QQEQEQEQEV/4ۋ;nD}G>3QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE%OT6Z~` F_OEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP6u.ӯ5[>Mp{nQWjH++p5+J ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (>` F_Ow=?Qk((((((((((((((((((((((((((((((((g/JҾ߿+ (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*?-}?_0~PGe((((((((((((((((((((((((((((((((p5+JY' _~Ҵ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((;J`l|GC((((((((((((((((((((((((((((((((߿+ g/JҾ((((((((((((((((((((((((((}xڏ&]ua L# pz0^kc/So4W%P-ƏD!OQ^?)@?E?(@Ey"_hK[z|C /So4W%P-ƫnZg9<5xjմC~[m'q@EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPw=?Qk*?-}?@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@?,ZW8_}@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@g_J :}WPE&;%5ޟa? M ߃kcG'~C?U' SCt_M?M4?0Tw?Q'T]G SCt?M?0Tw?Q'T]G SCt?M?0Tw?Q'T]G SCt?M?0U$4V%ѦW qN6I'Tx?M5Bփ\x2K4(ZڤLW.pJq=zQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@0~PGe;J`lQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|Nƿi_@W ?|koVQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW'Xx 4+i嶼gv_A.{!yj0^E^[|ySEr ?ud@?Y3w%zoֿ|F5yُ3_-/觮J߆Pk*GS w^#p7#}x?½\O3P+ _?nO@((YjZo%7 nbp\8AVh6!J#@?$](8>qJu@I=+˵< [?ZBö5|K`xip2@ ]f[cI=OUmW_%$琿hE2+tEwpʯrXx^d RxYwr ^eog ݬ, xzk&kCe4Z@.9Ϸ5|%KV;%\grjvk|o.iwzơx튢A@y MOSSIU#~ur2zebo>><r$1 0 v.XAi$;4K ]-.^7F;K![ ;:+_ﴅEރl}o+{ . (@N07VwMZM4;f{6 t:GLFvnr76;&f, hqX Ax,ToRZ̓]bv[?/Czq[x+ƫ=((((((((((((((((((?h(zѲ%OT6Z~ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<X^Vl|IۮWVUw-}UDx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?uG?u?Dx_~o(Dx_~oG?u#Oýszcqi9h~ג(`.㑃_I|,Wd]Cn)_Oݷ'?\aW_ub{O B<˰c,Űc=NOwT~Fk$]()\AڼCz]Q,qyk1s"9d }}jSKFRM90y-W(<  i[DFB(T#}OoN=,.k+ ."bCFێG\D:E;`flkS>V"6q&1j( ׷^I-v7G@ÖP8'\>^Mt.@"`H8G~B(UPP8v'5G|;AwZt/fI7K(C1rIn_7ZFbmû J\ǯjOo!ּ?s3\C OhrɆ :g$`f ZƩ|-wY$uq݀E'ߒEeqY7;d@dDč*+Xfy2Kl2?#o޲ańdV.˫#zRGѯKcB&7H_dVnO4HQ@PWzfj$j:*wv Z x`ۣvʞ=GjF.j>)̕cUZkCak뉂 򼅔{2Wv?=zQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@0~PGe;J`lQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEyk+#}x':}WFOO%q㿂u`fx\`֯@?]y??Q,RylmS +|9^ ߨأF*KK7ԟ·V*[n}޹أF+uTtBR:?{z?abبErk2:?Tۺ w^#nONgO@+ ( (<ow: "xnԴ; 6ʎr@'ՏoXWGYҝb 1/zw.H7G]n:%M]cfǀ6>;TRH,WhbO~_Zԍt&I@@LK'U{c"yxߗ>x$W?o.H7@ M^>} Nv;nϾ:ܶR6HLs܏|w.H7G]n:maT| _O:3yݔy;ƹ#wFɺg'qxv[n܊y>!];@FvswFɺ?ԍt9Cm#0=)W$c&?Q:K7U-p$o,x'94QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|GC?h(zѲQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ?ud2w n<;>g 9?QsyyWR?,p$_vTTKB9A&7)?KQ O핳 K ;q(%㕇/~[c“$ea/[?нrR_?^ۏ9G/uF7)?KQ O핳 K ;q(%}N,>[c“$ea/[?нrR_?^ۏ9G/uE;KWS~dgS?j/ʟwG)// ;u/=+RDagDe ;G[ӧk+C)SwQEdQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@0~PGe;J`lQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQX,<_ZBA8<:_!x^ӼM~.7x#FQo_^, O,K1=@|_Q-/ujiD`h{u5QEQEy: a^yaO)O2$ph((_\i /t}uknƓjh%ةlΣ (Xx&5%ݼcd BGۭ{|sC+x*v:4xS5pD[W pǧqϠIESGw.)$$aT~TW7K/:-4n7jLnO2H:QϦo7 i6,[\bHV"N=:Ҁ;J( ( ( +o"xĺΏKO.U$@yy`UNg,gZfSpۖ+[m}Z{n`e=H k@Q@Q@Q@Q@Q@o?P׾j-wuAkQX𮏪\,0H#(g@MjQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE%OT6Z~` F_OEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP\xW_)O4 WrE$[uâ|5&HQg 'o۸hZ촖H,x$pn? UmDi;GG(3ц=}h-4at Zh[0 q5|Jvͥxs1#k˲C+`N ATy*UϨ^.ž bz7FHoÌb+oQ4ۛ;kxIP2k~hח[xuS7fac s'7O_Y[Zof-c&YBbX]s/<=DZi*ieS!z/'[ah>g,\GHV` -[KŒHE$U.~k hC--!Ӄq/HU!j72 !sӅb]okw[ik' RE,F YӗvdGwk@P9$:T~3kii7k,Y7 FG_Ht/x҉++H9 0{g{*vmIVN2sjCI@_8xk>v_%9=P'Tۊ?᣼@sCk<-K?xr\xnI]GU=b |L.et>kF7Kq()x?X7ŷmj}pnjwھw;|]n ";Ta 0uVǩ ? X-oaP?N:½+Nk9R[kHAR2(kcVU牢E״gTTYѳ+3gwXx=Ew$3["*pavz0#x)TmZq%6ZÕi1}N?:g(*?mz7t{ @OԵ{n3$0:Zɠ|85YUd# WWX~2п&vc2?h7~m|5b@{8#<xAѮTwWI8#>ƹ~)ռ!k cGYZ9ï}Emx߅|]i_k! % a:N3u]&_ $c#b 8_AY^4C6 6w[An X3h>%;qEYƓ&1OK1 ֣_t~wzgo#"UU+ ޿i>"V]XDBcK 1𭿈^&u׈k'hBǺhpH8>i:pZ[!Yh,՟V6\w7z`bGGGP} ÿs=6ƗZ U@d:#wSVs'K5hn0dǣO\WaO'UZQ6 W0|)ǤZiJj;7]ԕD<0r/m=rxCU[{ȕ(dff97cýiP;ZrXrvGc6?1>ݭ2rNa$6;ww:GԮmF!Z3!SaZ|asKOk.8d cR v ܜki@i`9&o(9sڽ,wDn d̖i q(;u7[֫}$JzǦ^;O-ڳi ʟ|o 1zUMWA,|AxN#hVm̄| (Te&m`7B"mCOqת[MpaĻG?T {QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|GC?h(zѲQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV~m{S|'֒ywlޅwc#8qZP= x:wl$c|w'{{W75KSPYO.0l0Gq]ێ3OzZ(| O?|F3"Q~?~~-MZ&h9c8x) n@L> Kw'ږ,$s%?WYY[i0YY[@8A= Cuxsn Xy\?մ Njywuw5@:>4Kբf;32_ڗ5g28,\8=~tP-$e߆YZc%Ep:23>|1w,t}g/vN1{WAE_Hu[Iw%̑Z@)+(ݍdk(A+:7<)okin1GZ(ſ lEsMo-hƻmgLHF{_jķZNKgrWm6pzS{+OXZG%Rm/!lGqTs]uxgi>5fB-e f!p3ש&J[I>ϣx^tf/aW) Tft艥12ǝK!ُ+3S>'տ~w+|6;c8=밢 (8|/oƦNՔ/$$ ݏg;6>Ry+s0pߋ ( */؏8?7`p8j_x HŤ ~fٷ^[b\r, B#=^Es+kqx?R7Vf:FmpaHȬ|<<M$-uK mc> @.F@\}k<^?ޯwxo:n돱9l䒪rr{ڶ<LΦn=^mɷzz?Q/(i>4~F|̉F[ivQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@0~PGe;J`lQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|GC?h(zѲQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWb㼰odɠ$0|G^^KIoQ%B :?iԅuP ?'ROנQ@ O/H^9?g^Ey-?sΏZ!xwH^GTAf85dD =p@t O/H^9?g]խWBIEܤTO~.]:Mn!q+'uWKJ_;WPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPw=?Qk*?-}?@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@y/$:D_PQE?^]~"[aO.6y(6~oёבCVUdl5(m#f I8HԳg WT7z\],NTw?/V!0l)?|EqkDlo'GBc=Sq R1rd6Yc<_z{:&h\H`cTp*B20k3(OSZТ ^p'j ^p'j (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*?-}?_1~!FZ(lpH\d~b{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& ?J& ?{ro({ro?J& k-xét::2+?{ro'ww\=Ő!.I*r }^KIoQ%ywß/"MHpzz=ڽG ?J *io;;YYwuF#pONU) j\e(>bC7#}x?򻿅⛩൉C E'zdʼ3Xq WFG^y]BNMpZN"2O^FڬnzL+'{KƏJ|=A/#%֢) jݎj~g/no&Y68R0qW|Egzy|EgzQ!EPEPEPEPEPEPEPEr?<)k,ɩ6&(-Aw__𬽽%b4W_y\g-? NO>f][oK/uE³}j_iE [j2R,T٢ZrK4@((((((((((((((((((((((((((((((((((((((((((((((((keo{5|M̭oF(((((((((((((((((((((((((((|4|yZmb)Sv/az O,Egn:KՏV>\/$:D_PFOO%d[]h!vv=2խFOO%CE?\.&X\YJ}jb%z~ӡ#'3KOSm8 s+]j?:V~GL׊^hvw /.E@zVLc&ZcL_.xKF!5z6^.i,%;YPp[Eq'W=7f8Rn C!A?WKGڇs{(7^x$ZY\\hi68qJ\/Fz5w?jVx׍"+ɺ2/+^^/+^^Q@Q@Q@Q@Q@Q@Q@zt]8ısj$9;FE'VV_@Wk ((((((((((((((((((((((((((((+ !пJ$@?%$B(87ׂ+&7h^ mز:}x o7ׂ+׸Utɣօ5:1L~ٯӪD]PLhR&L".[ֳ?Ə{!ޖ}nx^KUr[R؟YnpLg$\cq#53JjeG_=grݏ?Gc~{6t[.W=ba syFV<0 M'1wڕ\]M ^p'j ^p'j O$(((((((((((+^F-YG7~mJQRVd*qqF T8܌`]ySƚg R-?f :u> eu 2GB+- n.8y49oˠQEntQ@0KJ ȠPyJ }ô]7ėMA 5DF{ԭ vv=Ι, /+}R)[Pmqj?^ImG'.ϵ5Oӫ˖>qV> RGO:]^֭xR{BL C&=WV| )Ѓ(Š(((((((((((((((((((((((((((((((((((((((ih52 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (  xo⟄|9iI-mwy$:^Ey]n#zwFɺ?ԍuP&R7MנQ@o.H7^Ey]n#z#~$q&4h>4_C+T` 1E,vz\ .8'#yƭPJVPXl*Z̛ OUzusBT['<)RXZ}hjP͍A>Ku wPkr n_Yj?տ_J׆x?#}yc[ۻ3=8{^+Ijx\A:eudQEt QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE52V_@PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPX$N:;r얲J!WLSVx$O*Z?v<$?uխ/Y.H7(= ^x?M5|EaiO [Ǥ@mGѩALq+3Úxznl[tfs?\f ss{4ryr8gX?z5.Mz0mqz2GcxZͣ^}G Ų"nǨk/NK2\nV&bp~\W GSͼHg+?$O=(<7}#źJz5ظ,Q*êAz_? 1-be̋-B8KɼO)|XyF鞕|(5 {\ϡN>;,>J<0wD>}awj3}8&I~U[4Q\W*SOg^2ֶ:EpH_amqsiy17.}RW>٠@l8-BK#aTם[|y=ή"8o% $wP=(k>8Wkvɣ U !,!G\uxk kt1'UÎI zu*?ėBK%Kp6|x9NkLwxK`~Vf/Tzv6q y,~/xV5伖hBc4cu Kcs)kž/{{F˻܋Ձ9n ejc#^ vqB@EEmsWV$ 9#l{H*$ vE]Wv"NMrIm<Yoָ h+sXw h\4:N\{9^~8+34e}iZGwcu ͼ),.X{V+tOj^$o Q1iY@YC8+u;Tt֐$rh6_w67[gK@@Եkm3B$--7.@9q@6㗃m+=NYoݣvkiWdmnEtG'E% -D9v$PSEc:? jm,F 34/ u5[)dˉ"`HkV?|Ig]%s @ýrcTҴ71DUYw݃ր=GZ>~n|-$GynoxAT+vmUaՑH' ?zA4d>;卛1c\ĿZ~T.#,%;||uF+ x~n{ _@`ϓi}y9;QQ ?f6|'j~J/B93 ;TʾkȾң;}uj$P**"h4[K_i rQYBJ`#)R[##j ZE5Y@gb $z>}gNMRKiǼ̙^qԀ)'Ua}^w anbFGjּsZ=Xvb6P W k ߋ_5;x庱ԤKvq/̚mz }M?|sr8fiYxsUτP'TۊIH7ām'^2žAxt!ڌRb}+%O@*E5a[ $ ºoGZbSXO,9G8W ?J ρF 4uB7Fӫ"+OZl>^co> nfD:wҼO_uigZơ)Oki(0Iv d44o[T  {P[|Fxú_?Xn]Er6u/4)-{zX SS}|:p>Z@${ↅE~5YրBB㓀X`~l #.}oWT(0>կk>f#":dZL4!e@/kv5CI\|'`?񷉮㜈(Ѭ`H$3`#ܣŞ7|9w]"XfdC߅>!ZE_S{agZ@˷?|c9轸?j?0KV9ۖ`9|S>q0;jVooݣ,K@X7<w tM;ῇ㶅Mc Ę_>&ߊ_[|aEj.'H|{}' *E-s>0>𷌭_]FCںUTdD ['1[ox;W𦷨C%RY&"Ļ8 Fc1Ƌuh<1#: xOҾiz:yۗGX!"^nyK/ǵ\(q@G-tb+=N8XV=[~b;;MKR5nCGơpv1n01ꭒ䏻Ե/!{ i }qw};$ =@%ev+ A}U~F8b"mUU(???6޽ ( ZQ#>u~M]XM]X][!9%?{wS|PjVW3[\'X\e@pG#GYR/UL5ck_§( ݰil|ie |uvmWUD2,ڄziӮ( *̻d?t^Eo¶N"QKH}Km÷@K-D h#r%h'E"jZA#[֭3[8=OjMԴWi9Sw9;XWN}zPoVk7ʜc9& _>8K.$V K(=SIRN+;->--bbf  3Z7^com$$[kq "U¨q?W<74Sk'Ȃ7w/UƒxdZ98bh䊏3_֟˕?SGU񵎙}%z~Ik 6 $gnO5%4}?GgIlu+XaKC6H =ǥr0Ixo|OtCU>qfnHiQoNP|@$ mNUC$Kwd eH}-z;k+;_[dI=AcxA\D/棖-]v\ҾvQEblQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|M̭oFihQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|HOaNh:6ᣎ8%Qv$dfy^z[!ϮHƽf>xNEڼ6]+\sgEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEUmBl۫8X!yA?Ҭ?Vno[ƫԌN?B gV|rA٠BG2H=k{m ͻ|S tlU/ xaPRkRB+Cbvlghmä"0@6vOڭɐM8˞3VlȫuX_Kv6DsCHi}p\P#aLV&C5Zhu5Y# WwSEm w|Qyv.p3ҧSr`TKKɬmdAR=Ht4! ?Q|͒|~n*ndA-P]Km ]x 6dpq֏f~_fns:f`((((((((((((((((((((((((((((((((((((((((keo{5|M̭oF(((((((((((((((((((((((((((((((((((((((((((((((6'Oi:·}lA+ZriZqgBRp[{+S`yp=J&Z?{QS[-_Sz(((((((((((((((((((((((((((((((((((((((((((((([}_?_+ѯ(((((((((((((((((((((((((((((((((((((((((((((((OYm6D0)oA=OoʩcONV'oAՉ j&nY;dvak mS9Vm:Z^?foho(G\v8E8(F֕5N<(@(((((((((((((((((((((((((((((((((((((((((((((keo{5|M̭oF((((((((((((((((((((((((((((((((((((((((((((U8q8Q>KĚ. N #Ҹwk~*1@>MpGG]7w4[iodF iV_ mk+O_W_&6&}O"oҡ$Mٻ 9wVlH~BN_ԗ'io 9Uu'"3AҴdۧi` ~&h(CT!B=b (5 ( ( ( ( ( ( ( ( (3uvIwBҬAV:ȊAVw?!4`ml»O:)7Vlm!*+SyPOފO:E|1> $fקW|^?ZxSr絔aqWI g}S_/Ug5&Q'WጹEWQxsSY柩J$de5\D?tU=QE((((((((((((((((((((((((((((((((((((([}_?_+ѯ(((((((((((((((((((((((((((((Ɠk_[$3Ŧ\rFYDG kٵ ǎjCq"ǫ2'i'%Uj< $_ K@*|sU>z2Yci8Rp$z V¬?8+2?v:`șdۜ8?PVf!s&5m{uf%f:/U>?}? f{x@[늒<<%ԯx2@O' :}WPEPEPEPsA f9IPWP5}? 3hǼ +P%r%W!K;8mb,c5wަҰQEQEQEQEQEQEQEQEQEQEQEUMR=/K8#.Vurzd6 Ļhv?Z˖.]>H9Z8M0K?5no39=?*a_%xiAτKKzt{?:=W↯\HTIkh #\v_Ե[0=Ik!7+S`)Usסcp^MOO_]Ⱥ˴.]|G#r]VG`Ќmv;ȉת*?BƋYiO0[D#ЯT񻰢(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE52V_@PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP?'%Uj< $_ KGxW_)' *E-t5EkVOPֿ3YPzwmNFӼE7kٷp8W['1/kƧ2fTGk;y<61 ø+N4F1ۻ8zW׭|J*T8aNlzHQRrCSVJ<7uWp(:}WW,ƻ ( ( ( ( ( ( ( ( ( ( ([".7cqʀ%QK3Qԓ) BX%Ic$`ppy(PK+nm;%ã` §PK+nm;%ã` ¡5/I+;/7>_gX3Ν+˴U kJK ;S+&>I5mƝ=@?ZZ)݋W7CSظ=ţ^@ 2 T$%%&qSٟ3"ʛF={ׯk tVᮬ{9co2twy+\)oWf?>/w-:d1\&ۛ38=Fz JNRr}OT"AEuu܌dA(uSCr`+@=?QPZ^Zues ͻdtlTQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE52NC^Í?osns[; k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0Tw?W8?ZQ k5@ ߃kcG'~C?Uy3%>T?0U8 \&Ҽ!kߤyKrɲ#\*'zğ ψM&赝a:7IO<5`_C-kWom\M61~{Pk| $_ K@dE k'm\>%>Mim`AkK;X R{W7|Wu6kM9br`qqRWS%u{rѦ*ѳn,mKK"0jWp:r y?'՗u_9nR/ xQ jٿV8ۻ=EN"鸣+rx|'G.OϞ~S(ԟ]z7|K{ {蠎XZ RT'֔TK$TΜyd,ƻgο5`QEQEQEQEQEQEQEQEQEQE5A9ƙ%aFI}P5ǽğe6-||8qZvmWI=NH`p˭\Ƨy~W*<O.սԯ hZM,Dzxi:ZZOnu i X׎:gb~bҧQѧ2˘hwVl|*dV/^M]?M-3X5"$hr& *:#Luot.Xg2s nUn&Lt^ՑK`jNjo-K5-R^ɲ("ڧs$=:xKG<7X%..HD L>r8>gWni oΛqonHFE$y%RP}>]VVEue#42AS?bƉj MB%⣰BF%GAޫͧxZG["n#I'MpsOoi:o;siV^ 6b4—%WrFh]} ^FpSVlCG k3YLj'ǶwW}i~i|-cOx i-JJE q2xRZۣ |ȹyqy,m߆!Wè^UI\ $nFW~<‡A\NY4 aN9M?D𽬺=LH,ae ,k(FvvSt![XM[8zյ Lod屍>u fO{ѝn8t /AQյ햳`FȻ}3%q0HWoGִ|A-5,o 0#k?|[߲yk3gGv1ٮKK4m l]c!I'nߪm~[- 4hiV<46!iTvOթ|C H.CKto;Tp G`eEĖ.ym.Awm#8h뗚434}V85`%ǭ'>cN\75ut$;SIs$$D# _$Gk5cE.Ps*=Agug ?ڭB.zqG;?֕k{m5y :W# 8 5lAg_EV&EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP?'%Uj< $_ KGxW_)' *E-y/>.L}.-ܺΡ=ITmNNz-gUoICecc%RW9{{=+̡g^\ֿ#~ž8Ӵ鵍9p,BN3^+/Aj:^ewp.UT]FS/l??۹H[k2dpqһ\i8өO4q]w,C,w0QR;:-%H12H|DGf~/kg:K md2ĀV)ɷt^pz>\:;RsCZ ȡw__4K].:?סQ ?ud@?Y3w%zzQEQEQEQEQEQEQEQEQEQEQEQEQEQEU-Z; ʫz5cQKkk9qvoʥWnV?C __3G?4f?a$=?2id=G}a$=?2id=G}a$=?2id=G}a$=?2id=G}a$=?2id=G}a$=?2id=G}a$:Z6,oι .:zFEl:g^ہ1ҽ6,Lj66_XlL80V|ϡQEzEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP?'%Uj< $_ KGxW_)~4𭯁|=oq]-H俉YD dxyWKrp$$5ok7ߍ,yXKpj';o;+ʞ:h׷鮻o;([w6 _UWhM5-{[|.GkhM5-{[|.GkhM Ŕ$fV7"EokoZ+cc *HL@R9c^9Sk++O տ.-h%E$l]HB#5!EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP /EtX=>(Q1'(JI$(0((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((9[{ PȡԌA8a 4?CAEsx?M4 4?CAEsx?M4 4?CAEsx?M4 4?CAEsx?M4 4?CAEsx?M4 4?CAESt7Fk}/OGk ĥHPpϰQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@X2мOj%]Pgp KPY;9.-mݕA2Iy(zĞ%ψYTK41F"UqV>o5_H,̱, \Fz;YxoR |Cw>un"I`T czgn>פ?k\|;?mfKҿ]R%F9rzU+̟dIoT[Eq6Xp99+jZ7ln4BvFfRda^^?G<+[0M~s>/i u .6M7\8a$~5]=c_ <1ﴋ洵v_|:$+>"|G&MKLy6y[g2l %QֽO<5`_5տdkuy^lc(>kszPxιMiEK^@7\Yvjt1xЪFqf^#{}])Đ]$5{J%<$?`|![nqiAuM=@&O΀=#Ab|?jЂ#IžA+MF4+˨l$HdIAP͂ZnVoa'fAa8Tω612i1 Á>D?/z*`5/h:8E-A-쬧 3܂0>ZGx#q+o*GRas0j0FsOn@;xK.gmN4i-fh)*A@8_%w 4NbQD>)έ'H(6"rEjX}pFq@EyoXS϶+fW$H{kh'3kW#tvٜonb^ccៈ^>-ˡzqogˍW,Ozt_rE$CwBPVWjw^zU,XAS@ezU5u=̶v巔9#<w_ ^(ѡCwN +\چõ+)/W#]Ū<~i'8l2}OyV?-t|ax/I}kwst+(2;n?' Vc SݝB+ycg_((TmvIJs^ 4UYdKc .\d9jJ+~5[Ĩƣul8!K'^ZDG?G6OZVỹ-r1Xzu ɥީ- ̊m<r3s^Kŗ>l..+ nJI9@O|X 7݌{ŗ~%5.ﴛ{2ܠ8@WO*SomXoٖ͕ qr i(!wKQT }9#,O<zQ^GqBgמ'_n G>Iԟh RGÀIC^:_";KT"w>IC,R]q@G/#v)2OqG^ikh0 IaY?TTxN A^ |Ms ptQ Ei0{X[xW_( ۜ~ NsៀŔF[mnC}>w.;'fq uQڧ,9mcYa@Mυ|9k&FKw!t1 rGrq\cm/Ь<&T[ʓ҆ɘ 8=]ĿSQ!.vz =ڷm>x[M[KOŻ M`,pO9rgmhA%wGZm5E=/żTmvI~ |/뺥rO\}fu*  zPG<++MOw \-µ`;0緥tw?±k+񯂴hzp+Z ˃Xc{zWI@InQtyZ襫)ݟ9wT ک:l:6c۴v*p=\d|<ѼzQ53E% [][Uhm!H" rvd8w|'qŚ7DN/4֚i!RK1o5-IGX⵷ʦQu<JWOxZ|H:cX^5/ [s{wn[g*܂hioaC(rI @RI9 :z 3]Р,!XÙ7'oB:zV|FK'ZXV\sҹouqYm #RF )?1x,d!~,aTч3??jGGѴpUvp$iO$jym[? >ۥKc0iR)d&vg I~w2y*˞f|zCfqF|h7MznGHqYcpyn q]GWQX4epixZo4htR{`n]Ueܬ1=(iEK] .M{ᎹilIMn/vxwMV6@fBR9汼 Fi2Lץ u"3 w .n{+,aPd8ᾙ+7Ú,Xi% F-!qs / V62 {׀+4OX5d#9%Cy?ʀ7+u+enX%DY.B-t>&zXZjvrYCsm(2V|%Ҋt$Hdr ¼$ccckZ'_)cQ7'[_^2đkq]C"OQpW_užz(]^~fYk+bw.!cy'3U=U􈥷/9Vt שIKG"++ "Qu7kAm8NquP4Y_q`{;bZFNN< ;£FW>3Gmj\ǹ$O +M𾳮S>qԪ6l&3!OA@$O*Zoǽ2X|/_$eƀlq3ƾ |yCW pjX+.a9[6W[L$Eʰ=zo٦ԂmT#iEu V=m/Kh%kkV`Up6aoZ? ,[Mmذu*ã+A: .5_k:{Bd>g^Ҕna6Iȋt:qך^k"RۖyФ=+o kz,Q Z.{s#@/Qjn:@$y({_ ~_j2-1bi8O4n~,=EoDŽS6x/`NIS]O|)MՒ­Jm9ր1~)/ígwyi-yy'W i2蟲]%J )$ ߌWQ|f-\dBP]w|7g]wOkꣵW' *E-tOIaѴk.ݤh,㷍 TP3*QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE Node-path: plugins/org.eclipse.egf.engine.doc/html/overview/images/old Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END Node-path: plugins/org.eclipse.egf.engine.doc/html/overview/images/old/egfPerspective.jpg Node-kind: file Node-action: add Prop-content-length: 59 Text-content-length: 86398 Text-content-md5: 720d2e246cfc783423a02c5bd8765442 Text-content-sha1: ebd0f39091494ccef7b35bc82d3b7fc16827c6ac Content-length: 86457 K 13 svn:mime-type V 24 application/octet-stream PROPS-END JFIFxxC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222F" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ) Rnxۯ<]InQOhN.>%2OX_w@~(x]`r>%ʊdiu@;fJ OXE?9Ίώ9"urQ ܯ5!@cЋ?/&\ĿiEqx; KEo k~^ @E&EqOܜt]s~xG_8OXsGv9dzOhG1xf֝ c9o .?4" EcZQ1 G+N2-;Z+!lTY?6*(/ЇyQ gCبK@zB>G_3K1N_v4W7ms+fTK{*4nLѸPEQEQEQEQEQEQEQEQEQEQEQE\jdviyx^MĞҹtNJ0$<[-n~ͥ@*olWn@4`P>j^uu#7גKi¶@yF:V? (Žg_SPmPZ(b(((((((((((((((E-PEPEPEPEPEPbR@ 0)h(((((((((((((( R@!@TFKE&њM4(·.9́[?[_X88ƟmΗk:i fAWliCPEYxp`v:]&@ EPEPEPEPEPEPEPEPEPEPEPEPEPd7Zo"V/`嵅^Fm\{P{ѹGz]R)|W㩼?-iV0(دx?*|7;L$M)-%%քeF{ן[xZ~q 7YA:]ջ#K!PY2íQ@`GZᴩUrL:TBEyƄ|y {y0_+v6N}OB w+zNerrˉ͖$m ƭ{v&7%[mE<:iWG!3mn=zbwgqNJ/MN8ij#_NUWW-VKUYܒwZ/w.q2zG:BYߌ@#21AZ/IGq:t # }ҘG8ȯ1߉5+mK{f>{]9wu:TMouO;`'cwZ7Zt_2덢kZ_4~dM Iy{v~/>"ҮtkWB'G`=GsҀGnnqBZxuH AܓSi,ԲԬt##֍^ZТFm˙Ö93;KMc^Z2i#w g4nQ޸^R,}3̱sFî;p}j_$&c*\am94sFWO[6GDŽluX,El[3ϧ!Tҭ$R4=i7ޙ#p@UR^a[/; Z9WsbOK;Ѹz si/KFEb`vt~8߽IVhݼBK%}=y@pp3W u8>: 蚥Υg{1\[d3vNo*4m݉84ȥܾ/k3xcP}(궳v(I~\gԁkzݕnb~7wU6u}t"I@hfָ]|?mi@Y^_y$gI{DPmfqq~^ގt?!auWF#ַ/r@(šYLן_jA}}/u:&o!P@ E@Aij,sVtng8̞U:lQE ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1<[g=5Y優"& i}6#@AC[xZѵ}#şhz%˹ݵq?:U/nUQҔ(燧Ԥfj)0\L<0I՞gm{/s*>sZTE P: K> hQg' 3%gdUzUjJ._tr6k1jX]r)Gz(ƚ]\}mGI"{H_i-ٱ=gh^:o|J (57!AZim}Bg<]I;P#̭mᴑAZ^rj_fnҘ^;`x׆.Bl99Sj<hپтHX=qM ߹n-%TbZx_xJ<󏯵zQ&@KyEe{Lw6>q<ߚ.%@u'.txWozR0<@i OdMfK>1q)#+B]nD'sN?Z ])ך m-(nH_wyq'Kƙi ,,iosh[kpk0AF`y]%KbCks*ԟ°tsKâ 5nk2<潆+Ym_ȅ8#SGmtm:+ 0 vbǓ+<[m͍֕{k5} =*Լ%[Fǖ1bNT6A^GA]ҘEcVzLoyLxWk-`=( : QE ( ( ( ( Vn/=s#;y_ӓMoNt څzⶵX]rHI-Cμ7{QKtoZe:.&hdz'z!{oB6ŌR(q?WuIKRc 2:[/%6W{a#(=BF]GG 4bL Ku>sWPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]Xz<* JCx>[VA:,'8QiG|_隕 E^l!x8<:JJNInu|_y|W>٠c9-QwдO(o5^aϋ2v6}7sV4qăbe0|Q\^#<%p+o b--Gt|_y|W?ZqOA@ГO?e0:>/<+lGZl60Z)f%KL|:/>/<+R-܌:Lbm{aw 9/hS|Q\݅M(Pv$=R,mS8?e0:>/<+ZN3ݽz҆ @&c1Ϗ¹W.dПj1='ֳpWj:?>?RzǍdyX|ެoA<SG >?Q$4}=Xt_ެoA<SG >?Q$4}=X|ެoA<SG >?Q$4}=X|ެoA<SG >?Q$4}=X|ެoA<SG >?Q$4}=X|ެoA<SG >?Q$5Vx567|(q$iZ wf" ` 3)όb"NG3߽[#+5MsF2)ۛhG\ձ3kH`|ΓF4^4vƂxu$H c皮w؛/DWbM60bā&=)(5 H?i7,uh⏴EXQ刘gʖ2Ip*yWXʣ[&5(g8-rpGjЛPsqmuSGR6?O(.Fa܉>4j/S6zx`R4-tEUb\= ty|V%~[]eu}A8}*ƀ7OF]͏¨NM~ɧ.gn~tj:?<*ٴj㿧ךH-|ޣϏՍH?h$4s<XdyA<SG; >|ޣϏՍH?h$4s<+?G$d$%N>\MJOd'e|QXPGk<{28*=ͥdE˸ݸcj'UC-Gc3XpEis eɪL-(,+rϠ<*WBzGXq`Y$&ܘÓѫ}rqyXg֟3|Q+ j"XZg*aj+gynZ{IoV 8@ BJ"9-H⊥-hE@QEQEQEQEQEQEQEQEQEQEgkgn+z`|tX׿?:M7eR17zmƘ NђM#LL\#?Q|ՠdn=9d?eEV7>U!?G|9cܻ*|>ORp^gA J?}U!?G|=z?'(ϟrǸ]/QTBҎX *|>OQwؽEQϟgA J9c.?Bҏ!?G,{bG>OQ?'(p^gA J?}WPImHwwc֣ϟBҩ$ ablXQv7TϛgA&b32DD>Sex zV}|>OVTܷE*|>OUǹ7}ߩ [xUbrHI<ޙ?'(ϟ7Wp>dF\ c;0-84ƎX5dy.?cՈ?G)>Wa-z H#8hw~nw]𼙉2 '֌ZKEast 9K(q,X&o>9RǠ=e[exGepvzF\}h>gqxmA"[x&'qX(>oj~E!PI! j}~uzfp0/gk ,+iyc+8G8 ~ltf];Dk aw ri( %֒mD-ΎpL.^6l@V1>`}L#h%Ʀ]r# `5\9pK;hm"X- E7x8a Ζ[!0KFn+.Mxn[mcOd- ϝ3qG#v= 1ewf'֎v+-m㺎)Ǵ 9m߿?٠DT?foa=f&0f7hj*7h0f&0f7hj*7h0f&ւas7Eͺx6O }Yz \f22hb#U7MV_mR=YRK`]}Yz}ʤUM˃ثye^$m|ӖZه4}YDcɿ:?:z}>?٪$'IdH ʑў{)ٱ@h98Gف,٧p-h~?I [; QEh ((((((((((3_<A׮-pα!r6?eX^[~6nr0 ަkӸ-$c>Nx3\&>c'ˑm-adnK-#hU† r$}'9ˑ)1F gbiPE+k{i.أ7.>DvMfn,&9䓚Lo+i.Kv@8<8g.IY"yf3$1q;Sk,`d w ck]l60 1EGos1,jJɀgE;yV_{Veopϖ>ab t#w~ĶsƒGv᱀[nK=ky*[523q߭3PWpQPla sK@1)-,$a"m BO zψn%F[ +eon<,ywc99; |f+H22!2#(6dAJ|td$IT3f=UMz$@׏f&mKn\N♥;uw`q9MiA,pw$#&f6wq5$o@^@֮o?>׏c}P:wP$#F`F04QY зk $Al=zӭ"H6o-",d()%hP}~"lJ4'eE}>m?b\(eE},Bz*[_أ( >m?b[_آ4'eE}>m?b0О(eE},Bz*[_أ( >m?b[_آ4'eE}>m?b0О(eE},Bz*[_أ( >m?b[_آ4'eE}>m?b0О(eE},Bz*[_أ( >m?b[_آ4'eE}_[dE},BcwUwqeṧfYP)@ B40:3R'iif HP=ҶC (B+*GӴ9%IZ;1Y2X9'hK̇Tnn#q9,<.:'jWIM*¡vO-t5宏MKo+±~އjR,kx$ym:Svh(V<-#U$ r[ҨMY]^}XV,ʹnYZ!jiCs7OZ;Cl#<4YWF\*฻Oՙ,G4(p\czOjvH'1@ i;n>k`'_7ٔN;j̐R`o0(|~5b3]͵c g`Oҟj 7#Bb-T;""@><ܭֲMH#ڢ4pw]܌b]_Mo.TIf|H qr:W${& 4 r#1TzgךDIq߳ ]9Ez*_ФeE},螊(eE}VatOEAo}~"atOEAo}~"atOEAo}~"atOEAo}~"atOEAo}~"atOEAo}~"atOEAo}~"atOEAo}~"atOJ*[_ة#9yE|usE\Hq3EG{+H#N(QEQEQEQEQEQEQEQEQEQEfk?WPv U{@󪖲 ͣI" 00vB^ߖ_AU O ?-?)j= ~Tyk?*i?pG-}FWд?B~CBZt~U_B~ O 5 _AU O ?-?(4'Rk?*i?pGQ?*i?pGQ?*i?pGQGU-?(д?P,ykQGU-?(д?PбGGWд?B~CBǖZt~U_B~ O 5 Zt~TykU O ?-?(4,ykQGU-?(д?PбGGWд?B~CBǖZt~U_B~ O 5 Zt~TykU O ?-?(4,ykQGU-?(д?PбGGWд?B~CBǖZt~U_B~ O 5 Zt~TykU O ?-?(4,ykQGU-?(д?PбGGWд?B~CBǖZt~U_B~ O 5 Zt~TykU O ?-?(4,ykQGU-?(д?PбGU54_ێ4 O ^=ʷ11+MM#wUuF~_+ G^ul*$_7</hZUj6/GFj6/GGhZQhXؾbʫhZQi?pFc_AQ}U-?(д?Pб?*<jk?*<Ai?pGbʫhZQi?pFc_ʏ-}U-?(д?PП_AKGU-?(д?PбGGWд?B~CBǖZt~U_B~ O 5 Zt~TykU O ?-?(4,ykQGU-?(д?PбGGWд?B~CBǖZt~U_B~ O 5 Zt~TykU O ?-?(4,ykQGU-?(д?PбGGWд?B~CBǖeNj`i]}AgͨȮ<S^[?hHq3ELvH:RG'xF_Km;QTDĉ;PvpݜNqָV-^_Ӯ57_c_p3k~mKM&#BpC=@9pcytxu6MJ0L2q kGU |h͏}kvZwYFFK1i0+ɼsCt-ҥoջ*+XxCO-d z{}P i 6MYhC>Zjs2^C0~Pn.ۇҎk4 h;ɐZgךP(cZ( ( ( ( (35ΙeM{@iWTKXe-M)'U`2 $VW,>٦2LJ* nrIݷ;}W}Z{k6Qh#v1l0'Ԫ9|w6$}:+._Ρ:՟N7ʹ{t-J]>i5 e+}J1nFM7xݞx%g$qJ\.wʏWj^fy5C+yHD`sf@&[HC jɅ;~TrAM7]Dkn.aEc+nv9j-+I^.Ԟ'7q |ӎp;k%Rdr~\PL+3ʗnqzsO /hOG* =??E.ROjrK=???Qʂ/hOG* =??E.ROjrK=???Qʂ/;QM}J䩒VdG{(?~?J;Hii h#<7n)}|O/>_qS˧*pTViԬeh+< \xr- D?8^j;YY$J|g8' LgMN5ij_!Im6sVxGVHUP?9q[<:+>xKl㹐3.)9bGn߭z @P: ^(((((׿?:v_M׿?:v_Czjp3 V8<)֦V%䱴 9 Zƽ5)o_ʕnX!\uֵ5}:+C8#jVZ٤؏?T-R8 Wq6\α²s*@6tF;YƍG5vi$Q:d?OQ&.z<j#![Y$ sy<1voOe@ {wԼ/>f?@;*ŶG'#Ҷ l]RC>s ߊ+(Se⹛L%n3g9F[}=' n&IϹ4_VE[iV0K1U)i8mZEfwzj4 vkh塲', 6E-ϩoO5i:M Lq1N:繤:K"(j\"ʪ)DX$vOdI5҂:v2ڦv-q*9K6cSF֭4ᳶ.O`$Kd;O6M5Rڍ^FڒpK+gJW;!;$at0ѽֹH&A:[ KUܲ 1x#Ճ1Y֨4->]6 K%!+Z??ًϙW ?٫?W]sRiH[5f(((((((((((((((()-#}+{m?VMcwUʙnlnnTF'$$k" \׈tKB[{b%&)Foo-y&dXuK9G(e$#hu+}.\\ T4,Ks\frhO?S]G,`),G70S D[{$=-roA?7 ,"eI/md+J z_Cտ^[6o. ۂܞ Wuq0v2[0$etjXE4tJ%SU’ V(3:Zn)ȭkii,fr0ۖON1V uV+X}i6u+O. !70 a,wgw='Pgkۤ>lmW=k+Y$mgF7M,6o܎}뜹ާ֖ing`fWܹSq9CmV#_Z5́#$a ;-uy1(;o<l(#ZPۡhwy%v8z溡Ҁ 4Q@Q@Q@Q@Q@Q@Q@Q@Q@SW*Jl4A4Q4T`4-#V9-ŷzz.b/7]c}|Uͮ6i?ch_~ṇB~Q"W8\OF-BhHn]!`>ڒt]6Zjvҧ4!gm37 zk˼2 ~'j^{ify랟Yo~ )5"dZi|U EڴvL&_IZ[qٍ>[ _3ԯJ˂4¾8 #;$kQjWԠ>szpp?'#56iz:#j78_1O^E<ɦ-շǴ_O>n m ['V^;,҄aٮ .3ViZJDbQ SЌϋy~&!إU]qNjK? M`mP*-&0w(}ǿ|LL:yЮufhp9?^]k?Ple2Z]!,[ycqwFt:ve$1(vN2dr:(|gOlakptP-Ơ8O_jjx=V[}Qn@Ij˙*rF ǥY%:ΫM,pIBy H ֑E,pE{+|?6 "&].Ksk2Fkh)rF4Meie2e9I/ @fIqXZφuH6I=ΥT|ulFk_V J!#9Z!v%R9%ryM)#dNJ4Iܫ-g֫ZdYd Rb+O?6sT -6kw$|(lϥhnO Ng Aj]Nj'BDH8tcah((((((((((((()-#}+{m?VMcwUʙnlpG'U (]t3Fz{}Z *a #oj׏Oج Au`r91E;n-EH.Li5.>gdbHnInm\!ktɵ+8`)evxʞur_B^*C,7[&ƵEXdsۚt/L>B D2Sc֠^^iV,s;@ +3ӿ^%EVtĠ呋~d(|g 7)$10Umvs4׳.c85w!u1c|Zf@2>BOy=폄88KN.9~ &mB+E%FҪƒUfe$#m\3ҒPqGQjGT/. I%<:'WvmwnyK|yi {E, Һ SRK{UyGԑXzֳVxGgG,ycjZ<ۃdzc)N2zN Z[Z9lGn&/'G`x?i\ p$3a+ 2Ank9/ NlRr9s KY kT9Ec qP,қj%.#s t }XYbyD `3`61Ȩ&% mJ8W ~lH$2K2j1²}exKW^Y b]`qG<{԰.b+J\x~. dprI buGD;T )Z( ( ( ( ( ( ( ( ( ( {U;߼2hHP?hHP?hiFhCTtjAZEsQTz_48태A}I+NĿ]6 g#8_Ƭh:e[Du`(ʈ1ZTPy4P>`'8/xZ7k٪_7rrq]m!?iVpS. (&3 8z|7kaeǗ =S4 1t4uШ#q*kEkkf {j@mmtW9 Gjt&/0;}Vι,丶W{#rI*)5\jFѐVnAӭkQ@ ךZ(:@E]oE,4jd3/G> p#3y?$|sa7>',%Q);n8p^HȮ0xggOK+˂Hx7,?Z]3Jʙ4y;O?ԯ{/Qu.7|')S}I[oij8ʸ*F{P3]{dFCeN&eo2a$Xw'Ki[vf +{C$"I%}*R@[MjCPM9Um~ek9x(]=#`nr}΋Cn+e"ߎΣ6ݧ$c=(ݯaK4ĚO̭(HzU3^xiןf [6اY0BH<ҭC-6%+D$moH]xSMi|sPlziqn頝7P t9PxGAOMd>1mZ,wZ|< s3` jΏgu<\Ey-h~B2gLi}dL$SERpygʹk2]Ern<G#$% w,1Y"ܻA#j?Nx"KD($OYs5 4.@TȤ8=;|^f`PJ['vf4Asz#'?#j }4x;J,%g0D0 V0\wD/˘fMEDT\64A5M6+F~AF ~`  Xd@$gӶkRB7k-ʹd{y6XWMgc'&D-)17VQ؞y4o^]`RC"- Ė+Z_HbQV^Wq%z(c0%Ë8=R4S+D8C{HFolPo999N( Ν41%[,4m$f-k "B|pq95Ӕɘ|X?0ո|;hM()mr_ɧLr+ꤑssڵ4vKo5ap.T* /g|$Ca; hGC,ۧEA_F[]DaI7(0*98ٖxSw)%Ti& Af >MYͧ[Y64*к> БTlPynV/'e0 pI `Rx+{me!R$6o+Ӧ8S%rkLr,H/Lz͞鉞t2m Th671!Ƽh>"]tl/ (.?Qʟc[uX]r4M38ӚԠQE ( ( ( ( ( ( ( {U;߼2hHP?hHP?hiE(((((((((( {@iWT{@iWT=>ңo!@)OҙߗNc 9skdxm>[h@dsJXw+% gIga`N)+ %{K!Fs:+7\8>b{.ffT>ƻ;hq9t,X9=jMKi ind_˅Wp8E4Iͮk1ib[.%<\,mUwu~z[ 5ռs@!XL3WWo鶀%JdQ@a냏Ɩ]#N/*Kgn Fs3P/On\d'g12}w:Etk+ҡ )Ps~t:i2UvD (" 0 uQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEOҖR`r_V?+&B׻*L@f>Ϧ_Đ\LN$)ِN[vm. +|чfL巉p8T~@(nҭ#1%7_&Z}o(>wn䁍5w0A+9H1U"w_ӌP.Ӊk#;qt|N5]Icl JYqX/c׵i. %I#+# WAFU77R@%xA2UG eJy$q^;}81bc$5Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@SW*Jl4A4Q4T`4袊AEPEPEPEPEPEPEPEPEPEPn yӴ+*n yӴ+*]K JyQ|GJdp)5̛fPNӌXJI#F.Վ{ƞgzbU-o/KI#ؓ^s#wHSc@;NqXk i^#4q*d1ϥ&Mēv>srJ0pG׵qj\E}tdpNx z$ 6G Pi67Qϴd)FCbX12ݖ6Y`XG@ׯ>wb- \8U\`kѥh䐪"ǠBݭƍ1b9T3Եi-WfYY|ѤANq95蘚W&E "ہq^rf@ Gj7Kl/fXP2Fd@GQ[qYAi}xOAY۩mi;AZy.јbhyU-ͬGkKp {#i+ZҮ[iqpN=4E<ʭCƴ%ީxI.Z>P29?q+S=ׯf:`s4*p@ϯLףK=Ku bY6 hs}MKVGPá$g\.~ vm]I27ہzӪMW2O3_<lXʳ [slfL񠑗 yMʌdWUA#3Z1}-ah@ ʠIj3Iw>8eUBv}r cҩ\^^\`NOGffhiL>ROR rO^Is~ o cAywldx3*ם+]Ɵhue0i~k_4KLKՔDUeAbOԊh<͊+&̳&pRN9Kt$3wI#Y[g} 5Ν{s%Rw"6Hk*66Rܤa`vGp30:J+$xHhs p$I_YYbn QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEOҖR`r_V?+&B׻*L@f/lui wy"E$ n+r+4dH?juL6jLIJ!ʰ[z\ pCø}߇ޮvzL)㹊F5~Z@n%yPiڦk4dG ff1Y6hIV+.O2/Y(𗆯$G7kݐx>ޕC4V򹶺d[υqz/4(n!4R6R >6܁] -/-E"G9#IIJ…Fld}(:u hxHs8*ogƼ5si3C4n4rT$81t]^#gpj6~?9(Ң.|[[Z\5n<[o:4QI!Cf*:9EbHƑ6ݮߌUtǽk{ \1nNFGhQY7 6muu:i=X= r:U#\o2I{ <+UfA_P e|"rź)%I1q4EbVjO@{f=wL;ؙ1/8E 9(((䫕N%L ?(?*ctQEh ((((((((((7^<Agq7^<Agqe.u<>#uHzP28JheH [E!Ƹvy"9ƺ 1EFZErT\֩iFp]cb%EXҒMX-sKmM T)o ګ\xF+nV(h7fX~rkhUE-PӵmFEtaIMZMB-UŀHe ˒vwpx?V=y/;JH_9$b5-!M(EZ 1$K!IV5$%G 0Hn.W*qsJkk R%o3dU8`? A[[J:|$D[Ay~X梗Κ>$9H.7^@5gS4vZ~Ko{2-%ǥQV ۛI0P]&z ^ڐVfܾCaxNNKwVdv }j^) ôK wUݱOs¢ƺlЖ;& Gg@$qހ:z+oh ah))vTxYULʬõWp{ڀ:Z+zUgi8 ϸ1Rz*Ο=XYܘL+( <Tt4Z9_y HU%m΋qZȷgh.M:Zu_Ii vT,eP09?=YŖζ^ Z/'i3kaq IFH8*ikGnqoq2rqc@W=تĉ 0+3Zc6 4WqPI1#ӨaQڊInh5 3{f#P}GJKUʀ43K\?[Iup-V 0[JMХJYriwtxeL4([Rm3G#'b2Cq4a٥'';q@uTi;DqJ[5XV/I{|ݳڴ0 RgtX0| 84GE2&. yO((((((R7?JL^B׻*dV?ZXܩ96yo2\XIWl΄޽kj12{A qbjz嵅Pѫ4E]s3Z0]Gqn0V86STDd~={EݭEsHUGXx/XE'rF~i#CTYf.HJ$-|w^ƐOtn(|rNrzUuvYt6269~S@+H;fxv7%XAM!(۴#J =Fh-{1E(ޤq皺4&K,cEd+ EqSiH]{wp\$~uj/ȀwLn"aÑǦ9 N5{8Ha<Ըv]Eυ5+3dYtyQ nc=p+nVT Lq)r .$⡓ \hy<쀖U=LC ̑93E8 $${HRz]qeB}͵IL_i8pA:R:Xх⼪F < )tC>? ]$ka5.ln[:ד<rElHF)yXe1t##1Ӕ!,!i4|qE=%cFQwo !@9$`u3ܲN>Kդ&k1 4ۣy |WZ}4 1в?0ϣcNuBQⵅfd q;R73? KFӚD%*` c랄VWE-<ӄ{mJ%^p3V*.f*koZ\AٮI",)lT-nHf l q,)ˑhfY$/ XV8nz>5V+z@H]F(Db#̍#ttl;}r8CԢη9턑[l@8梻𦱨iswun7<"B`/wR*7Kn-(L{|#mϡ4Y[;hh–*9<ݩR^"mLg=[ VxcX*,y`hG⧇0\7bsttd1Om[WtO=Ρn iWWе9nn#o$Oe)׎MKHe9R`c9Qd{VtRKai#lMqEGw[kv(X an+JڏuicYmyaRNJwtR\x^teDa /wZ!@*Z//ҥ(5 9(8aiV%,H]gaA 0z&4DYO{:#P5*͎{+WX_apnYc†;` 7Fs:Y c郚˺Ξ},I5Ի7\iűn|JfrA1MY[% HfPsy4IgDf ؉IfܬFG_¶ҤUGg[5m6(KM`c3Ϸ5n=$r]"2rpqQ>ZfKIVH@U |7_jMwqoy&Ҭ#(!vql4c\ʸdbx:ksM^l*0f$=@ZLHy2=ynV\{U'mKx%"020Oְl|c=l1Wp>9ڙVw'$oM{=c j_Iqs;Z(0P _*x-n^[i0F:cV=ߎ[#VE Y@?Zѵ f 8c|72p9Eb+pix. hQyP8EKٵFֹfDݑyؒ[&X\zLKFps*x|rxB)p>H b  zN_ZN s02m>$TC*_q#(KGe_AnsT6*[fHyFܜUa0æ32! |ɻJczGr.wyHQ`ǂ00GsZzN>g[l<X\ҫi^!\1 %wH#ydpH#޲Rj7YGnq?r23cR ٝJF"h6A9_Fq)JUxr?/Oj2*R #K 2)D+L 's}2Ym :tZ[,2tc\.V&;H\8l1c[{iSEH0g˺-he>Ե#w4ͱ]ؼ`62AޥngT-|Sk1.4V/9$i"## %pz"p>&Pqț@edmk 6@Ş>b]GfZn2FGOz'd$ZyfBˎ'4/]K#$a),GGA'êWrG1`C*_G4_h^_\\Gn1,R"BFA":֛Vi$fI@sc5m]uW2i}Y7 p[e!lslJk8vP68/#SR}֍fciR:ss[y6TIHH-mmjhnldlX~yx>{ ei|H9| 0Iz)?as2%n3|UwDS^YdbPŚ3qW[EOS=Nu1a:zTxN1Rʪ05 5QL ä[>.gcgz%7+x{F)[DŽ4}$`˵Nƭ BP4kn P;G[أiI%IZvڗOt?vٷ޺UK@)h ( ( ( {U;߼2hHP?hHP?hiE(((((((((( {@iWT{@iWT=>#uHzTmҤ=(_~_KQE{TQEf,9CC{ rv6hcTY#aV{<xKer FwL=[etav1B/$?S噈*Sa`k)پ 3hcY!xAFy^ i\ @Cn)9BZR7 +vsJ#4mNeaAZ8 LY%YHߝs-fLtR}m"0e zA+u]VI&dR&2X!z-m\2 . KgX,є`g!rwa8ɭK W$RBx%e%\唐A NJXn.KBbr#pF?0Vק=+kRԵ KqҕXiVAaڒr= N)Gixf]m0+{3kwml20VwCduG-oTkhH] +'Ml:Xl#mȀ>֨{OnL 6AtW^YA֨Z֥mkژYnkJ= 9啥i%I] 75, -Cb Jؑ8x{LEn&wcɧꅴז5X@y8FhyB0 kֵFO \\ $ FO mkY"RA5DxKGݑDҹ7}N>W-?N3ZOw;qex#c2S8_N>-K@c{ ch>Rͬ R+.`CPI.r&amwm #8/4"\#pB?2 6o{m3$%84}6 .YerEY3lBKEQEQEQEQEQEQEQER7?JZFIV?ZXܬ ^[O2مgw:K4E1f;_McZޝ[ RJ2#R ܴM6)V 񚷰ȼۑAO:J־ӭ(K%cpFFG +įɺgUc`Nw^yrDgks1cn9-# ^G,DXBgh$qң>>4p"289W-5F-l-2!haF9nay&om [eTL1D̛n⭒u7Zukkl*%< GᔃӎL8*mڋ#%NTNMe7ó\iLbhscp >o_=͔Zic o@s2_'IqB{:ޖG !#@U,@9P#lay o2ɻ~s5&tu/b=vV尌ȩ|u{W6gqB \r~wn9j"^̂S' dvoknJqA uEAA1SSMs˒iAnEIԱ$بc8qoS&Кin7|ʻsFut:_M294-{r\ 8O4nkGw#;\#*9'ϥ1JilW o-_QCon1RWqIQgCMVS24uk$q@L!MPX-nb"키r3AF c&%((((((((wy*SS-4f4fQZ((((((((((׿?:v_M׿?:v_Czq??ҞzTm JPt`u' |D'H]`3\nT# p?xjOKkmb!Rvc'epJé)xbd@d߭s~oIrݹⲮ.]ukrc|j!1,2Iocsg5v1j1X { Hrc_#9:jA0`,b$61sޘ%vz9 qX Ƭ.iᶇ8K JLE͒R& ' &Md|gχ\"[$7% {Ί`!y6rT(r|r+t5 &+Lj0Dtb#?l;t]U>ܳ1L6ǭz3a-DۼQJUsfj0鲬3IVUG?rX%F!Frv 56k6r͐mE}βym2/G3H ?qI_y_^j; JK pN,{BgGUzeEg. [,Mmdl7'jd\zg\fl1I qA%յi{ukvD'P7uY/$&rgqⅨ7c So >[{fvbg9rc$kpƨXȮ pOvCZ5Է0b9(C60:SF)I#=QRJT:}پH<,)%`(:~Ub`U{ Y\<H,-`#xQt5= 6,Z5bkezCG>Rdޝ>5n*(#gol8-U ES]𭕰CAᾣԋi.Ղ%^8 1OʬQ@c㵉{2'ԟ^iiZArc\պ(Zk}7vtVQBPjuQEQEQEQEQEQEQEQER7?JZFIV?ZXܬ ^[O2ٖ."G#r㚙 l!vcq+ Fnl⍗C/|ǃ1z߳3E$؈B+.gB]5žǞV%62~TX`cu$'g1|=#$˒w|?n=N}q\)meکCTb;_]?ڜ_%ÕL4L} 玄ՒwW u[յDv)M[$)E( B+m/-7Û70@|=Rm+Rҭ`HU|e]Ip:({{#p<0*7c)bq1r695hɦ|dY}ܻI$7' If`Do-RM1,"K³\}3{{9bdx`tRڛo,let\) c⹝m;K3݁VRjth>so$mhV;h?\ z$WV9!3².8DOY!y) :μsOozN|F$;8GX>S(ux[RK{(6 &DI>vP ́L֭*kδ)snڍ22_J[y4+ {$9z}aB$tu4(s HXq)Pv A@ ǭ8 R@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@#}o~cwUɺʵS--5Ȋ"`H' YWW@C)wK/o䳞XR9C庍m9J۶{}.5f&d G,lH5M.7rp\,I=tm~ve@n'Mu>"Ӯu;xmhnbH@9$d&Ÿe]^$x.`APU̐ $lֹ]c·j; c;4ă@b7r:EየEnB.!3'e;(Ex*Hq}iqR)f^ h˙#(eTyx~}*O-GrFÝ>gaܓ15/H8fנjp&O16^yNƹ}F8aH{IȌsi0*1kw1i3Q8P'jnԲ܃,7J/-5\G?p0iWIcGjo~H9,*ƏB n.,O,`ePmtc3 8ݼc?Z>oϋ Wc=JK/c)I n7O F;+Uˆ>(A=u;k#tu$d25`^ېM28z5N[KW I$FD  ;tVqa1WtX?1Yoȹ,IUԀ^?r@j_ ]ipc5ǡ&m.[x*팄Lu?>ϗ88gnZK#< Lm?0W!9֧|/!2XEd}EP_i4A[N* b(_ QՂG'q+ jצi-t2"In qNs 0B$85+0Bq+M.(3pQ}fčeQ{-L;xcx׎9=[C<;T-`LȾlaeF=GpzWnRm84KZH {?Z↸U?xK+{n.aHb;qXEϊ S[\h fOZ53\k>e>JAWj7z-߄E[EA-FX996?kEޙO="1H9z~@nQ1hgfOc k]ŚZW ;W1 O <Ź\~\AKPfX0x~iv r 7yOߍ6CڅنS9\^+uE5݅R\~M&NKwOZ5",ʲcddgvt/ѭ'ݦQ"vv_m {MKlZ\FאLNa[nkO8+Yp4W<^6vw0L ŭ^EFvǷ5>*<Ѧx"gf#gZÿCy sꭴ}Y$i5iޛ$..&eyW1U<{ớlԔ0=85ZmBe>NH?[G76H$t^bS5ew>3m? ^OGFl c82:v5npy# d]bj,혎qg=;[E!_òLG;{FELohHx߸۾\g#ƭ6V8HG/D^mBkhhBʪ1`Z@K]+1-ΜQBQN@9@xMGIľh7e;[!H$ Si7#~lwq8+^_M4ڄ &%cm*IQsCEKxD[^?*Op8.MiG%,H$sP?trzqqY#,Y-Y0NJ3$ͦ'8M:!}%MlIqcR*PV):Y:M]vO,,RJPJiAq K$bD+U@gYOhy$vڐvð9XO4L e*!21X;6,H ]HN5aˈukp4*$h[СȧRK@Q@Q@Q@Q@Q@Q@Q@SW*Jl4A4Q4T`-]Z@`+I*SoeIUGn-9.'H`e ö oiL cJө7ߺwszOiuem yc3xBѯE9ꪌ~{սCĚ^eoyuv"AebFG#hdiQݛӭ䜙]Lt/߳B.3򾛺tzX_ i\БTW~9qF TL&˛d~n9֬21\D#}ڨj(tCn/_hVhi!y}jژ1Xqr:qP揧 ^[ܴq\#t]ios/}[ƱG4ou8n $BFFOa@Sۢ-lA 0:0:抐WI m8 utI;H.QNBבY N#*B_!@qOMtڅo !Iړ Mͬn#6mlV-V[<bRGB8 'a]2##"F1TM.tO>¬Hh pjr)b8Zϋ.uo.`6206O~E֙e} Ճ*Kt ֭*p1ҹ?:>|vn'wF+'Li HAk+(=i\x@[< |zoֺe9P}hiJZkOy%ot^?LR/+W.ZY&_>WiWT='*Z?[T )OҝMo~ȇ#5].h㹖C:*sÃ[1YoJe )y)2]@ ÚmGU-j5b`@7gs{WAkl gj z,w AqœZΫ&e q<H{tj|owjr+|nP2mrیpLR2ik;f + r-t=ig潂K\q5 j8ը|/$ˍG,ⷒX>Hoz "1]e6d۷m;sz-5gt;vyUH#g/ +WvV=đ\L9ѹ[R )QERREPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPHt)i&/u!Xkicrn+{m?Tt fTCm] ̐dR3,w1=V.mawggjz%sJ+ ` =M_[D[!8 1c524%TIf#s| 5cz>f/:D^bv cⲢPMS799P{A}CEslRʞ3YǚEt vǛ+DmX*r9-(V86&&n$Um?fWV&!_+Tm"C,pix%s1ljVRK+eCm9Ҭk1|=movJ*ANDuK>`4Ы=2EIqYWVMlH#4.m ]`#e`B;Mhm?Sմ)vhd~ WIZvr[@1$̀@z} K7:u  tZZGxi$p mSkOu6:3Acq>˦Y4iAG@Z?OQLluUU9Q4A>Niwmmb99^+?)̿xӎ5%*(¨PbkFx}?˷ kMǚ/{L *ħ{-!@W=F}åeRm'_J]3JʼB3K?+*]Kmҥ>% k}S[2<&4nia"o$Ug;WWmEoip~Ұ!$ o]7Q{8tR?5WcDr׈LO5ś$[Fd602?ZuY{k8*b 8-̭WAny3%}v}sڨ뚕7V"r/-VuQnr9U uqiV4hd/rl]3O%m,rg@YeKt]=r6 y'9ޥ_jW[CinO2A*DnCuQடGs:P^ӵ'́Eȹ ǚJ{ҁ#" knVs^S@`Iܳ2º3| o@֥GaBª H \t?Z[Z]j2C$m)q[uJMaFbWO_]EPEPEPEPEPEPEPEPEPEPEG$3U$bO۝QKaHWS q@zQP3HXКuvq4.R~mPT-5[[ۋ 2}ngؑUHt)7zBr{R`s7_V?+&B׻*L@fV>{o gYgHʈ܂r.[6^uS368eޝgu*I5r9`2G֮#[qX81Vi. S)8phJKi6h#I9??GH9VlMm¢MpáJZmşjzd0uhWB}L|B>=r@"l6E5 i }y Q:SFk,Hd+\Xc> ԮmR.y%B0Rz Zbl≑.30q#:hmF29#" ;޾RwqnX ܞTma}4)u[alۼq.|ێFn0MkFd2>rr[sDz& Dv0,[Qv*`aT~$7ks K{$.b/E*zx-+[u E-fGS* zךԓEa{%F)^NH?Ie Kd9}5 ;Tf{c1ށS:`}jP$NXI Sc#޺Vyu9.n\InHqT#ºCӡ Hn3:gz44:s=6 8@K''F*ޟ_ u쪬db<_;Ӯ%`0N§4ImbH%$ȘrF 9Z-FK0Y1 f”f%\cNl 0Oqqn%~UiiVLf 9N2CFr}K&ͧ 9c6s[Ar1QҢGqnnMR zm:׶/l rZ^=щF<k(̠ye! 4m>[(mQm䃞;.:+$g0,q3n>bnϧOj?kihc~y`!Fm''+:]1-k˫VQ?⫯dyFA&pt#ӿOZs;t GA1G6Waa]JW{cf(g ]{K[4zgҼq+fqⁿnq^xwj3B|oCzD^$'[Hui.$P% V8_1&XAEƘ.2i9[HI O203=it] ]Bѣ %LD~ddYX{ygkIH{'יYkx+N}*Nv?WM )2>N(mM& 綿8Y$`5x\$nv͗(09fKucmi vX|"3(t˩vNX6dqH4QE0 ( CҖ!п|M קWUAz3JʇRҤ>#uK@št)*HS@ #tW+mJ5K# 9*`u0  7)dヂ3E-q\Mags}Ɲ[#u$y x<{Xyaڲ"5S[\F Q qS:4~q{(4٥hD.c=5;XmqsKv0@^kdW7 n\DUg'=iOUMiBYgՒ@:eNkK 3m2hΆNjV7 Luqt<ͼAxcVo39Sc8CVNsxrٵkxɓ(N;WKx.K j;^; <n5ρF!R,Wh\J<s]hZ\ T TBM~7lD2*G3qO5iabԵo绌܀$y^߆;Nx3닟1LmJI~4׮,eҮsVK3JmOʪ~\{{u|FE#UG|OXYMFi+۪``Zڿoo|Kk"G 1޽Lg;/ܗOK#X T7>m59,EΗVѪep]l $FU`:{?O#n]ˍ^;YI}sUQW~g$=sY޾#Ռ"O1==1^cTx rkйi亁!*öe\)8=+[@կ(2nUģy3ʏ1cŸf *€HS%Fī $t'=o ꚝKwr(LF" $'wO^@41:ѫrAɥUE8 %Ōzΰ)Ē9bP(+]ojci'+}BT@3/.6Oq(yƟ][Y$xXyʨ̲+گCkMcurf4 Fs?w&Nsuol`e>T#(@s7z ^EĊ#4P=dMRJkx}HZ]],f)*>|IkHP P IhSm4uۥ c6`\JFR#<I.{cpBdzbZN94418Fp#T,q2$K0b2y9i{woOmIsxeU6,rF{j!ctaA 98h]vŝK3ۄxTd,EոA)Fyh}>BnQscqQk- DO8v&ig ¶ '0F z>X9Uo +ӎJxP;QE!Q@Q@Q@SW*Jl4A4Q4T`iZŠø>r:t"YxKCu!8p?[V8+Y|ik}Xs? f'*O9/AF)i-hz~Q6:1# &-g}n&b :tEhQMkI B9H*:`A:fe#TxkBc[WFnt,Q-.Iic9G^/G m M\OCVi ΕQBqjj5ݟz|SI ?A|R2RXĖNZ$ʆs|z\Y6s~刺=\ 5 aO,˹:~t3RPH.H͂ 8lQ@Q@Q@!KHN(o]sJ.Ui"swǨXp& YO+>6ښ SW}\U~!@M5 U|1+g7nF7s({ *Z?oR0v+-6u|ߏkP 9QMV[J6L-iq) 4pA#}29.4嵒# @@y>KNdH/܄8i?Uxu K +8l}qX^+ԯu KF%*w0Q# .O cJh+R{=n. [g9be?^*7&P8;6?*Mo~]5VfB6&@6CZHG0# A5u!Xkicrn+{m?Tt faxUQ{#K Ƿz޵Yw,C)AJ7 K*K #tYJIXI|OewZhq>Jn Wլ|R#x#vMurIBHQl.OS-nK e۠KeX?xv7 ~^ȮxJf |Z)Lܐ דRkkuɖԤc9qִ'32KV%%bP quOMt#6}@`շ{wY:O-PxqW߱ؽ۩d g=i08'ue35ydcx̪W'`뚓Qdkhy*21T* g' -K\i^VxLex\x- K 04I!ss4K-ٮ渚r1wt נEoDKsaky/=?,$p+.a%SJD aoP0*]?_5H{;@H14ëq^%H9oݍhaX/p8ʲm|Caw3,!K䅒6Q1" |_b]B \eAJ/FlQ\Egîi*@2ڬ[])CQEQEQEQEQEQEQEQEQEQEN%\wy*e~?F~?SӢ+AQ@Q@Q@Q@Q@Q@Q@Q@Q@!KA+>!N>ThyǦxSGU>3JʇRҥ>*JQE!\^]rG5`P+ W$bdQacUTM!F$Ifsp? cm+koۜg3JIXL}kz5%XC֩B?>Z 523d=y5jw{+Mme&0ws 矦i63χ7Ԣ͝eؖ_ݾzqڪ[SY6,"[ GRhA+դQNUG2Zg-)V*ܤYFtƋ4ϰ} |C .GSU𾦏 ]BPC)l7gyj]5m;Øʢ۸fWmϥY>+I#iVK00puv+4\]iMјrc^桸yMRI2Mq+m(\7^}*[Kh"[xİ̊TG=}}G4y^%HHA!2P 9 ON$)nV9zPEQEQEQEQEQEQEQEQEQEQECY%pA59x 2L@ZBź.`KY`| u*?]CgRhOJV;wvͱmnQdm 3Ci:ftV(o_5??N?44OsfnzѼ wn$Wj4=ysecɭY_ܽT ʟhwZ5VsFiB>cwOv-dyWRr )ʜzuw K$$ƒYoS|Mof-2tq>FucmT_Mj |SUw s*6>\'˽25SB Ɏv`A?"? iF{1Gx#GЯ 4ڲ\I_J8]?:޵/b@l~u e_T7l5ac>,&]ړϹ9jƉZ:ZY )0䜞itu!Xkicrn+{m?Tu1C^jWArS$˝@#kYmLv*;V Y@wTU9Η*d+zi>"Z{qZY+FB>Y ݷϧN=:`HERI)f;[IZ?s7hF9 :>8dv葺.ߘgVΫ\\%B\<APIx63f+$[X|K@dəH$y兀 Sɲ+{Eɕ%yE<|WJ4ۥcݶx$19R-a,*1P8 ǽ-nF6Hgv2ԮH>M߇55{(m-ܶəJ~L= O Ehѯ;J#6IGOtzi#剰zdkM$٩W^pb@ حNy|xt4,UW*cہ{Tڧ]CZiEV1"|O\ ,5˹*XsOorq* 8t401I#k[8¯'X/9GL]tҴm]c.KXn [yrGCAg+ w&fp"3aI拈騬-rQ IV)f >lcJZ( ( ( ( ( ( ( ( ( {U;߼2hHP?hHP?hiE(((((((((( >3Jʼxx++*]Kmҥ>#uK@Š((jyd'3]At? I|۱M\Nƽ嘸xc>Yr9^5xPXMwa~1 -Wh2N+7HzԐ~[rsqTEfj˩Ũ]kǽ]3>Po O$g@=@8jֹ3 \ HGpxYsxYV 7%ԀA 989(ŵEzKkXF(8`H147sn$/WV뎼v6bLVehDUU0I'lKXcFFd d`@ɭ0Gix#K`#aHqQxfK ~\3`^zU|,O*ǵ.A. zZ.+juYdz(|K6^,^7#*܌85xɮco4=h=kƋ7,vjѤ23G;/AqmK|v慨Gq~1^M2ɒH~{}(#1[ϩL(L|{P?MlzѸz4޼\Z,"C1玝9V&m/gXUuFP(R~GA\ص4q4';d+hfAq2cXŁLSF\NhC+5aN'<ÌwAm>nk—F N8'=hB;m8-q? 1G,?0x9* k"D4ms-,HBŰ@\p-N-kK7ls$goq\޿R^ژZѕmJOIFwnŜW6Ynwym:緧~dzё\a/$*1Xʾ7 C/'# M v->%\J!6Bt㑆uuU"y'Bـn`c^q b"AFȠ#֌j|qؿјM ɝH~aOAc-X^@*Nʍrz2=ke͍59'Hς|g}1ZoS~nY {(ag5ӈ I ԰-|Abz+JG7?Jw[\0*~cwUǺ?V=]mܕ b,:S;[Nc&9Uc^O—{x*uV_$l 1>5źϘr?![O{r4H m'q|qtZAԧ#ce^Ũ9;#FkNkO/庂Q$P{zt뎴֠uW)Jѯ^xV-Phx!US t{ErOtgV:t9χb=W犯yC'%(wE'90; +SMֱ5XƩmi._ov%%d#8z :+4/uxwxDgό0x*a#c\My.}u\-̉R]ApZ)[UK%qK"Bv<:Mslx;KXQƁRb0S1֮ϡKa4NO5?u!1[yx4nFOϽ>OkvZtwwV;C8e|+6O^zsJdkE*4ř2AʞǁRyͻGL9 ,VAEs D#G Przuz~WHvw$  <kJ,q; nP] %3Oz $&{w MݽQ)$ V. 5 #;lv ȧxGK6C +![fhRս lBw I?xԜ} jg.;gi^}x&`Rnb\xWNy.[o)F(R; +̉fH('b;+zƳ͍crLYbѻu q8pG b8QEQ+*o =h.#t=fƲŅw0v/j\As v\LrpNa=RKKgу쉥%"-49r52yiCy۴ބJ( +1jmi.I.9 y]2%eqlP:}nÇZLF!$YRʳ PgMw@I*}+9/60Zncxeep g@#}[cyz 5𦞆Us伞of&4mۑԿXq#HZ9[hڵ [ X2O#FefXe(0})]=Lr A'n^0krśݵ= ,cSv=.|+]B>0#nR|K}kn>F|.vNFP8l fKa'ɱܱ~KII$ZTPr“!Id# 2r߄5 ~=t#pk<Әr>vj|5& >T k)0>]l"Gu>ZDaFɍs^I5Ytf֭෽tM8s*ʵ@>^S-,=hדdi!PjELa6P1V(5b8fonpNXs}+[YT(8#iRhq\it %& #whHѸΛ}:I+L}F&!BGsYmlO6v]I<خ0} ޽v7~_nL$jFۜ0T{wn,a) ۺxKTږgcFo i1[,[u(b8)uKOۓ5vrnۻ /jw1A%ЇG̼`ZEV垊v=9Eɱ6cH( F0 ޽Mh.g=L( q&wdlC&М}X|dӊ|7\o,e JWho9'?ZkPؑ\ y *J@>o\1&z\RUX&Id>(3QJˈ,eqw76'Z^əqn X/bHZ y1\DY% g]RA(JvH%i.B2?A[4P]gܴe љ C=pT>ҚR\N|mB*o8 wH%i,UX@Dc.#kHr@vGVq]6nF(IȨӼμأaho?UQ@lt}:6#H& ((((((((䫕N%L ?(?*cMH5gBo!iwq?ZIJ!WUe=Abc5}R/HђI,.Y 8+K,b};db4DŒSљ4 x~[y}e=u$Cy/Qq2=ǵ'` A%jp0zO9qG(kuFqEtF?UY:&^L0{HCq?Q^`C  d~4ƵF:@k= jw-"V<7jn.SRݖ%b1ֽI$Uup4$ DE_Eñv ui:yP`=+uZK$Eˤo+G@+",6~\eRci?W%MVmH5u YxLtKexKvKH(~e 9^R"m/O9bg.b,ThՃa_ j?g{;+%?nKZz-Ɔ$qs岌rҖTب1x!\S<5 ҩED{/Uԋx~@az}iD.UU`RB$)nq-c u߈ y<1M{5t_M{f* cOåtgqyð5m]8tEp++*]Kmҥ>% ( ( ^֥>HXC+ FA`rQQ@nwK ɵaF2?ANmԈHhOI?jiQmLq`]+N.峷{jX~4EfH5#Ƹw D y0煁]~PH&Yky6^N19+!'wcQ %6Ds8cԏ6L][FaG\mu -bUv("k\8cDψ~&D\g97oԂy)^=;+ k- \( }=Gyiڎu2Mk~ ʗYpAˎy>[jAksv*p,eݗ{aœv=?r-]OXbU;A< cqקDHPIQ`%/D|) w#eƿ .4 xĶn(h2>|EjWgU=5 4QYpD+V|:\_w0@(g4Rny֗WzG =;~xg1j^UZs҄C4ڽᳳcp$O7|u}/6X1Ӧ{|mir[\^& !Xа5cPN}ܩx*sEs)e-ʍQd)=; уĚMΐuhc6 dxA Z2+ J񆅮,fB#Xekzy"0VlȪ f'^(_rRϷ{Hkc/h:EԖDvCL`sEA 7DYvJZi]*JSi#e۷A jB@XFJԞ酵'm}Mĺ~_\WF,ړ`n\^Hz2T['8]miwrM04zӵ]jQq)$ K:^ 2]YR@@Oҳ4izsGlP) 6IV?ZXܬ ^[O2ٚt-#t1 ZWpy3O]s]^"7o~r3~\u~(#%FKw<zv{!s[Vi[閰\"\LW g5ޕ̲^Y[N1Qb=#̬qҩ.mu1p캬B1Ks*TcntirMQK/ҋ->]1ci9<םڶ/屷 qHk*oa zrOXuϰ4u+-Mr;jvغ_gR:BCom (ѕeTtJN|#eY668׊}r)]FH@sp^^_Gp5K{ٚ Z)]Lk)v+4^}"YUwIYN\w QEQEQEQEdPzW*񞡢hͦv ҶpT⌏Z䎳x@ԼNl#[=6xϽc6㑦o>ؐ%"ӧ>i׍{<@Ҡc Ʋq2PndC  hGϣZ;͈]^@_b:֫/ukϲZ]1ۼG$Oa7€7(quM_ X1׿Ju :K{Y" I'uB{3( ~&:+PN^^It3 %Xc9Q峖uX 7=0d:j3ʵ&y5t j \YPn*Q K7rơڝBX/[oxrS΋Twmk'1?tTV-F{]Bə#1I?J.gYFḵ Rvz$oU;߼izd7cGP}y*e~?F~?SӢ+AQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@A<<}c gqy7WWT=>#uKQ|'*JQEQE?MQc'hZ(#D URp&"FSЌUBK:\ibh`qGF?.fnVNWΌHZ1,ybTo?_jڸg9rm8T$6 v JYIͩrt bI` }GF9>)~&ɞwS"|֤h!xpy棚7,hf'+<1z [1Yk#rrb9nOUgޫqyu5ΐR%GunEAJbZ<3Z_ު#a7`0r+>՚U2Ś5O)Q;q`wdtOgAO:vyՉWH@O5*-Bp $~7,npYFz{8V 74D2@7.IqYW]$Pĉr]BLxCTg sGP=!.22Bq{Y"<jUIw5S[I]Ww,k($$m GpI2qs7 1l0r}9utAƢIV$!oRn ''S¹мBM8Cwz}khR2ANN?ֹO*s§ȏV`8mM6;/Rvv=6 'OH-젊 gbz;i>,n#״<v*NH;um^x#/٣>bv6Z&Xֶy)?/6[{cL}5p$|;X>Zʦ5[FN~g׹tX>0.%1ᑻ~I̪ NFYArr24شm2 $xl-y#$`Ovٲ Y>\Z8VֳaN.(YYqZ5ѴŰ6 an-sl9L@-^mbxs2DL)7dV+mrRԴ)^w٤<l otbض40jkpJ$u`s^s quZM2I ĊJD7P\D10ca3Zƿ q ^YF8ǹ rynLb1lؐ(ϯj?ogҵcJGx.篽 ^[O[[jx䚿i/Q*Ӧqu=nO>gjI[V?Q]nYPveq2uLEV4>PNd ?ZE42$*Y s=xQ0I! AL2Kyپi:r8Fk@B# Ss(8愕k6w^Yi늩yiɥB/s㡨=F \B1Yviia4O4^&;CSvL"cH]Qտjo gnzu̖K#.w\Lij#'8'O<#Hx SWQY$UNx_x^mYZI,ְ6Y)v8j庒M24*Y98gey\?elVViZ7=I E2рJ=yhX[e}-N`X~*)|iuzװԓLS7]`_E@ ?*#ԼOM5ź!d.RrFq=k ҴXe"";-Jӥil[ya(18Ѧ1f8cb%&Y#Lg׾1ҽilm?715:^tAuߟ\4- S|^nel?Ι<^1е[]MO>q(v089AͲy$?k)7\T72kr0 #mWU۵,.#u^``8bAH? %)HP?hHP?h4袊AEPEPEPEPEPEPEPEPEPE<xx++*= WWT=>#uKQ|'*JQEQEKU$ďZ$*i{$o:c;_X Wȸ 8듳D".¡A jջm~w {c84$Vw8._W3dk\] yxy$'I$F@ZO4nPYC_#,b3A;OwSeާ-2pdU9(Aӡ׫[iTkB Y~n8=y Ҷ..a3l* u*{jL﹁yb d5j lnL(\eNv .|5$M2(-VA"bvg}'48uFuld1ܲ  |d)Ѧk/>/&>ooZȹ؟/O6.f+pv3pL|']!Y-!y͒2ĩRrF%ZL@'##k-I2CI0a~m~$vrBMcv*{j Ԯc%-PB-eCBtt:9]Z#[5~$mx(gEs[ ;, *Ry9~i$Wl쓒X6F>zm֍**8E8˒;`աeu r$8F ?_ƹOPkCm<3 .Ӑӯ\iEAn2otPAvq)[Zu[A{.좸'Tzkgeot%O(!mR8=R.-m}Ց~,yuVKIQ|UmZl:*]'6%o#>S|St~ ,㙭LY|w&T|XE^jSџK7(QEbOu O4,,aUiHpޔ E"(Q@Q@Rf 2+׆Φ:6.Cd~%E߈o &MZ1$]GċfMCW~"c8VoxWuuR,M#sx_o Ddjs5,za]`P: ( ( ( ( ( {U;߼2hHP?hHP?hiE(((((((((RFhnouOik#Y)=}ۭhip8Z!k7\E2+@CP cc#'+xEiw4ƕUUI,?z } ԑ\@vOnԈrӆ1 Hځqjs#Z\ DnݳoPT *O ^##:ڪŶgk#[hgDS`֔#\h`n\N(+d|*z ^/A -}>(FeQk &vPMYU KRO$˽w`*ӁKtRD,wT/9A`U=cƭ#¯n7leVap^H/$k[iV9c;rr^e, bb%64+ v[ ,wޜҒY$+Ia%`dhjxz?6rjQq8̩˫naܱ̰ !a9p[wi-MZ-Fز9=kPB+$2,p4#{8wXORsw=:ݕW dPD=vPDn &GbD3&?4iR !XN@򫚦/c3P8xRY _.b hŰrm9m!a)U R>l`zҤWQWk#:*Xn!mtbqs"K D9Um0cԒx^)煮+DA:J}>:6+\#*T䜌q,i6ww$o.p3{z 1}e(ݹ˂8pnj{U?u ٮnщ22m ۇJZjPEPEPHt)i&/u!Xkicrn+{m?Tt fiE`B?0QoEH:P!f?ҒoK8 s8i3ڹ]R$*ګ"6wn(hX'Ho0O3!v=ذd8+v4IѸKVD8GX/"sݑcFz~m5i(O#a rǵs~[J塾UlG&fӐjڃ5,*y" ɼ Ms=jq\ G+UDI-plgB(7|c̳ʁodTDlddMe{]GPHϧjK? [x.g{%c,kΪqS;!V9uP`tp*[(2o} fMgf6'g/$۶чÓ[ΓwvJ" mSJ2M63ʲI#(ըijYݼeHޘCH#K4 $q0_d 2pGI|kB#꥘pwc# Pn/ici}dFcscBxWb[[bK`0 9}qU[–ՠ3ʹ 98+Ȱܗf%92ߍFex5n΍I #]njZB3[-Anags&s'kbH$jT`**L Z((((((*JT~Ta #@#@;EV ( ( ( ( ( ( ( ( ( (3uΗLR/׿?:v_CzqitÕ s$OYD21[fbmOI-.ۉ;ۯn8x}ql w3Wdê,!c׵gT,4}5 $bP.>{},-4v@BP߁FXBב4!4rdn~[4/C7 -3@??2{ӊun kڇaX`p1['º(:*r9]rG4Et}}|9ݻxskU<3(D)s#8-ԶmX6%df۴@=+[xi㰖E>B"3>.u-[WcK8leXy!̇hbI==+BJ vUbyHQsNt˿ :n @o47Viy%5ʹĿ38Ì|IUB$brutGֶG4$ |̂ Qg qѨxzRI~N$d)&O6-¬8a$8tP.ƞ+Py! 8#X<+f-.m&Cé{KD "8 0RH=rISGP9oqq=̍ :!&Mf+sҜEe¬K3|=kv? qΖHW}n\sSޕRtTCO,0xMS3NyE˰Q$Pkid9pkXYc&dkn*0)}k$Edcȳ$Ww;7$n%횎TvC2jMH2= ]}hYtXh,rHt4ǝ7£Eӥ$dYImSӊo,XDwR]C|{g=:ZqiZf 2(R]*_GX^5m㑵e@R)# ʵhEԝ͸!aNz$g2ܴ6I [b?,]^G'*^. [[8-*lziv[*7/$0N? Զ`ns6x& c?wKmA,s+dG01JAYEۼ ;UXs@}qK@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@SW*Jl4A4Q4T`4袊AEPEPEPEPEPEPEPEPEPEPn yӴ+*n yӴ+*]NcQomnв˙2 qr~kPњLq#:'[fm$'Ԩ"hME s^C:+s0n@8LdSu{xEY.|yckbL|Qc-#6N*YvG.ޛ6?:ƌ'ﻚI0j0F$%|xarr8/j2]ղڍݴSDr H+rT:$7RZ ac2}*m}jmeR!f ʼnqmvk[ԓ]ѣXIBp6r޴r\-U[n 0;W.,:tDnJt\P qd e<)@aһ +}+k5U;0lw5hJ1&}iۖ0[En.*],7zSuRIoE5]~)?/=qW.|I fʓIpHH9 w~D[Bkz p)do"?5 >pͧ%iuH[tlESjƗ CXQTCg˰'vB3!RB"c~tsZ6m&qJ$H7c'5V]EZ,d22`@bٕe6Xl^jAm `` mA@-H-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEOҖR`r_V?+&B׻*L@fQV#>UYI@#h)PA r~u)mC8١oĆ{Y[Wj{ZZ5mAX*ͷZ(BATMѩG1Zl5!c,b乘.p͌p+E|OLO&6m2<|=k,$@F[|OަBy hbGuu5a"j>C<ދUVP1XW ɟvnaYsI((((((((((䫕N%L ?(?*ctQEh ((((((((((7^<Agq7^<Agqe.Q@Š(((((((((((((((((((((((((R7?JL^B׻*dV?ZXܩӢBp3VC>[U`NR8)}j%D@QjO- 3E G;ՍnDV)VH .@}N˾jc)v4J/C8 }M^ҵxuHHRv r)رfi!'>)& 50<%b^ @#JƾmhT7BsJ.0z '$ VSMXf;X;qž4ۻ)s-j6R2l8vqSIl:&ӢS.d! <נM.(+2?1%hǣOI?_1%hǣOI+ѣ4H&ex8c;`=(((((((((((((((((((((((((((((?P Z9` -XpAp_+ph ?+Eo&Q~N_+ph ?+Eo&Q~N_+ph ?+Eo&Q~N_+ph ?+Eo&Q~N_+ph ?+Eo&Q~N_+ph ?+Eo&Q~N_+ph ?+Eo&Q~PvZއ:DJ|M/!l.}g(kY'BfRM{[gGʰpAS9t_fX+T@D`@OxvZI<"1 v.7mnn9zކ7mcd-@cgCywZڒ_f 'v\0<5xB}ukL"$+.' : 9?{5K< yR;׵nkv۞&ϗ{ L>)TGbQoT]uMnxUU'+b^xRmfMMṯ4Xd Uo?X@ovr2}?[(j? 騢(((((((((((((((((((((((((((+~7%zy^2dB(((((5:>>wٙhF@=siqRnUzLBU u&D+'>5~𦷧N$+go:L16:?1MFgV(=&EPEPEPEPEPEP\Ɨ%c箞Yu;@3vb&]m3n?:_= }ǖ[n흵]i}5l[K.̇vBc=Ƥw3y"yTN3xWlb;W 3v+hEQw3Zoq7wp+)~dz1glֽ#B[Ь_ *z왿ƻj:u4=2N.mۼc;wsҵӜdܕ5!(s+ YY~,ݽt[Dh N+)Ǝ@˜P5ʞ*;IU|G xndW=[ٿ1e+_>k>߱@<+n&A/y?6:7=W>n~6 C]oح(C~rxÉP6%C3=9Y<]d~3s_]Oح(C~rxFWV^p Iݟ6V~]"JOoiTv`.' я}bglm A8 # wr6y$sw4bcxC֟ u3]{.+Q3x qI.Ty&FQL(((((((((((((((((((((((((=O_4U xƛ= (((((Y5ho_{ͰBki暓Z*SEiݴŹې1vݞ1* I'(/f?y8^87O!h(W 6zp?^wMOpK"dd8pS.tƪ|4*xkz5 ,-/!"2PX ꫌DžYo <&-YNswΔ}Cr~p*M((yt=ԝΤtQ]ɅQ@Q@Q(.cy#Bp G"bdFm~`gMEtg*d{QEQEQEQEQEQEQEQEQEQEQEQEQE(((((((?{WW'U/oJ*( ( ( (#LwH(Do"UlpJ 푟Q\Gq{GPApA,a` 'wPF}+l;pN8ɮ sX#OHܰ)łW3G#4xQ֠o5K];SN 2pF| +}_Noro`K1o&v# rq^eWKkeP5e>\h@FvԷ5Yd7gĐQZ#,"X)* z( KI.|Gj^l^-win\ X,G Hj>-ƞҬ=+,bP~R:#W(~x]7WFK[Wsoe#3[ jvCyqy];.v;\ I;s4\I%R- *w1@ 3H=5`+ESQExV@%er#O̻/j8--4}\*_,?9lk(1u[? XKAq`G)I $gfZh^.׵}sP4k";Q;#3"s{ %S"L9#4"i7iyT‚(0s*w sZ:o=2ZhΖڻqֺj=@ݭ٥71'$O'h DK;^Դh#K}"J2ۃh#נ@ <]cmKɨYlwAcd[5]ú|{K 2q(<[wXo5_knK]?'u0B@c;A8^Ex෌e䑶sS9HK۫ M6TO\}B;SJRvFhV~^wm1bw $r=.ow=6a6u)vPc +9;=effM{s+[< $-]0?JԓIi\jss$qOإarW rOtR:fj)Vm&+ lRYnǩ5EnTUERQEQE5!~g:SdpƐLa2:gױK(1e*wG$gi7UpGF3JXh^ۍA,Aub:b?j,6oڶ)M'82rP ZτjwݪCQ, RKg'y]UV iZETQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@#}^1|O?m./5bvN%(JN@$pjnJz7E5&|d *zzo.7ÐXA弪W+pI$5nj{U$KRlQEQEQEQEQEQE xƛ ?{PQEQEQEPyQ@1j]{]ߏ^\8\q?Z2?]}zQn c|Q#G; c|Q#G{v9@ >( ?4G+g0yLj\pCij'A]cD鏩ֺ xtxoKos3|qMnJ4s-AҖ+C`((((((((((((W0|_ b? ɃQEKMɒogc_E?0o4r)r˹׵RWQ$' G1"v8 x῅>$U? H#jDrxGy60퇒nKwqS/6}˸$㏯zF˵ʏ D xvz[-֫w0%##>#l_^|Om6h'$WTa I=N3U)9ncF(S@ Z(6 ( ( ( ( ( ( ( ( ( ( *cڵ֡yoin5Ă48'ƛ>R-b*.V-y89py OYԌ#su&]M$VUݐ2>nA7+꺮i6[~Xd;Ӗ&%[a!*[X]]qk\C+G+8ϥ[j2Nxhѳoݷ;n!ϐv@KR͡H (aEPEPEPEPEP^{Wi+Ы~7%zQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@\ۥ @#FҐGU",!(ɉA+yJ2{ATIZW֗,ӧ387yK.6{cN>tg2̭kZΟw&g'm|(sռFŁ1sV^ SXӵ \GFe_e7ͅ'hp#è-`t ʻ0$y>b_^EktVUg:i2mOr:G5:5qZ6*A 1< =+pP=tn_~XePGBc$`;88Z?lnX$!2I<ޏkO{j̾󼢹ZKM Ci=?A2ξmǙ-PV4oBһ[mb*F*BwQa j.&*((Rڀ9 /(֬EgDO?TvL-+jg@]5ED_sT3W"ZLW~eð*͜wӽL'd/g@]5scXh7?ZΧ2y~fߓ=qzVp/{tf-'7n#*OjZZLF2uby8?JPh[ C:?bl7~3.yu/A5K1Y5))$VIjY7Zk"C1 Lrs+nu?Z((((((((((((b:擤趷be[ti_Q|I^V?z_?г?гRp+4V'BXpylݷ{6s=k9ՄR{ rn+c :W[U.֒L?ޮxPAE;Lz+:Λ 11ϒFMhA5?( #sYj5k5R[ߙJA4OJ–zv^G応Jx>ƙy%FU(+[k6Kg 0yn`w '_ttW??sC4Hm|\: ht[xW^Ј4n~h& >h& 䪥FSѮ`k[y"K&+,Hcp=Jh(((LQZ(1F)hbLQZ(G]WI\ݯS:#RԡӴ-^,l q׊ΥXӷ7RNS)D˫tK Jdm2Nװ!qEݍqO:fs^D~f9^"O{WCxyg'>6S'y4R|`n<Ϫ;K(z'mtU:ǎu ;jچ4UKbsڍaV?U]B WJwWF Yj+U]B Q f˜FM/&3?@Ey*y Q _g3W§3?@A9O/3 ?SCf€=bkX W¤=x^3cI$%E-WjxoȏOOƏT/"G^q |eAQ |eAP^q |eAQ |eAPujWvvwsg!&^{5 _hfŷZ+'fkyȹu $$g;G L?Q%`eJ N.<9;4yBe;NpA<޸&--8h-Q@{5rj%OGFrS虙ȇߥ+ TѯRm8j&5r lm9yx=Zеﴕe0]^PA SןNNiFI=Aזgh-}״ FK;땋1+WtmNγ|AazGMWOiZh |mO'5 |eAWQz= _4E _4Ez= _4E _4Ez= _4E _4Ez= _4E _4Ez= _4E`_4Ez=?z _TF 4hH?z ?j+RgOƏTF 4hH?z ?j+RgOƏTF 4hJG+Q^s _g3§wr0jMw wshwՇD+=yƳ W+[<cS9K~*/5 M|瓁g 3#na _HZsZ<Ye qJ>O-/b6O%2#^ÂPyxp#%.FxLJt>?F-}?_3i:~iY-*MB#8 qWso0U$Mi,=W6Ҹk/{OߜdpWcz/}"Isʽg$λօGhU)J:+xo7wNWÿ ?Ξ}{G Kk|~*_'ۦDGr`8ڈ>=+w-XKL((((((((((G]WjwJ sI~%j V .h#7W r&7d~u暆m>] ̓(}U21#?)q1qqWчqM+Wk#CO1,b "=}kCZǧãO9ǔ2°| >x?VnvhNA=ET5!&v,8VWOO,;qV#U?tT ?y-+:'|5kn5ycr*2#pq:Z MQVHQEQEQEQEQEQEQEQEQEQEQEQEQEyM-5m4|,#IC޵|9}oOkwL]33ֹ@F 㬪*pW*nݵ/ZxkFY )6@PsjW%׵N[1h.V Dؤuzw_ZM??(75"Kˊu#OTzx/PehQ4ojƛa-fo-6+F׻:ԬMo_je[kWv$j r>^A]uzQEQEQEQEQEQEQEQEQEQEQEQEiQkRT[eŧܺG-- yb9]Er-u)-t}gUٕ.j$XXY(8Es^'"E᫝Oէ,6Dkq%ܜ=6lQZI=RRǨl^eHwTurqSa'uM.]Rerr@9 u%][M,7Zo1cw;H$ go;VvoNkEx$9Ba`~␌FDUl,\*98<ڍbP[Z@8'I 8`Wx-k$zFsewo a=1>*.ul$Ԕ6:239F(_ /j^,no~/kPoE 4kʂ˃Gl|%間I\J X}Dn8(ھjʼyZ"kT&Y7Xd)iZi% ӴjwBNC|tx\4mIlncw5"9@FpÂ2[!=CjG4wPM;W$xǡ#((((((+㷂YXG bDFIeEsv9.-W̚AoҮQrH,р=ICԴxKS-]G ] WrV >I(KqvR|3>n]%#`$ gkz_m5yh1S L#uu])@]{xn[񆨰0MssE$pD>aQyp~n}qd֯ "crA#q]FOXGGɑ2>÷Oq#HOgB/F+iq>=Zbm<=.<9epkb<\ށglɞD("CpzuAxtm+Eu$b\Euh 0HeTvWֻJ0=(5w^+:B./,`2X9Rfi:nI"s}g95츤-5F݅򴷺eS#C8$*7WpqZjoxy,4N wqyi%! L#])0=(೺_)6 [V,p:1]'~h)c-ԫ+AAJZ((((((;W,A)^ڀ9Cj?L}M ?iJeڛzmX'UndB7OyphYƽ>ayZ9˻}3]4x+6^g/f MW1IbG8;E}? w^_J9b2pMwDѤy4Oyk[T%@ywu/|7$2@LS,-A'N;zx{Din%mO2\i&e*c 'O";r.n~ |{(}F3N#5/I_Z n򑍣*IBKk"U+$RepzP{AK*]bfVFm.qas+.ŹgF'yn|<] SCt?MjKjiX*[WLA@H Pm.K6i'Koǖ;;kԣnlPCwsYT@F qA9l:WH$ѴcIkT+* |{gj}+N[pD7B$y뵈ڀ]ƜYBdcBqx&yU} Dz4h<8"-*,y{y62$c _M>^խQBǂ[Z,"#a r[z6Ҁ533y@lyWkmoAMΖL[Hfd1m݀cv`zPkF"Ah2=6HB70Fww{mB{KguslPvpA`{]Ҁ0_Ox}hh,\D69Kz|O%.-,#rdH~G'v9t`P'Q4h-Diwii@q5a ojW*TyIܱ dڽOODlporMn69>!ҢӾ :$ԭa4 nV2$c%MzPҮl}N%}q9.S T$TI}JI]BL"f0*8fLJ0=(Ŵ}"z[[ Miou?>OcMGYVOڼc(Ҩ(((((((((((((((((((((((((((((((((+ʼK'sWוxN/_sU(((((((((((((((((5!m _vJ((((((((((((((((((((((((((((((((((*/_E^^U_8׍=V(((((((((((((((((c+ҫ~+__1B=*((((((((((((