Bundle-SymbolicName: org.argeo.slc.ide.branding;singleton:=true
Bundle-Version: 1.1.1.D20121107_1340
Bundle-Vendor: Argeo.org
-Require-Bundle: org.eclipse.ui;bundle-version="3.5.1",
- org.eclipse.osgi;bundle-version="3.5.1",
- org.eclipse.core.runtime;bundle-version="3.5.0",
- org.eclipse.jdt.ui;bundle-version="3.5.1",
- org.eclipse.ui.console;bundle-version="3.4.0"
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.osgi,
+ org.eclipse.core.runtime,
+ org.eclipse.jdt.ui,
+ org.eclipse.ui.console
Bundle-RequiredExecutionEnvironment: J2SE-1.5
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
-<product name="Argeo SLC IDE" uid="org.argeo.slc.ide" id="org.argeo.slc.ide.branding.product" application="org.eclipse.ui.ide.workbench" version="0.12.1.D20100107_1317" useFeatures="false" includeLaunchers="true">
+<product name="Argeo SLC IDE" uid="org.argeo.slc.ide" id="org.argeo.slc.ide.branding.product" application="org.argeo.cms.ui.workbench.rcp.secureUi" version="2.1.11.D20171231" useFeatures="false" includeLaunchers="true">
<aboutInfo>
<image path="eclipse_lg.gif"/>
</configIni>
<launcherArgs>
+ <programArgs>-console
+ </programArgs>
+ <vmArgs>-Dargeo.osgi.start.2.node=org.eclipse.equinox.http.servlet,org.eclipse.equinox.http.jetty,org.eclipse.equinox.metatype,org.eclipse.equinox.cm,org.eclipse.rap.rwt.osgi -Dargeo.osgi.start.3.node=org.argeo.cms -Dargeo.osgi.start.4.apps=org.eclipse.gemini.blueprint.extender -Djava.security.manager= -Djava.security.policy=all.policy
+ </vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
</launcherArgs>
startupForegroundColor="0066D0" />
<launcher name="ArgeoSLC">
<linux icon="/org.argeo.slc.ide.branding/icons/argeo-icon-100104-256.xpm"/>
- <solaris/>
<win useIco="false">
<bmp/>
</win>
</license>
<plugins>
- <plugin id="com.collabnet.subversion.merge"/>
+ <plugin id="EDU.oswego.cs.dl.util.concurrent"/>
+ <plugin id="EDU.oswego.cs.dl.util.concurrent.source"/>
+ <plugin id="argeo-tp-rcp"/>
+ <plugin id="bcmail"/>
+ <plugin id="bcmail.source"/>
+ <plugin id="bcpg"/>
+ <plugin id="bcpg.source"/>
+ <plugin id="bcpkix"/>
+ <plugin id="bcpkix.source"/>
+ <plugin id="bcprov"/>
+ <plugin id="bcprov.source"/>
+ <plugin id="bitronix.tm"/>
+ <plugin id="bitronix.tm.source"/>
+ <plugin id="biz.aQute.bnd"/>
+ <plugin id="biz.aQute.bnd.source"/>
+ <plugin id="ch.qos.logback.classic"/>
+ <plugin id="ch.qos.logback.core"/>
+ <plugin id="com.google.gson"/>
+ <plugin id="com.google.guava"/>
+ <plugin id="com.google.gwtorm"/>
+ <plugin id="com.google.inject"/>
+ <plugin id="com.google.inject.multibindings" fragment="true"/>
+ <plugin id="com.google.javascript"/>
+ <plugin id="com.google.protobuf"/>
+ <plugin id="com.googlecode.javaewah.JavaEWAH"/>
+ <plugin id="com.googlecode.javaewah.JavaEWAH.source"/>
+ <plugin id="com.gradleware.tooling.client"/>
+ <plugin id="com.gradleware.tooling.model"/>
+ <plugin id="com.gradleware.tooling.utils"/>
<plugin id="com.ibm.icu"/>
+ <plugin id="com.ibm.icu.source"/>
<plugin id="com.jcraft.jsch"/>
- <plugin id="com.sun.jna"/>
- <plugin id="java_cup.runtime"/>
- <plugin id="javax.activation"/>
+ <plugin id="com.jcraft.jsch.source"/>
+ <plugin id="com.sun.el"/>
+ <plugin id="com.sun.el.source"/>
+ <plugin id="javaewah"/>
+ <plugin id="javax.annotation"/>
+ <plugin id="javax.annotation.source"/>
+ <plugin id="javax.el"/>
+ <plugin id="javax.el.source"/>
+ <plugin id="javax.inject"/>
+ <plugin id="javax.inject.source"/>
+ <plugin id="javax.jcr"/>
+ <plugin id="javax.jcr.source"/>
<plugin id="javax.mail"/>
+ <plugin id="javax.mail.source"/>
<plugin id="javax.servlet"/>
<plugin id="javax.servlet.jsp"/>
- <plugin id="javax.wsdl"/>
+ <plugin id="javax.servlet.jsp.source"/>
+ <plugin id="javax.servlet.source"/>
+ <plugin id="javax.transaction" fragment="true"/>
+ <plugin id="javax.transaction.source"/>
<plugin id="javax.xml"/>
- <plugin id="javax.xml.rpc"/>
- <plugin id="javax.xml.soap"/>
- <plugin id="net.sourceforge.lpg.lpgjavaruntime"/>
+ <plugin id="javax.xml.stream"/>
+ <plugin id="net.sf.ehcache"/>
+ <plugin id="org.aopalliance"/>
+ <plugin id="org.aopalliance.source"/>
<plugin id="org.apache.ant"/>
- <plugin id="org.apache.axis"/>
- <plugin id="org.apache.batik.bridge"/>
+ <plugin id="org.apache.ant.launch"/>
+ <plugin id="org.apache.ant.launch.source"/>
+ <plugin id="org.apache.ant.source"/>
<plugin id="org.apache.batik.css"/>
- <plugin id="org.apache.batik.dom"/>
- <plugin id="org.apache.batik.dom.svg"/>
- <plugin id="org.apache.batik.ext.awt"/>
- <plugin id="org.apache.batik.parser"/>
- <plugin id="org.apache.batik.pdf"/>
- <plugin id="org.apache.batik.svggen"/>
- <plugin id="org.apache.batik.transcoder"/>
+ <plugin id="org.apache.batik.css.source"/>
+ <plugin id="org.apache.batik.i18n"/>
+ <plugin id="org.apache.batik.i18n.source"/>
<plugin id="org.apache.batik.util"/>
<plugin id="org.apache.batik.util.gui"/>
- <plugin id="org.apache.batik.xml"/>
- <plugin id="org.apache.bcel"/>
+ <plugin id="org.apache.batik.util.gui.source"/>
+ <plugin id="org.apache.batik.util.source"/>
<plugin id="org.apache.commons.codec"/>
- <plugin id="org.apache.commons.discovery"/>
- <plugin id="org.apache.commons.el"/>
+ <plugin id="org.apache.commons.codec.source"/>
+ <plugin id="org.apache.commons.collections"/>
+ <plugin id="org.apache.commons.collections.source"/>
+ <plugin id="org.apache.commons.compress"/>
+ <plugin id="org.apache.commons.compress.source"/>
+ <plugin id="org.apache.commons.dbcp"/>
+ <plugin id="org.apache.commons.dbcp.source"/>
+ <plugin id="org.apache.commons.exec"/>
+ <plugin id="org.apache.commons.exec.source"/>
+ <plugin id="org.apache.commons.fileupload"/>
+ <plugin id="org.apache.commons.fileupload.source"/>
<plugin id="org.apache.commons.httpclient"/>
+ <plugin id="org.apache.commons.httpclient.source"/>
+ <plugin id="org.apache.commons.io"/>
+ <plugin id="org.apache.commons.io.source"/>
<plugin id="org.apache.commons.jxpath"/>
+ <plugin id="org.apache.commons.jxpath.source"/>
<plugin id="org.apache.commons.lang"/>
+ <plugin id="org.apache.commons.lang3"/>
<plugin id="org.apache.commons.logging"/>
+ <plugin id="org.apache.commons.logging.source"/>
+ <plugin id="org.apache.commons.math"/>
<plugin id="org.apache.commons.net"/>
- <plugin id="org.apache.jasper"/>
+ <plugin id="org.apache.commons.net.source"/>
+ <plugin id="org.apache.commons.pool"/>
+ <plugin id="org.apache.commons.pool.source"/>
+ <plugin id="org.apache.commons.vfs"/>
+ <plugin id="org.apache.commons.vfs.source"/>
+ <plugin id="org.apache.directory.api.asn1.api"/>
+ <plugin id="org.apache.directory.api.asn1.ber"/>
+ <plugin id="org.apache.directory.api.dsmlv2.parser"/>
+ <plugin id="org.apache.directory.api.i18n"/>
+ <plugin id="org.apache.directory.api.ldap.client.api"/>
+ <plugin id="org.apache.directory.api.ldap.codec.core"/>
+ <plugin id="org.apache.directory.api.ldap.extras.aci"/>
+ <plugin id="org.apache.directory.api.ldap.extras.codec"/>
+ <plugin id="org.apache.directory.api.ldap.extras.codec.api"/>
+ <plugin id="org.apache.directory.api.ldap.extras.util"/>
+ <plugin id="org.apache.directory.api.ldap.model"/>
+ <plugin id="org.apache.directory.api.ldap.net.mina"/>
+ <plugin id="org.apache.directory.api.ldap.schema"/>
+ <plugin id="org.apache.directory.api.ldap.schema.converter"/>
+ <plugin id="org.apache.directory.api.util"/>
+ <plugin id="org.apache.directory.server.config"/>
+ <plugin id="org.apache.directory.server.core.api"/>
+ <plugin id="org.apache.directory.server.core.avl"/>
+ <plugin id="org.apache.directory.server.core.constants"/>
+ <plugin id="org.apache.directory.server.i18n"/>
+ <plugin id="org.apache.directory.server.kerberos.codec"/>
+ <plugin id="org.apache.directory.server.ldif.partition"/>
+ <plugin id="org.apache.directory.server.xdbm.partition"/>
+ <plugin id="org.apache.directory.studio.aciitemeditor"/>
+ <plugin id="org.apache.directory.studio.apacheds.configuration"/>
+ <plugin id="org.apache.directory.studio.apacheds.help"/>
+ <plugin id="org.apache.directory.studio.common.core"/>
+ <plugin id="org.apache.directory.studio.common.ui"/>
+ <plugin id="org.apache.directory.studio.connection.core"/>
+ <plugin id="org.apache.directory.studio.connection.ui"/>
+ <plugin id="org.apache.directory.studio.ldapbrowser.common"/>
+ <plugin id="org.apache.directory.studio.ldapbrowser.core"/>
+ <plugin id="org.apache.directory.studio.ldapbrowser.help"/>
+ <plugin id="org.apache.directory.studio.ldapbrowser.ui"/>
+ <plugin id="org.apache.directory.studio.ldapservers"/>
+ <plugin id="org.apache.directory.studio.ldapservers.apacheds"/>
+ <plugin id="org.apache.directory.studio.ldifeditor"/>
+ <plugin id="org.apache.directory.studio.ldifeditor.help"/>
+ <plugin id="org.apache.directory.studio.ldifparser"/>
+ <plugin id="org.apache.directory.studio.schemaeditor"/>
+ <plugin id="org.apache.directory.studio.schemaeditor.help"/>
+ <plugin id="org.apache.directory.studio.slf4j-eclipselog" fragment="true"/>
+ <plugin id="org.apache.directory.studio.valueeditors"/>
+ <plugin id="org.apache.felix.gogo.command"/>
+ <plugin id="org.apache.felix.gogo.command.source"/>
+ <plugin id="org.apache.felix.gogo.runtime"/>
+ <plugin id="org.apache.felix.gogo.runtime.source"/>
+ <plugin id="org.apache.felix.gogo.shell"/>
+ <plugin id="org.apache.felix.gogo.shell.source"/>
+ <plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.felix.scr.source"/>
+ <plugin id="org.apache.httpcomponents.httpclient"/>
+ <plugin id="org.apache.httpcomponents.httpclient.source"/>
+ <plugin id="org.apache.httpcomponents.httpcore"/>
+ <plugin id="org.apache.httpcomponents.httpcore.source"/>
+ <plugin id="org.apache.jackrabbit.api"/>
+ <plugin id="org.apache.jackrabbit.api.source"/>
+ <plugin id="org.apache.jackrabbit.core"/>
+ <plugin id="org.apache.jackrabbit.core.source"/>
+ <plugin id="org.apache.jackrabbit.data" fragment="true"/>
+ <plugin id="org.apache.jackrabbit.data.source"/>
+ <plugin id="org.apache.jackrabbit.jcr.commons"/>
+ <plugin id="org.apache.jackrabbit.jcr.commons.source"/>
+ <plugin id="org.apache.jackrabbit.jcr2dav"/>
+ <plugin id="org.apache.jackrabbit.jcr2dav.source"/>
+ <plugin id="org.apache.jackrabbit.jcr2spi"/>
+ <plugin id="org.apache.jackrabbit.jcr2spi.source"/>
+ <plugin id="org.apache.jackrabbit.server"/>
+ <plugin id="org.apache.jackrabbit.server.source"/>
+ <plugin id="org.apache.jackrabbit.spi"/>
+ <plugin id="org.apache.jackrabbit.spi.commons"/>
+ <plugin id="org.apache.jackrabbit.spi.commons.source"/>
+ <plugin id="org.apache.jackrabbit.spi.source"/>
+ <plugin id="org.apache.jackrabbit.spi2dav"/>
+ <plugin id="org.apache.jackrabbit.spi2dav.source"/>
+ <plugin id="org.apache.jackrabbit.webdav"/>
+ <plugin id="org.apache.jackrabbit.webdav.source"/>
+ <plugin id="org.apache.jasper.glassfish"/>
+ <plugin id="org.apache.jasper.glassfish.source"/>
<plugin id="org.apache.log4j"/>
+ <plugin id="org.apache.log4j.source"/>
<plugin id="org.apache.lucene"/>
- <plugin id="org.apache.lucene.analysis"/>
- <plugin id="org.apache.wsil4j"/>
- <plugin id="org.apache.xalan"/>
+ <plugin id="org.apache.lucene.analyzers-common"/>
+ <plugin id="org.apache.lucene.analyzers-common.source"/>
+ <plugin id="org.apache.lucene.analyzers-smartcn"/>
+ <plugin id="org.apache.lucene.analyzers-smartcn.source"/>
+ <plugin id="org.apache.lucene.core"/>
+ <plugin id="org.apache.lucene.core.source"/>
+ <plugin id="org.apache.lucene.misc"/>
+ <plugin id="org.apache.lucene.misc.source"/>
+ <plugin id="org.apache.lucene.queryparser"/>
+ <plugin id="org.apache.lucene.source"/>
+ <plugin id="org.apache.maven.resolver.api"/>
+ <plugin id="org.apache.maven.resolver.connector.basic"/>
+ <plugin id="org.apache.maven.resolver.impl"/>
+ <plugin id="org.apache.maven.resolver.spi"/>
+ <plugin id="org.apache.maven.resolver.transport.file"/>
+ <plugin id="org.apache.maven.resolver.transport.http"/>
+ <plugin id="org.apache.maven.resolver.util"/>
+ <plugin id="org.apache.mina.core"/>
+ <plugin id="org.apache.servicemix.bundles.antlr"/>
+ <plugin id="org.apache.servicemix.bundles.dom4j"/>
+ <plugin id="org.apache.servicemix.bundles.xpp3"/>
+ <plugin id="org.apache.solr.client.solrj"/>
+ <plugin id="org.apache.tika.core"/>
+ <plugin id="org.apache.tika.core.source"/>
+ <plugin id="org.apache.tika.parser.source"/>
+ <plugin id="org.apache.tika.parsers"/>
+ <plugin id="org.apache.ws.commons.util"/>
<plugin id="org.apache.xerces"/>
<plugin id="org.apache.xml.resolver"/>
<plugin id="org.apache.xml.serializer"/>
+ <plugin id="org.apache.xmlgraphics.commons"/>
+ <plugin id="org.apache.xmlgraphics.commons.source"/>
+ <plugin id="org.apiguardian"/>
+ <plugin id="org.argeo.cms"/>
+ <plugin id="org.argeo.cms.ui"/>
+ <plugin id="org.argeo.cms.ui.workbench"/>
+ <plugin id="org.argeo.cms.ui.workbench.rcp"/>
+ <plugin id="org.argeo.dep.cms.client"/>
+ <plugin id="org.argeo.dep.cms.node"/>
+ <plugin id="org.argeo.dep.cms.platform"/>
+ <plugin id="org.argeo.dep.cms.sdk"/>
+ <plugin id="org.argeo.eclipse.ui"/>
+ <plugin id="org.argeo.eclipse.ui.rcp"/>
+ <plugin id="org.argeo.enterprise"/>
+ <plugin id="org.argeo.ext.jackrabbit" fragment="true"/>
+ <plugin id="org.argeo.jcr"/>
+ <plugin id="org.argeo.node.api"/>
+ <plugin id="org.argeo.osgi.boot"/>
+ <plugin id="org.argeo.slc.agent"/>
+ <plugin id="org.argeo.slc.agent.jcr"/>
+ <plugin id="org.argeo.slc.api"/>
+ <plugin id="org.argeo.slc.client.ui"/>
+ <plugin id="org.argeo.slc.client.ui.dist"/>
+ <plugin id="org.argeo.slc.core"/>
+ <plugin id="org.argeo.slc.demo.ant"/>
+ <plugin id="org.argeo.slc.demo.basic"/>
+ <plugin id="org.argeo.slc.demo.minimal"/>
+ <plugin id="org.argeo.slc.factory"/>
<plugin id="org.argeo.slc.ide.branding"/>
<plugin id="org.argeo.slc.ide.ui"/>
+ <plugin id="org.argeo.slc.repo"/>
+ <plugin id="org.argeo.slc.server.repo"/>
+ <plugin id="org.argeo.slc.support"/>
+ <plugin id="org.argeo.util"/>
+ <plugin id="org.aspectj.weaver"/>
+ <plugin id="org.aspectj.weaver.source"/>
+ <plugin id="org.bouncycastle.bcprov"/>
+ <plugin id="org.dbunit"/>
+ <plugin id="org.dbunit.source"/>
+ <plugin id="org.eclipse.aether.maven"/>
<plugin id="org.eclipse.ant.core"/>
+ <plugin id="org.eclipse.ant.core.source"/>
+ <plugin id="org.eclipse.ant.launching"/>
<plugin id="org.eclipse.ant.ui"/>
+ <plugin id="org.eclipse.buildship.branding"/>
+ <plugin id="org.eclipse.buildship.core"/>
+ <plugin id="org.eclipse.buildship.stsmigration"/>
+ <plugin id="org.eclipse.buildship.ui"/>
+ <plugin id="org.eclipse.cdt"/>
+ <plugin id="org.eclipse.cdt.autotools.core"/>
+ <plugin id="org.eclipse.cdt.autotools.docs"/>
+ <plugin id="org.eclipse.cdt.autotools.ui"/>
+ <plugin id="org.eclipse.cdt.build.gcc.core"/>
+ <plugin id="org.eclipse.cdt.build.gcc.ui"/>
+ <plugin id="org.eclipse.cdt.codan.checkers"/>
+ <plugin id="org.eclipse.cdt.codan.checkers.ui"/>
+ <plugin id="org.eclipse.cdt.codan.core"/>
+ <plugin id="org.eclipse.cdt.codan.core.cxx"/>
+ <plugin id="org.eclipse.cdt.codan.ui"/>
+ <plugin id="org.eclipse.cdt.codan.ui.cxx"/>
+ <plugin id="org.eclipse.cdt.core"/>
+ <plugin id="org.eclipse.cdt.core.linux" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.native"/>
+ <plugin id="org.eclipse.cdt.debug.core"/>
+ <plugin id="org.eclipse.cdt.debug.ui"/>
+ <plugin id="org.eclipse.cdt.doc.user"/>
+ <plugin id="org.eclipse.cdt.dsf"/>
+ <plugin id="org.eclipse.cdt.dsf.gdb"/>
+ <plugin id="org.eclipse.cdt.dsf.gdb.ui"/>
+ <plugin id="org.eclipse.cdt.dsf.ui"/>
+ <plugin id="org.eclipse.cdt.gdb"/>
+ <plugin id="org.eclipse.cdt.gdb.ui"/>
+ <plugin id="org.eclipse.cdt.launch"/>
+ <plugin id="org.eclipse.cdt.make.core"/>
+ <plugin id="org.eclipse.cdt.make.ui"/>
+ <plugin id="org.eclipse.cdt.managedbuilder.core"/>
+ <plugin id="org.eclipse.cdt.managedbuilder.gnu.ui"/>
+ <plugin id="org.eclipse.cdt.managedbuilder.ui"/>
+ <plugin id="org.eclipse.cdt.native.serial"/>
+ <plugin id="org.eclipse.cdt.remote.core"/>
+ <plugin id="org.eclipse.cdt.ui"/>
<plugin id="org.eclipse.compare"/>
<plugin id="org.eclipse.compare.core"/>
- <plugin id="org.eclipse.compare.win32"/>
- <plugin id="org.eclipse.core.boot"/>
+ <plugin id="org.eclipse.compare.core.source"/>
+ <plugin id="org.eclipse.compare.source"/>
<plugin id="org.eclipse.core.commands"/>
+ <plugin id="org.eclipse.core.commands.source"/>
<plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.contenttype.source"/>
<plugin id="org.eclipse.core.databinding"/>
<plugin id="org.eclipse.core.databinding.beans"/>
+ <plugin id="org.eclipse.core.databinding.beans.source"/>
<plugin id="org.eclipse.core.databinding.observable"/>
+ <plugin id="org.eclipse.core.databinding.observable.source"/>
<plugin id="org.eclipse.core.databinding.property"/>
+ <plugin id="org.eclipse.core.databinding.property.source"/>
+ <plugin id="org.eclipse.core.databinding.source"/>
<plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.expressions.source"/>
+ <plugin id="org.eclipse.core.externaltools"/>
+ <plugin id="org.eclipse.core.externaltools.source"/>
<plugin id="org.eclipse.core.filebuffers"/>
+ <plugin id="org.eclipse.core.filebuffers.source"/>
<plugin id="org.eclipse.core.filesystem"/>
- <plugin id="org.eclipse.core.filesystem.hpux.PA_RISC" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.hpux.ia64_32" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.linux.ppc" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.qnx.x86" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.solaris.sparc" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.source"/>
<plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.jobs.source"/>
<plugin id="org.eclipse.core.net"/>
- <plugin id="org.eclipse.core.net.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.core.net.win32.x86" fragment="true"/>
- <plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.net.source"/>
<plugin id="org.eclipse.core.resources"/>
- <plugin id="org.eclipse.core.resources.compatibility" fragment="true"/>
- <plugin id="org.eclipse.core.resources.win32.x86" fragment="true"/>
+ <plugin id="org.eclipse.core.resources.source"/>
<plugin id="org.eclipse.core.runtime"/>
- <plugin id="org.eclipse.core.runtime.compatibility"/>
- <plugin id="org.eclipse.core.runtime.compatibility.auth"/>
- <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
+ <plugin id="org.eclipse.core.runtime.source"/>
<plugin id="org.eclipse.core.variables"/>
- <plugin id="org.eclipse.cvs"/>
+ <plugin id="org.eclipse.core.variables.source"/>
<plugin id="org.eclipse.debug.core"/>
+ <plugin id="org.eclipse.debug.core.source"/>
<plugin id="org.eclipse.debug.ui"/>
+ <plugin id="org.eclipse.debug.ui.source"/>
<plugin id="org.eclipse.draw2d"/>
- <plugin id="org.eclipse.dstore.core"/>
- <plugin id="org.eclipse.dstore.extra"/>
+ <plugin id="org.eclipse.e4.core.commands"/>
+ <plugin id="org.eclipse.e4.core.commands.source"/>
+ <plugin id="org.eclipse.e4.core.contexts"/>
+ <plugin id="org.eclipse.e4.core.contexts.source"/>
+ <plugin id="org.eclipse.e4.core.di"/>
+ <plugin id="org.eclipse.e4.core.di.annotations"/>
+ <plugin id="org.eclipse.e4.core.di.annotations.source"/>
+ <plugin id="org.eclipse.e4.core.di.extensions"/>
+ <plugin id="org.eclipse.e4.core.di.extensions.source"/>
+ <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
+ <plugin id="org.eclipse.e4.core.di.extensions.supplier.source"/>
+ <plugin id="org.eclipse.e4.core.di.source"/>
+ <plugin id="org.eclipse.e4.core.services"/>
+ <plugin id="org.eclipse.e4.core.services.source"/>
+ <plugin id="org.eclipse.e4.emf.xpath"/>
+ <plugin id="org.eclipse.e4.emf.xpath.source"/>
+ <plugin id="org.eclipse.e4.tools"/>
+ <plugin id="org.eclipse.e4.tools.compat"/>
+ <plugin id="org.eclipse.e4.tools.emf.editor3x"/>
+ <plugin id="org.eclipse.e4.tools.emf.ui"/>
+ <plugin id="org.eclipse.e4.tools.jdt.templates"/>
+ <plugin id="org.eclipse.e4.tools.services"/>
+ <plugin id="org.eclipse.e4.ui.bindings"/>
+ <plugin id="org.eclipse.e4.ui.bindings.source"/>
+ <plugin id="org.eclipse.e4.ui.css.core"/>
+ <plugin id="org.eclipse.e4.ui.css.core.source"/>
+ <plugin id="org.eclipse.e4.ui.css.swt"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.source"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
+ <plugin id="org.eclipse.e4.ui.css.swt.theme.source"/>
+ <plugin id="org.eclipse.e4.ui.di"/>
+ <plugin id="org.eclipse.e4.ui.di.source"/>
+ <plugin id="org.eclipse.e4.ui.dialogs"/>
+ <plugin id="org.eclipse.e4.ui.dialogs.source"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench"/>
+ <plugin id="org.eclipse.e4.ui.model.workbench.source"/>
+ <plugin id="org.eclipse.e4.ui.services"/>
+ <plugin id="org.eclipse.e4.ui.services.source"/>
+ <plugin id="org.eclipse.e4.ui.swt.gtk" fragment="true"/>
+ <plugin id="org.eclipse.e4.ui.swt.gtk.source"/>
+ <plugin id="org.eclipse.e4.ui.widgets"/>
+ <plugin id="org.eclipse.e4.ui.widgets.source"/>
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.addons.swt.source"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.source"/>
+ <plugin id="org.eclipse.e4.ui.workbench.source"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt.source"/>
+ <plugin id="org.eclipse.e4.ui.workbench3"/>
+ <plugin id="org.eclipse.e4.ui.workbench3.source"/>
<plugin id="org.eclipse.ecf"/>
<plugin id="org.eclipse.ecf.filetransfer"/>
<plugin id="org.eclipse.ecf.identity"/>
<plugin id="org.eclipse.ecf.provider.filetransfer"/>
- <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient"/>
- <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl" fragment="true"/>
+ <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient4"/>
+ <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient4.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/>
<plugin id="org.eclipse.ecf.ssl" fragment="true"/>
- <plugin id="org.eclipse.emf"/>
- <plugin id="org.eclipse.emf.ant"/>
- <plugin id="org.eclipse.emf.cheatsheets"/>
- <plugin id="org.eclipse.emf.codegen"/>
- <plugin id="org.eclipse.emf.codegen.ecore"/>
- <plugin id="org.eclipse.emf.codegen.ecore.ui"/>
- <plugin id="org.eclipse.emf.codegen.ui"/>
+ <plugin id="org.eclipse.eclemma.core"/>
+ <plugin id="org.eclipse.eclemma.doc"/>
+ <plugin id="org.eclipse.eclemma.ui"/>
+ <plugin id="org.eclipse.egit"/>
+ <plugin id="org.eclipse.egit.core"/>
+ <plugin id="org.eclipse.egit.doc"/>
+ <plugin id="org.eclipse.egit.ui"/>
<plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.common.source"/>
<plugin id="org.eclipse.emf.common.ui"/>
- <plugin id="org.eclipse.emf.compare"/>
- <plugin id="org.eclipse.emf.compare.diff"/>
- <plugin id="org.eclipse.emf.compare.diff.edit"/>
- <plugin id="org.eclipse.emf.compare.doc"/>
- <plugin id="org.eclipse.emf.compare.epatch"/>
- <plugin id="org.eclipse.emf.compare.match"/>
- <plugin id="org.eclipse.emf.compare.ui"/>
- <plugin id="org.eclipse.emf.converter"/>
<plugin id="org.eclipse.emf.databinding"/>
<plugin id="org.eclipse.emf.databinding.edit"/>
- <plugin id="org.eclipse.emf.doc"/>
<plugin id="org.eclipse.emf.ecore"/>
<plugin id="org.eclipse.emf.ecore.change"/>
- <plugin id="org.eclipse.emf.ecore.change.edit"/>
+ <plugin id="org.eclipse.emf.ecore.change.source"/>
<plugin id="org.eclipse.emf.ecore.edit"/>
- <plugin id="org.eclipse.emf.ecore.editor"/>
+ <plugin id="org.eclipse.emf.ecore.source"/>
<plugin id="org.eclipse.emf.ecore.xmi"/>
+ <plugin id="org.eclipse.emf.ecore.xmi.source"/>
<plugin id="org.eclipse.emf.edit"/>
<plugin id="org.eclipse.emf.edit.ui"/>
- <plugin id="org.eclipse.emf.example.installer"/>
- <plugin id="org.eclipse.emf.exporter"/>
- <plugin id="org.eclipse.emf.importer"/>
- <plugin id="org.eclipse.emf.importer.ecore"/>
- <plugin id="org.eclipse.emf.importer.java"/>
- <plugin id="org.eclipse.emf.importer.rose"/>
- <plugin id="org.eclipse.emf.mapping"/>
- <plugin id="org.eclipse.emf.mapping.ecore"/>
- <plugin id="org.eclipse.emf.mapping.ecore.editor"/>
- <plugin id="org.eclipse.emf.mapping.ecore2ecore"/>
- <plugin id="org.eclipse.emf.mapping.ecore2ecore.editor"/>
- <plugin id="org.eclipse.emf.mapping.ecore2xml"/>
- <plugin id="org.eclipse.emf.mapping.ecore2xml.ui"/>
- <plugin id="org.eclipse.emf.mapping.ui"/>
- <plugin id="org.eclipse.emf.mapping.xsd2ecore"/>
- <plugin id="org.eclipse.emf.mapping.xsd2ecore.editor"/>
- <plugin id="org.eclipse.emf.transaction"/>
- <plugin id="org.eclipse.emf.transaction.ui"/>
- <plugin id="org.eclipse.emf.validation"/>
- <plugin id="org.eclipse.emf.validation.ui"/>
- <plugin id="org.eclipse.emf.validation.ui.ide"/>
- <plugin id="org.eclipse.emf.workspace"/>
- <plugin id="org.eclipse.emf.workspace.ui"/>
+ <plugin id="org.eclipse.epp.mpc.core"/>
+ <plugin id="org.eclipse.epp.mpc.help.ui"/>
+ <plugin id="org.eclipse.epp.mpc.ui"/>
+ <plugin id="org.eclipse.epp.package.common"/>
+ <plugin id="org.eclipse.epp.package.rcp"/>
<plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.app.source"/>
+ <plugin id="org.eclipse.equinox.bidi"/>
+ <plugin id="org.eclipse.equinox.bidi.source"/>
<plugin id="org.eclipse.equinox.cm"/>
+ <plugin id="org.eclipse.equinox.cm.source"/>
<plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.common.source"/>
<plugin id="org.eclipse.equinox.concurrent"/>
- <plugin id="org.eclipse.equinox.device"/>
+ <plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.console.source"/>
<plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.ds.source"/>
<plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.event.source"/>
<plugin id="org.eclipse.equinox.frameworkadmin"/>
<plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
- <plugin id="org.eclipse.equinox.http"/>
+ <plugin id="org.eclipse.equinox.frameworkadmin.equinox.source"/>
+ <plugin id="org.eclipse.equinox.frameworkadmin.source"/>
<plugin id="org.eclipse.equinox.http.jetty"/>
+ <plugin id="org.eclipse.equinox.http.jetty.source"/>
<plugin id="org.eclipse.equinox.http.registry"/>
+ <plugin id="org.eclipse.equinox.http.registry.source"/>
<plugin id="org.eclipse.equinox.http.servlet"/>
- <plugin id="org.eclipse.equinox.http.servletbridge"/>
- <plugin id="org.eclipse.equinox.io"/>
- <plugin id="org.eclipse.equinox.ip"/>
+ <plugin id="org.eclipse.equinox.http.servlet.source"/>
<plugin id="org.eclipse.equinox.jsp.jasper"/>
<plugin id="org.eclipse.equinox.jsp.jasper.registry"/>
+ <plugin id="org.eclipse.equinox.jsp.jasper.registry.source"/>
+ <plugin id="org.eclipse.equinox.jsp.jasper.source"/>
<plugin id="org.eclipse.equinox.launcher"/>
- <plugin id="org.eclipse.equinox.launcher.carbon.macosx" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.cocoa.macosx" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.ppc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.s390" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.s390x" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.solaris.sparc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.gtk.solaris.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.aix.ppc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.hpux.PA_RISC" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.hpux.ia64_32" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.motif.solaris.sparc" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.win32.win32.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
- <plugin id="org.eclipse.equinox.launcher.wpf.win32.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.log"/>
+ <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.source"/>
<plugin id="org.eclipse.equinox.metatype"/>
+ <plugin id="org.eclipse.equinox.metatype.source"/>
<plugin id="org.eclipse.equinox.p2.artifact.repository"/>
+ <plugin id="org.eclipse.equinox.p2.artifact.repository.source"/>
<plugin id="org.eclipse.equinox.p2.console"/>
+ <plugin id="org.eclipse.equinox.p2.console.source"/>
<plugin id="org.eclipse.equinox.p2.core"/>
+ <plugin id="org.eclipse.equinox.p2.core.source"/>
<plugin id="org.eclipse.equinox.p2.director"/>
<plugin id="org.eclipse.equinox.p2.director.app"/>
+ <plugin id="org.eclipse.equinox.p2.director.app.source"/>
+ <plugin id="org.eclipse.equinox.p2.director.source"/>
<plugin id="org.eclipse.equinox.p2.directorywatcher"/>
+ <plugin id="org.eclipse.equinox.p2.directorywatcher.source"/>
+ <plugin id="org.eclipse.equinox.p2.discovery"/>
+ <plugin id="org.eclipse.equinox.p2.discovery.compatibility"/>
<plugin id="org.eclipse.equinox.p2.engine"/>
- <plugin id="org.eclipse.equinox.p2.exemplarysetup"/>
+ <plugin id="org.eclipse.equinox.p2.engine.source"/>
<plugin id="org.eclipse.equinox.p2.extensionlocation"/>
+ <plugin id="org.eclipse.equinox.p2.extensionlocation.source"/>
<plugin id="org.eclipse.equinox.p2.garbagecollector"/>
- <plugin id="org.eclipse.equinox.p2.installer"/>
+ <plugin id="org.eclipse.equinox.p2.garbagecollector.source"/>
<plugin id="org.eclipse.equinox.p2.jarprocessor"/>
+ <plugin id="org.eclipse.equinox.p2.jarprocessor.source"/>
<plugin id="org.eclipse.equinox.p2.metadata"/>
- <plugin id="org.eclipse.equinox.p2.metadata.generator"/>
<plugin id="org.eclipse.equinox.p2.metadata.repository"/>
+ <plugin id="org.eclipse.equinox.p2.metadata.repository.source"/>
+ <plugin id="org.eclipse.equinox.p2.metadata.source"/>
+ <plugin id="org.eclipse.equinox.p2.operations"/>
+ <plugin id="org.eclipse.equinox.p2.operations.source"/>
<plugin id="org.eclipse.equinox.p2.publisher"/>
+ <plugin id="org.eclipse.equinox.p2.publisher.eclipse"/>
+ <plugin id="org.eclipse.equinox.p2.publisher.eclipse.source"/>
+ <plugin id="org.eclipse.equinox.p2.publisher.source"/>
<plugin id="org.eclipse.equinox.p2.reconciler.dropins"/>
+ <plugin id="org.eclipse.equinox.p2.reconciler.dropins.source"/>
<plugin id="org.eclipse.equinox.p2.repository"/>
+ <plugin id="org.eclipse.equinox.p2.repository.source"/>
<plugin id="org.eclipse.equinox.p2.repository.tools"/>
- <plugin id="org.eclipse.equinox.p2.tools"/>
+ <plugin id="org.eclipse.equinox.p2.repository.tools.source"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
+ <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse.source"/>
<plugin id="org.eclipse.equinox.p2.touchpoint.natives"/>
+ <plugin id="org.eclipse.equinox.p2.touchpoint.natives.source"/>
+ <plugin id="org.eclipse.equinox.p2.transport.ecf"/>
+ <plugin id="org.eclipse.equinox.p2.transport.ecf.source"/>
<plugin id="org.eclipse.equinox.p2.ui"/>
- <plugin id="org.eclipse.equinox.p2.ui.admin"/>
- <plugin id="org.eclipse.equinox.p2.ui.admin.rcp"/>
+ <plugin id="org.eclipse.equinox.p2.ui.discovery"/>
+ <plugin id="org.eclipse.equinox.p2.ui.importexport"/>
+ <plugin id="org.eclipse.equinox.p2.ui.importexport.source"/>
<plugin id="org.eclipse.equinox.p2.ui.sdk"/>
<plugin id="org.eclipse.equinox.p2.ui.sdk.scheduler"/>
+ <plugin id="org.eclipse.equinox.p2.ui.sdk.scheduler.source"/>
+ <plugin id="org.eclipse.equinox.p2.ui.sdk.source"/>
+ <plugin id="org.eclipse.equinox.p2.ui.source"/>
<plugin id="org.eclipse.equinox.p2.updatechecker"/>
+ <plugin id="org.eclipse.equinox.p2.updatechecker.source"/>
<plugin id="org.eclipse.equinox.p2.updatesite"/>
+ <plugin id="org.eclipse.equinox.p2.updatesite.source"/>
<plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.preferences.source"/>
<plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.equinox.registry.source"/>
<plugin id="org.eclipse.equinox.security"/>
- <plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
+ <plugin id="org.eclipse.equinox.security.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.security.linux.x86_64.source"/>
+ <plugin id="org.eclipse.equinox.security.source"/>
<plugin id="org.eclipse.equinox.security.ui"/>
- <plugin id="org.eclipse.equinox.security.win32.x86" fragment="true"/>
- <plugin id="org.eclipse.equinox.servletbridge"/>
+ <plugin id="org.eclipse.equinox.security.ui.source"/>
<plugin id="org.eclipse.equinox.simpleconfigurator"/>
<plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
- <plugin id="org.eclipse.equinox.supplement"/>
- <plugin id="org.eclipse.equinox.transforms.hook" fragment="true"/>
- <plugin id="org.eclipse.equinox.transforms.xslt"/>
- <plugin id="org.eclipse.equinox.useradmin"/>
+ <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator.source"/>
+ <plugin id="org.eclipse.equinox.simpleconfigurator.source"/>
<plugin id="org.eclipse.equinox.util"/>
- <plugin id="org.eclipse.equinox.wireadmin"/>
+ <plugin id="org.eclipse.equinox.util.source"/>
<plugin id="org.eclipse.gef"/>
- <plugin id="org.eclipse.gmf"/>
- <plugin id="org.eclipse.gmf.bridge"/>
- <plugin id="org.eclipse.gmf.bridge.trace"/>
- <plugin id="org.eclipse.gmf.bridge.ui"/>
- <plugin id="org.eclipse.gmf.bridge.ui.dashboard"/>
- <plugin id="org.eclipse.gmf.codegen"/>
- <plugin id="org.eclipse.gmf.codegen.edit"/>
- <plugin id="org.eclipse.gmf.codegen.ui"/>
- <plugin id="org.eclipse.gmf.common"/>
- <plugin id="org.eclipse.gmf.doc"/>
- <plugin id="org.eclipse.gmf.doc.ui"/>
- <plugin id="org.eclipse.gmf.ecore.editor"/>
- <plugin id="org.eclipse.gmf.examples"/>
- <plugin id="org.eclipse.gmf.examples.ui.pde"/>
- <plugin id="org.eclipse.gmf.graphdef"/>
- <plugin id="org.eclipse.gmf.graphdef.codegen"/>
- <plugin id="org.eclipse.gmf.graphdef.codegen.ui"/>
- <plugin id="org.eclipse.gmf.graphdef.edit"/>
- <plugin id="org.eclipse.gmf.map"/>
- <plugin id="org.eclipse.gmf.map.edit"/>
- <plugin id="org.eclipse.gmf.runtime.common.core"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.action"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.action.ide"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.printing"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.printing.win32" fragment="true"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.services"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.services.action"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd.ide"/>
- <plugin id="org.eclipse.gmf.runtime.common.ui.services.properties"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.core"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.actions"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.dnd"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.geoshapes"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.render"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.properties"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.ide"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.render"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor"/>
- <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide"/>
- <plugin id="org.eclipse.gmf.runtime.draw2d.ui"/>
- <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render"/>
- <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.awt"/>
- <plugin id="org.eclipse.gmf.runtime.emf.clipboard.core"/>
- <plugin id="org.eclipse.gmf.runtime.emf.commands.core"/>
- <plugin id="org.eclipse.gmf.runtime.emf.core"/>
- <plugin id="org.eclipse.gmf.runtime.emf.type.core"/>
- <plugin id="org.eclipse.gmf.runtime.emf.type.ui"/>
- <plugin id="org.eclipse.gmf.runtime.emf.ui"/>
- <plugin id="org.eclipse.gmf.runtime.emf.ui.properties"/>
- <plugin id="org.eclipse.gmf.runtime.gef.ui"/>
- <plugin id="org.eclipse.gmf.runtime.notation"/>
- <plugin id="org.eclipse.gmf.runtime.notation.edit"/>
- <plugin id="org.eclipse.gmf.runtime.notation.providers"/>
- <plugin id="org.eclipse.gmf.sdk"/>
- <plugin id="org.eclipse.gmf.templates.legacy"/>
- <plugin id="org.eclipse.gmf.tooldef"/>
- <plugin id="org.eclipse.gmf.tooldef.edit"/>
- <plugin id="org.eclipse.gmf.tooling"/>
- <plugin id="org.eclipse.gmf.validate"/>
- <plugin id="org.eclipse.gmf.xpand"/>
- <plugin id="org.eclipse.gmf.xpand.editor"/>
- <plugin id="org.eclipse.gmf.xpand.migration"/>
- <plugin id="org.eclipse.gmf.xpand.qvtlibrary"/>
+ <plugin id="org.eclipse.gemini.blueprint.core"/>
+ <plugin id="org.eclipse.gemini.blueprint.core.source"/>
+ <plugin id="org.eclipse.gemini.blueprint.extender"/>
+ <plugin id="org.eclipse.gemini.blueprint.extender.source"/>
+ <plugin id="org.eclipse.gemini.blueprint.io"/>
+ <plugin id="org.eclipse.gemini.blueprint.io.source"/>
<plugin id="org.eclipse.help"/>
- <plugin id="org.eclipse.help.appserver"/>
<plugin id="org.eclipse.help.base"/>
+ <plugin id="org.eclipse.help.base.source"/>
+ <plugin id="org.eclipse.help.source"/>
<plugin id="org.eclipse.help.ui"/>
+ <plugin id="org.eclipse.help.ui.source"/>
<plugin id="org.eclipse.help.webapp"/>
+ <plugin id="org.eclipse.help.webapp.source"/>
<plugin id="org.eclipse.jdt"/>
+ <plugin id="org.eclipse.jdt.annotation"/>
<plugin id="org.eclipse.jdt.apt.core"/>
<plugin id="org.eclipse.jdt.apt.pluggable.core"/>
<plugin id="org.eclipse.jdt.apt.ui"/>
<plugin id="org.eclipse.jdt.debug.ui"/>
<plugin id="org.eclipse.jdt.doc.user"/>
<plugin id="org.eclipse.jdt.junit"/>
+ <plugin id="org.eclipse.jdt.junit.core"/>
<plugin id="org.eclipse.jdt.junit.runtime"/>
<plugin id="org.eclipse.jdt.junit4.runtime"/>
+ <plugin id="org.eclipse.jdt.junit5.runtime"/>
<plugin id="org.eclipse.jdt.launching"/>
- <plugin id="org.eclipse.jdt.launching.macosx"/>
- <plugin id="org.eclipse.jdt.launching.ui.macosx"/>
<plugin id="org.eclipse.jdt.ui"/>
- <plugin id="org.eclipse.jem"/>
- <plugin id="org.eclipse.jem.beaninfo"/>
- <plugin id="org.eclipse.jem.beaninfo.vm"/>
- <plugin id="org.eclipse.jem.beaninfo.vm.common"/>
- <plugin id="org.eclipse.jem.proxy"/>
<plugin id="org.eclipse.jem.util"/>
- <plugin id="org.eclipse.jem.workbench"/>
+ <plugin id="org.eclipse.jetty.continuation"/>
+ <plugin id="org.eclipse.jetty.continuation.source"/>
+ <plugin id="org.eclipse.jetty.http"/>
+ <plugin id="org.eclipse.jetty.http.source"/>
+ <plugin id="org.eclipse.jetty.io"/>
+ <plugin id="org.eclipse.jetty.io.source"/>
+ <plugin id="org.eclipse.jetty.security"/>
+ <plugin id="org.eclipse.jetty.security.source"/>
+ <plugin id="org.eclipse.jetty.server"/>
+ <plugin id="org.eclipse.jetty.server.source"/>
+ <plugin id="org.eclipse.jetty.servlet"/>
+ <plugin id="org.eclipse.jetty.servlet.source"/>
+ <plugin id="org.eclipse.jetty.util"/>
+ <plugin id="org.eclipse.jetty.util.source"/>
+ <plugin id="org.eclipse.jetty.webapp"/>
+ <plugin id="org.eclipse.jetty.xml"/>
<plugin id="org.eclipse.jface"/>
<plugin id="org.eclipse.jface.databinding"/>
+ <plugin id="org.eclipse.jface.databinding.source"/>
+ <plugin id="org.eclipse.jface.source"/>
<plugin id="org.eclipse.jface.text"/>
+ <plugin id="org.eclipse.jface.text.source"/>
+ <plugin id="org.eclipse.jgit"/>
+ <plugin id="org.eclipse.jgit.archive"/>
+ <plugin id="org.eclipse.jgit.source"/>
<plugin id="org.eclipse.jsch.core"/>
+ <plugin id="org.eclipse.jsch.core.source"/>
<plugin id="org.eclipse.jsch.ui"/>
- <plugin id="org.eclipse.jst.common.annotations.controller"/>
- <plugin id="org.eclipse.jst.common.annotations.core"/>
- <plugin id="org.eclipse.jst.common.annotations.ui"/>
- <plugin id="org.eclipse.jst.common.frameworks"/>
- <plugin id="org.eclipse.jst.common.project.facet.core"/>
- <plugin id="org.eclipse.jst.common.project.facet.ui"/>
- <plugin id="org.eclipse.jst.j2ee"/>
- <plugin id="org.eclipse.jst.j2ee.core"/>
- <plugin id="org.eclipse.jst.j2ee.jca"/>
- <plugin id="org.eclipse.jst.j2ee.web"/>
- <plugin id="org.eclipse.jst.jee"/>
- <plugin id="org.eclipse.jst.jee.web"/>
- <plugin id="org.eclipse.jst.jsf.common"/>
- <plugin id="org.eclipse.jst.jsf.common.runtime"/>
- <plugin id="org.eclipse.jst.jsf.common.ui"/>
- <plugin id="org.eclipse.jst.jsf.core"/>
- <plugin id="org.eclipse.jst.jsf.doc.user"/>
- <plugin id="org.eclipse.jst.jsf.facesconfig"/>
- <plugin id="org.eclipse.jst.jsf.facesconfig.ui"/>
- <plugin id="org.eclipse.jst.jsf.standard.tagsupport"/>
- <plugin id="org.eclipse.jst.jsf.ui"/>
- <plugin id="org.eclipse.jst.jsp.core"/>
- <plugin id="org.eclipse.jst.jsp.ui"/>
- <plugin id="org.eclipse.jst.jsp.ui.infopop"/>
- <plugin id="org.eclipse.jst.server.core"/>
- <plugin id="org.eclipse.jst.server.generic.core"/>
- <plugin id="org.eclipse.jst.server.generic.ui"/>
- <plugin id="org.eclipse.jst.server.ui"/>
- <plugin id="org.eclipse.jst.server.ui.doc.user"/>
- <plugin id="org.eclipse.jst.server.ui.infopop"/>
- <plugin id="org.eclipse.jst.standard.schemas"/>
+ <plugin id="org.eclipse.jsch.ui.source"/>
+ <plugin id="org.eclipse.json"/>
+ <plugin id="org.eclipse.launchbar.core"/>
+ <plugin id="org.eclipse.launchbar.ui"/>
<plugin id="org.eclipse.ltk.core.refactoring"/>
+ <plugin id="org.eclipse.ltk.core.refactoring.source"/>
<plugin id="org.eclipse.ltk.ui.refactoring"/>
- <plugin id="org.eclipse.m2m.qvt.oml"/>
- <plugin id="org.eclipse.m2m.qvt.oml.common"/>
- <plugin id="org.eclipse.m2m.qvt.oml.cst.parser"/>
- <plugin id="org.eclipse.m2m.qvt.oml.ecore.imperativeocl"/>
- <plugin id="org.eclipse.m2m.qvt.oml.emf.util"/>
- <plugin id="org.eclipse.m2m.qvt.oml.project"/>
- <plugin id="org.eclipse.m2m.qvt.oml.runtime"/>
- <plugin id="org.eclipse.mylyn"/>
- <plugin id="org.eclipse.mylyn.bugzilla.core"/>
- <plugin id="org.eclipse.mylyn.bugzilla.ide"/>
- <plugin id="org.eclipse.mylyn.bugzilla.ui"/>
- <plugin id="org.eclipse.mylyn.commons.core"/>
- <plugin id="org.eclipse.mylyn.commons.net"/>
- <plugin id="org.eclipse.mylyn.commons.ui"/>
- <plugin id="org.eclipse.mylyn.compatibility"/>
- <plugin id="org.eclipse.mylyn.context.core"/>
- <plugin id="org.eclipse.mylyn.context.ui"/>
- <plugin id="org.eclipse.mylyn.discovery.core"/>
- <plugin id="org.eclipse.mylyn.discovery.ui"/>
- <plugin id="org.eclipse.mylyn.help.ui"/>
- <plugin id="org.eclipse.mylyn.ide.ant"/>
- <plugin id="org.eclipse.mylyn.ide.ui"/>
- <plugin id="org.eclipse.mylyn.java.tasks"/>
- <plugin id="org.eclipse.mylyn.java.ui"/>
- <plugin id="org.eclipse.mylyn.monitor.core"/>
- <plugin id="org.eclipse.mylyn.monitor.ui"/>
- <plugin id="org.eclipse.mylyn.pde.ui"/>
- <plugin id="org.eclipse.mylyn.resources.ui"/>
- <plugin id="org.eclipse.mylyn.tasks.bugs"/>
- <plugin id="org.eclipse.mylyn.tasks.core"/>
- <plugin id="org.eclipse.mylyn.tasks.ui"/>
- <plugin id="org.eclipse.mylyn.team.cvs"/>
- <plugin id="org.eclipse.mylyn.team.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.confluence.core"/>
- <plugin id="org.eclipse.mylyn.wikitext.confluence.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.core"/>
- <plugin id="org.eclipse.mylyn.wikitext.help.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.mediawiki.core"/>
- <plugin id="org.eclipse.mylyn.wikitext.mediawiki.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.tasks.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.textile.core"/>
- <plugin id="org.eclipse.mylyn.wikitext.textile.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.tracwiki.core"/>
- <plugin id="org.eclipse.mylyn.wikitext.tracwiki.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.twiki.core"/>
- <plugin id="org.eclipse.mylyn.wikitext.twiki.ui"/>
- <plugin id="org.eclipse.mylyn.wikitext.ui"/>
- <plugin id="org.eclipse.ocl"/>
- <plugin id="org.eclipse.ocl.ecore"/>
+ <plugin id="org.eclipse.ltk.ui.refactoring.source"/>
+ <plugin id="org.eclipse.nebula.widgets.tablecombo"/>
+ <plugin id="org.eclipse.oomph.base"/>
+ <plugin id="org.eclipse.oomph.base.edit"/>
+ <plugin id="org.eclipse.oomph.extractor.lib"/>
+ <plugin id="org.eclipse.oomph.jreinfo"/>
+ <plugin id="org.eclipse.oomph.jreinfo.ui"/>
+ <plugin id="org.eclipse.oomph.p2"/>
+ <plugin id="org.eclipse.oomph.p2.core"/>
+ <plugin id="org.eclipse.oomph.p2.doc"/>
+ <plugin id="org.eclipse.oomph.p2.edit"/>
+ <plugin id="org.eclipse.oomph.p2.ui"/>
+ <plugin id="org.eclipse.oomph.predicates"/>
+ <plugin id="org.eclipse.oomph.predicates.edit"/>
+ <plugin id="org.eclipse.oomph.preferences"/>
+ <plugin id="org.eclipse.oomph.resources"/>
+ <plugin id="org.eclipse.oomph.resources.edit"/>
+ <plugin id="org.eclipse.oomph.setup"/>
+ <plugin id="org.eclipse.oomph.setup.core"/>
+ <plugin id="org.eclipse.oomph.setup.doc"/>
+ <plugin id="org.eclipse.oomph.setup.edit"/>
+ <plugin id="org.eclipse.oomph.setup.editor"/>
+ <plugin id="org.eclipse.oomph.setup.p2"/>
+ <plugin id="org.eclipse.oomph.setup.p2.edit"/>
+ <plugin id="org.eclipse.oomph.setup.sync"/>
+ <plugin id="org.eclipse.oomph.setup.ui"/>
+ <plugin id="org.eclipse.oomph.setup.ui.questionnaire"/>
+ <plugin id="org.eclipse.oomph.ui"/>
+ <plugin id="org.eclipse.oomph.util"/>
+ <plugin id="org.eclipse.oomph.workingsets"/>
+ <plugin id="org.eclipse.oomph.workingsets.edit"/>
+ <plugin id="org.eclipse.oomph.workingsets.editor"/>
<plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
+ <plugin id="org.eclipse.osgi.compatibility.state.source"/>
<plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.services.source"/>
+ <plugin id="org.eclipse.osgi.source"/>
<plugin id="org.eclipse.osgi.util"/>
+ <plugin id="org.eclipse.osgi.util.source"/>
<plugin id="org.eclipse.pde"/>
<plugin id="org.eclipse.pde.api.tools"/>
+ <plugin id="org.eclipse.pde.api.tools.annotations"/>
<plugin id="org.eclipse.pde.api.tools.ui"/>
<plugin id="org.eclipse.pde.build"/>
<plugin id="org.eclipse.pde.core"/>
<plugin id="org.eclipse.pde.doc.user"/>
+ <plugin id="org.eclipse.pde.ds.annotations"/>
<plugin id="org.eclipse.pde.ds.core"/>
+ <plugin id="org.eclipse.pde.ds.lib"/>
<plugin id="org.eclipse.pde.ds.ui"/>
+ <plugin id="org.eclipse.pde.ds1_2.lib"/>
+ <plugin id="org.eclipse.pde.genericeditor.extension"/>
<plugin id="org.eclipse.pde.junit.runtime"/>
+ <plugin id="org.eclipse.pde.launching"/>
<plugin id="org.eclipse.pde.runtime"/>
<plugin id="org.eclipse.pde.ua.core"/>
<plugin id="org.eclipse.pde.ua.ui"/>
<plugin id="org.eclipse.pde.ui"/>
<plugin id="org.eclipse.pde.ui.templates"/>
<plugin id="org.eclipse.platform"/>
+ <plugin id="org.eclipse.platform.doc.isv"/>
<plugin id="org.eclipse.platform.doc.user"/>
+ <plugin id="org.eclipse.platform.source"/>
+ <plugin id="org.eclipse.rap.doc"/>
+ <plugin id="org.eclipse.rap.tools.intro"/>
+ <plugin id="org.eclipse.rap.tools.intro.source"/>
+ <plugin id="org.eclipse.rap.tools.launch"/>
+ <plugin id="org.eclipse.rap.tools.launch.rwt"/>
+ <plugin id="org.eclipse.rap.tools.launch.rwt.source"/>
+ <plugin id="org.eclipse.rap.tools.launch.source"/>
+ <plugin id="org.eclipse.rap.tools.templates"/>
+ <plugin id="org.eclipse.rap.tools.templates.source"/>
<plugin id="org.eclipse.rcp"/>
- <plugin id="org.eclipse.rse"/>
- <plugin id="org.eclipse.rse.connectorservice.dstore"/>
- <plugin id="org.eclipse.rse.connectorservice.local"/>
- <plugin id="org.eclipse.rse.connectorservice.ssh"/>
- <plugin id="org.eclipse.rse.connectorservice.telnet"/>
- <plugin id="org.eclipse.rse.core"/>
- <plugin id="org.eclipse.rse.doc.user"/>
- <plugin id="org.eclipse.rse.dstore.security"/>
- <plugin id="org.eclipse.rse.efs"/>
- <plugin id="org.eclipse.rse.efs.ui"/>
- <plugin id="org.eclipse.rse.files.ui"/>
- <plugin id="org.eclipse.rse.importexport"/>
- <plugin id="org.eclipse.rse.processes.ui"/>
- <plugin id="org.eclipse.rse.services"/>
- <plugin id="org.eclipse.rse.services.dstore"/>
- <plugin id="org.eclipse.rse.services.files.ftp"/>
- <plugin id="org.eclipse.rse.services.local"/>
- <plugin id="org.eclipse.rse.services.ssh"/>
- <plugin id="org.eclipse.rse.services.telnet"/>
- <plugin id="org.eclipse.rse.shells.ui"/>
- <plugin id="org.eclipse.rse.subsystems.files.core"/>
- <plugin id="org.eclipse.rse.subsystems.files.dstore"/>
- <plugin id="org.eclipse.rse.subsystems.files.ftp"/>
- <plugin id="org.eclipse.rse.subsystems.files.local"/>
- <plugin id="org.eclipse.rse.subsystems.files.ssh"/>
- <plugin id="org.eclipse.rse.subsystems.processes.core"/>
- <plugin id="org.eclipse.rse.subsystems.processes.dstore"/>
- <plugin id="org.eclipse.rse.subsystems.processes.local"/>
- <plugin id="org.eclipse.rse.subsystems.processes.shell.linux"/>
- <plugin id="org.eclipse.rse.subsystems.shells.core"/>
- <plugin id="org.eclipse.rse.subsystems.shells.dstore"/>
- <plugin id="org.eclipse.rse.subsystems.shells.local"/>
- <plugin id="org.eclipse.rse.subsystems.shells.ssh"/>
- <plugin id="org.eclipse.rse.subsystems.shells.telnet"/>
- <plugin id="org.eclipse.rse.subsystems.terminals.core"/>
- <plugin id="org.eclipse.rse.subsystems.terminals.ssh"/>
- <plugin id="org.eclipse.rse.terminals.ui"/>
- <plugin id="org.eclipse.rse.ui"/>
+ <plugin id="org.eclipse.recommenders.apidocs"/>
+ <plugin id="org.eclipse.recommenders.apidocs.rcp"/>
+ <plugin id="org.eclipse.recommenders.calls"/>
+ <plugin id="org.eclipse.recommenders.calls.rcp"/>
+ <plugin id="org.eclipse.recommenders.chain.rcp"/>
+ <plugin id="org.eclipse.recommenders.completion.rcp"/>
+ <plugin id="org.eclipse.recommenders.constructors"/>
+ <plugin id="org.eclipse.recommenders.constructors.rcp"/>
+ <plugin id="org.eclipse.recommenders.coordinates"/>
+ <plugin id="org.eclipse.recommenders.coordinates.rcp"/>
+ <plugin id="org.eclipse.recommenders.injection"/>
+ <plugin id="org.eclipse.recommenders.jayes"/>
+ <plugin id="org.eclipse.recommenders.jayes.io"/>
+ <plugin id="org.eclipse.recommenders.jdt"/>
+ <plugin id="org.eclipse.recommenders.models"/>
+ <plugin id="org.eclipse.recommenders.models.rcp"/>
+ <plugin id="org.eclipse.recommenders.net"/>
+ <plugin id="org.eclipse.recommenders.overrides"/>
+ <plugin id="org.eclipse.recommenders.overrides.rcp"/>
+ <plugin id="org.eclipse.recommenders.rcp"/>
+ <plugin id="org.eclipse.recommenders.snipmatch"/>
+ <plugin id="org.eclipse.recommenders.snipmatch.rcp"/>
+ <plugin id="org.eclipse.recommenders.statics"/>
+ <plugin id="org.eclipse.recommenders.statics.rcp"/>
+ <plugin id="org.eclipse.recommenders.subwords.rcp"/>
+ <plugin id="org.eclipse.recommenders.types.rcp"/>
+ <plugin id="org.eclipse.recommenders.utils"/>
+ <plugin id="org.eclipse.recommenders.utils.rcp"/>
+ <plugin id="org.eclipse.remote.core"/>
<plugin id="org.eclipse.search"/>
+ <plugin id="org.eclipse.search.source"/>
<plugin id="org.eclipse.swt"/>
- <plugin id="org.eclipse.swt.carbon.macosx" fragment="true"/>
- <plugin id="org.eclipse.swt.cocoa.macosx" fragment="true"/>
- <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
- <plugin id="org.eclipse.swt.gtk.linux.ppc" fragment="true"/>
- <plugin id="org.eclipse.swt.gtk.linux.s390" fragment="true"/>
- <plugin id="org.eclipse.swt.gtk.linux.s390x" fragment="true"/>
- <plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.swt.gtk.solaris.sparc" fragment="true"/>
- <plugin id="org.eclipse.swt.gtk.solaris.x86" fragment="true"/>
- <plugin id="org.eclipse.swt.motif.aix.ppc" fragment="true"/>
- <plugin id="org.eclipse.swt.motif.hpux.PA_RISC" fragment="true"/>
- <plugin id="org.eclipse.swt.motif.hpux.ia64_32" fragment="true"/>
- <plugin id="org.eclipse.swt.motif.linux.x86" fragment="true"/>
- <plugin id="org.eclipse.swt.motif.solaris.sparc" fragment="true"/>
- <plugin id="org.eclipse.swt.photon.qnx.x86" fragment="true"/>
- <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>
- <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
- <plugin id="org.eclipse.swt.wpf.win32.x86" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64.source"/>
+ <plugin id="org.eclipse.swtbot.e4.finder"/>
+ <plugin id="org.eclipse.swtbot.eclipse.core"/>
+ <plugin id="org.eclipse.swtbot.eclipse.finder"/>
+ <plugin id="org.eclipse.swtbot.eclipse.gef.finder"/>
+ <plugin id="org.eclipse.swtbot.eclipse.spy"/>
+ <plugin id="org.eclipse.swtbot.eclipse.ui"/>
+ <plugin id="org.eclipse.swtbot.forms.finder"/>
+ <plugin id="org.eclipse.swtbot.generator"/>
+ <plugin id="org.eclipse.swtbot.generator.client"/>
+ <plugin id="org.eclipse.swtbot.generator.jdt"/>
+ <plugin id="org.eclipse.swtbot.generator.rules.workbench"/>
+ <plugin id="org.eclipse.swtbot.generator.ui"/>
+ <plugin id="org.eclipse.swtbot.go"/>
+ <plugin id="org.eclipse.swtbot.junit4_x"/>
+ <plugin id="org.eclipse.swtbot.swt.finder"/>
<plugin id="org.eclipse.team.core"/>
- <plugin id="org.eclipse.team.cvs.core"/>
- <plugin id="org.eclipse.team.cvs.ssh"/>
- <plugin id="org.eclipse.team.cvs.ssh2"/>
- <plugin id="org.eclipse.team.cvs.ui"/>
+ <plugin id="org.eclipse.team.core.source"/>
+ <plugin id="org.eclipse.team.genericeditor.diff.extension"/>
+ <plugin id="org.eclipse.team.genericeditor.diff.extension.source"/>
<plugin id="org.eclipse.team.ui"/>
+ <plugin id="org.eclipse.team.ui.source"/>
<plugin id="org.eclipse.text"/>
- <plugin id="org.eclipse.tm.terminal"/>
- <plugin id="org.eclipse.tm.terminal.serial"/>
- <plugin id="org.eclipse.tm.terminal.ssh"/>
- <plugin id="org.eclipse.tm.terminal.telnet"/>
- <plugin id="org.eclipse.tm.terminal.view"/>
+ <plugin id="org.eclipse.text.source"/>
+ <plugin id="org.eclipse.tm.terminal.control"/>
+ <plugin id="org.eclipse.tools.layout.spy"/>
+ <plugin id="org.eclipse.tools.templates.core"/>
+ <plugin id="org.eclipse.tools.templates.freemarker"/>
+ <plugin id="org.eclipse.tools.templates.ui"/>
<plugin id="org.eclipse.ui"/>
<plugin id="org.eclipse.ui.browser"/>
- <plugin id="org.eclipse.ui.carbon" fragment="true"/>
+ <plugin id="org.eclipse.ui.browser.source"/>
<plugin id="org.eclipse.ui.cheatsheets"/>
- <plugin id="org.eclipse.ui.cocoa" fragment="true"/>
+ <plugin id="org.eclipse.ui.cheatsheets.source"/>
<plugin id="org.eclipse.ui.console"/>
+ <plugin id="org.eclipse.ui.console.source"/>
<plugin id="org.eclipse.ui.editors"/>
+ <plugin id="org.eclipse.ui.editors.source"/>
<plugin id="org.eclipse.ui.externaltools"/>
+ <plugin id="org.eclipse.ui.externaltools.source"/>
<plugin id="org.eclipse.ui.forms"/>
+ <plugin id="org.eclipse.ui.forms.source"/>
+ <plugin id="org.eclipse.ui.genericeditor"/>
+ <plugin id="org.eclipse.ui.genericeditor.source"/>
<plugin id="org.eclipse.ui.ide"/>
<plugin id="org.eclipse.ui.ide.application"/>
+ <plugin id="org.eclipse.ui.ide.application.source"/>
+ <plugin id="org.eclipse.ui.ide.source"/>
<plugin id="org.eclipse.ui.intro"/>
+ <plugin id="org.eclipse.ui.intro.quicklinks"/>
+ <plugin id="org.eclipse.ui.intro.quicklinks.source"/>
+ <plugin id="org.eclipse.ui.intro.source"/>
<plugin id="org.eclipse.ui.intro.universal"/>
+ <plugin id="org.eclipse.ui.intro.universal.source"/>
+ <plugin id="org.eclipse.ui.monitoring"/>
+ <plugin id="org.eclipse.ui.monitoring.source"/>
<plugin id="org.eclipse.ui.navigator"/>
<plugin id="org.eclipse.ui.navigator.resources"/>
+ <plugin id="org.eclipse.ui.navigator.resources.source"/>
+ <plugin id="org.eclipse.ui.navigator.source"/>
<plugin id="org.eclipse.ui.net"/>
- <plugin id="org.eclipse.ui.presentations.r21"/>
+ <plugin id="org.eclipse.ui.net.source"/>
+ <plugin id="org.eclipse.ui.source"/>
+ <plugin id="org.eclipse.ui.themes"/>
+ <plugin id="org.eclipse.ui.themes.source"/>
+ <plugin id="org.eclipse.ui.trace"/>
<plugin id="org.eclipse.ui.views"/>
<plugin id="org.eclipse.ui.views.log"/>
<plugin id="org.eclipse.ui.views.properties.tabbed"/>
- <plugin id="org.eclipse.ui.win32" fragment="true"/>
+ <plugin id="org.eclipse.ui.views.properties.tabbed.source"/>
+ <plugin id="org.eclipse.ui.views.source"/>
<plugin id="org.eclipse.ui.workbench"/>
- <plugin id="org.eclipse.ui.workbench.compatibility" fragment="true"/>
+ <plugin id="org.eclipse.ui.workbench.source"/>
<plugin id="org.eclipse.ui.workbench.texteditor"/>
+ <plugin id="org.eclipse.ui.workbench.texteditor.source"/>
<plugin id="org.eclipse.update.configurator"/>
- <plugin id="org.eclipse.update.core"/>
- <plugin id="org.eclipse.update.core.linux" fragment="true"/>
- <plugin id="org.eclipse.update.core.win32" fragment="true"/>
- <plugin id="org.eclipse.update.scheduler"/>
- <plugin id="org.eclipse.update.ui"/>
- <plugin id="org.eclipse.wst.command.env"/>
- <plugin id="org.eclipse.wst.command.env.core"/>
- <plugin id="org.eclipse.wst.command.env.doc.user"/>
- <plugin id="org.eclipse.wst.command.env.infopop"/>
- <plugin id="org.eclipse.wst.command.env.ui"/>
+ <plugin id="org.eclipse.update.configurator.source"/>
+ <plugin id="org.eclipse.userstorage"/>
+ <plugin id="org.eclipse.userstorage.oauth"/>
+ <plugin id="org.eclipse.userstorage.ui"/>
<plugin id="org.eclipse.wst.common.core"/>
<plugin id="org.eclipse.wst.common.emf"/>
<plugin id="org.eclipse.wst.common.emfworkbench.integration"/>
<plugin id="org.eclipse.wst.common.frameworks.ui"/>
<plugin id="org.eclipse.wst.common.infopop"/>
<plugin id="org.eclipse.wst.common.modulecore"/>
+ <plugin id="org.eclipse.wst.common.modulecore.ui"/>
<plugin id="org.eclipse.wst.common.project.facet.core"/>
<plugin id="org.eclipse.wst.common.project.facet.ui"/>
<plugin id="org.eclipse.wst.common.snippets"/>
<plugin id="org.eclipse.wst.internet.cache"/>
<plugin id="org.eclipse.wst.internet.monitor.core"/>
<plugin id="org.eclipse.wst.internet.monitor.ui"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.debug"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.debug.core"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.debug.js"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.debug.jsdtbridge"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.debug.ui"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.wip.eclipse"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.wipbackend.dev"/>
+ <plugin id="org.eclipse.wst.jsdt.chromium.wipbackend.protocol_1_0"/>
<plugin id="org.eclipse.wst.jsdt.core"/>
+ <plugin id="org.eclipse.wst.jsdt.debug.core"/>
+ <plugin id="org.eclipse.wst.jsdt.debug.crossfire"/>
+ <plugin id="org.eclipse.wst.jsdt.debug.rhino"/>
+ <plugin id="org.eclipse.wst.jsdt.debug.rhino.debugger"/>
+ <plugin id="org.eclipse.wst.jsdt.debug.transport"/>
+ <plugin id="org.eclipse.wst.jsdt.debug.ui"/>
<plugin id="org.eclipse.wst.jsdt.doc"/>
+ <plugin id="org.eclipse.wst.jsdt.js.bower"/>
+ <plugin id="org.eclipse.wst.jsdt.js.cli"/>
+ <plugin id="org.eclipse.wst.jsdt.js.common"/>
+ <plugin id="org.eclipse.wst.jsdt.js.grunt"/>
+ <plugin id="org.eclipse.wst.jsdt.js.gulp"/>
+ <plugin id="org.eclipse.wst.jsdt.js.node"/>
+ <plugin id="org.eclipse.wst.jsdt.js.node.common"/>
+ <plugin id="org.eclipse.wst.jsdt.js.npm"/>
<plugin id="org.eclipse.wst.jsdt.manipulation"/>
<plugin id="org.eclipse.wst.jsdt.support.firefox"/>
<plugin id="org.eclipse.wst.jsdt.support.ie"/>
<plugin id="org.eclipse.wst.jsdt.ui"/>
<plugin id="org.eclipse.wst.jsdt.web.core"/>
- <plugin id="org.eclipse.wst.jsdt.web.support.jsp"/>
<plugin id="org.eclipse.wst.jsdt.web.ui"/>
+ <plugin id="org.eclipse.wst.json.bower.core"/>
+ <plugin id="org.eclipse.wst.json.bower.ui"/>
+ <plugin id="org.eclipse.wst.json.core"/>
+ <plugin id="org.eclipse.wst.json.eslint.core"/>
+ <plugin id="org.eclipse.wst.json.eslint.ui"/>
+ <plugin id="org.eclipse.wst.json.jshint.core"/>
+ <plugin id="org.eclipse.wst.json.jshint.ui"/>
+ <plugin id="org.eclipse.wst.json.npm.core"/>
+ <plugin id="org.eclipse.wst.json.npm.ui"/>
+ <plugin id="org.eclipse.wst.json.schemaprocessor"/>
+ <plugin id="org.eclipse.wst.json.ui"/>
<plugin id="org.eclipse.wst.server.core"/>
<plugin id="org.eclipse.wst.server.discovery"/>
<plugin id="org.eclipse.wst.server.ui"/>
<plugin id="org.eclipse.wst.web.ui"/>
<plugin id="org.eclipse.wst.web.ui.infopop"/>
<plugin id="org.eclipse.wst.webtools.doc.user"/>
- <plugin id="org.eclipse.wst.ws"/>
- <plugin id="org.eclipse.wst.ws.explorer"/>
- <plugin id="org.eclipse.wst.ws.infopop"/>
- <plugin id="org.eclipse.wst.ws.parser"/>
- <plugin id="org.eclipse.wst.ws.service.policy"/>
- <plugin id="org.eclipse.wst.ws.service.policy.ui"/>
- <plugin id="org.eclipse.wst.ws.ui"/>
- <plugin id="org.eclipse.wst.wsdl"/>
- <plugin id="org.eclipse.wst.wsdl.ui"/>
- <plugin id="org.eclipse.wst.wsdl.ui.doc.user"/>
- <plugin id="org.eclipse.wst.wsdl.validation"/>
- <plugin id="org.eclipse.wst.wsi"/>
- <plugin id="org.eclipse.wst.wsi.ui"/>
- <plugin id="org.eclipse.wst.wsi.ui.doc.user"/>
<plugin id="org.eclipse.wst.xml.core"/>
<plugin id="org.eclipse.wst.xml.ui"/>
<plugin id="org.eclipse.wst.xml.ui.infopop"/>
- <plugin id="org.eclipse.wst.xml.xpath.core"/>
- <plugin id="org.eclipse.wst.xml.xpath.ui"/>
- <plugin id="org.eclipse.wst.xml.xpath2.processor"/>
<plugin id="org.eclipse.wst.xmleditor.doc.user"/>
<plugin id="org.eclipse.wst.xsd.core"/>
<plugin id="org.eclipse.wst.xsd.ui"/>
<plugin id="org.eclipse.wst.xsdeditor.doc.user"/>
- <plugin id="org.eclipse.wst.xsl"/>
- <plugin id="org.eclipse.wst.xsl.core"/>
- <plugin id="org.eclipse.wst.xsl.debug.ui"/>
- <plugin id="org.eclipse.wst.xsl.doc"/>
- <plugin id="org.eclipse.wst.xsl.jaxp.debug"/>
- <plugin id="org.eclipse.wst.xsl.jaxp.debug.ui"/>
- <plugin id="org.eclipse.wst.xsl.jaxp.launching"/>
- <plugin id="org.eclipse.wst.xsl.launching"/>
- <plugin id="org.eclipse.wst.xsl.saxon"/>
- <plugin id="org.eclipse.wst.xsl.ui"/>
- <plugin id="org.eclipse.wst.xsl.xalan"/>
<plugin id="org.eclipse.xsd"/>
- <plugin id="org.eclipse.xsd.cheatsheets"/>
- <plugin id="org.eclipse.xsd.doc"/>
- <plugin id="org.eclipse.xsd.ecore.converter"/>
- <plugin id="org.eclipse.xsd.ecore.exporter"/>
- <plugin id="org.eclipse.xsd.ecore.importer"/>
<plugin id="org.eclipse.xsd.edit"/>
- <plugin id="org.eclipse.xsd.editor"/>
- <plugin id="org.eclipse.xsd.example.installer"/>
- <plugin id="org.eclipse.xsd.mapping"/>
- <plugin id="org.eclipse.xsd.mapping.editor"/>
+ <plugin id="org.freemarker"/>
+ <plugin id="org.gradle.toolingapi"/>
+ <plugin id="org.h2"/>
+ <plugin id="org.h2.source"/>
<plugin id="org.hamcrest.core"/>
+ <plugin id="org.hamcrest.library"/>
+ <plugin id="org.jacoco.agent"/>
+ <plugin id="org.jacoco.core"/>
+ <plugin id="org.jacoco.report"/>
+ <plugin id="org.jsoup"/>
<plugin id="org.junit"/>
- <plugin id="org.junit4"/>
- <plugin id="org.mortbay.jetty.server"/>
- <plugin id="org.mortbay.jetty.util"/>
+ <plugin id="org.junit.jupiter.api"/>
+ <plugin id="org.junit.jupiter.engine"/>
+ <plugin id="org.junit.jupiter.migrationsupport"/>
+ <plugin id="org.junit.jupiter.params"/>
+ <plugin id="org.junit.platform.commons"/>
+ <plugin id="org.junit.platform.engine"/>
+ <plugin id="org.junit.platform.launcher"/>
+ <plugin id="org.junit.platform.runner"/>
+ <plugin id="org.junit.platform.suite.api"/>
+ <plugin id="org.junit.source"/>
+ <plugin id="org.junit.vintage.engine"/>
+ <plugin id="org.mozilla.javascript"/>
<plugin id="org.objectweb.asm"/>
+ <plugin id="org.objectweb.asm.commons"/>
+ <plugin id="org.objectweb.asm.tree"/>
+ <plugin id="org.opentest4j"/>
+ <plugin id="org.postgresql.jdbc42"/>
+ <plugin id="org.postgresql.jdbc42.source"/>
+ <plugin id="org.redline-rpm"/>
+ <plugin id="org.redline-rpm.source"/>
<plugin id="org.sat4j.core"/>
<plugin id="org.sat4j.pb"/>
- <plugin id="org.tigris.subversion.clientadapter"/>
- <plugin id="org.tigris.subversion.clientadapter.javahl"/>
- <plugin id="org.tigris.subversion.clientadapter.svnkit"/>
- <plugin id="org.tigris.subversion.subclipse.core"/>
- <plugin id="org.tigris.subversion.subclipse.doc"/>
- <plugin id="org.tigris.subversion.subclipse.graph"/>
- <plugin id="org.tigris.subversion.subclipse.mylyn"/>
- <plugin id="org.tigris.subversion.subclipse.ui"/>
- <plugin id="org.tmatesoft.svnkit"/>
- <plugin id="org.uddi4j"/>
+ <plugin id="org.slf4j.api"/>
+ <plugin id="org.slf4j.api.source"/>
+ <plugin id="org.slf4j.commons.logging"/>
+ <plugin id="org.slf4j.log4j12"/>
+ <plugin id="org.springframework.aop"/>
+ <plugin id="org.springframework.aop.source"/>
+ <plugin id="org.springframework.aspects"/>
+ <plugin id="org.springframework.aspects.source"/>
+ <plugin id="org.springframework.beans"/>
+ <plugin id="org.springframework.beans.source"/>
+ <plugin id="org.springframework.context"/>
+ <plugin id="org.springframework.context.source"/>
+ <plugin id="org.springframework.context.support"/>
+ <plugin id="org.springframework.context.support.source"/>
+ <plugin id="org.springframework.core"/>
+ <plugin id="org.springframework.core.source"/>
+ <plugin id="org.springframework.expression"/>
+ <plugin id="org.springframework.expression.source"/>
+ <plugin id="org.springframework.instrument"/>
+ <plugin id="org.springframework.instrument.source"/>
+ <plugin id="org.springframework.jdbc"/>
+ <plugin id="org.springframework.jdbc.source"/>
+ <plugin id="org.springframework.tx"/>
+ <plugin id="org.springframework.tx.source"/>
+ <plugin id="org.springframework.web"/>
+ <plugin id="org.springframework.web.servlet"/>
+ <plugin id="org.springframework.web.servlet.source"/>
+ <plugin id="org.springframework.web.source"/>
+ <plugin id="org.tukaani.xz"/>
+ <plugin id="org.tukaani.xz.source"/>
<plugin id="org.w3c.css.sac"/>
+ <plugin id="org.w3c.css.sac.source"/>
<plugin id="org.w3c.dom.events"/>
+ <plugin id="org.w3c.dom.events.source"/>
<plugin id="org.w3c.dom.smil"/>
+ <plugin id="org.w3c.dom.smil.source"/>
<plugin id="org.w3c.dom.svg"/>
+ <plugin id="org.w3c.dom.svg.source"/>
</plugins>
<features>
<feature id="org.eclipse.mylyn_feature" version="3.2.2.v20090912-0400-e3x"/>
</features>
+ <configurations>
+ <plugin id="org.argeo.osgi.boot" autoStart="true" startLevel="1" />
+ <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
+ </configurations>
+
+ <preferencesInfo>
+ <targetfile overwrite="false"/>
+ </preferencesInfo>
+
+ <cssInfo>
+ </cssInfo>
</product>
id="product"
point="org.eclipse.core.runtime.products">
<product
- application="org.eclipse.ui.ide.workbench"
+ application="org.argeo.cms.ui.workbench.rcp.secureUi"
name="Argeo SLC IDE">
<property
name="windowImages"
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: SLC IDE
-Bundle-SymbolicName: org.argeo.slc.ide.ui;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Bundle-Activator: org.argeo.slc.ide.ui.SlcIdeUiPlugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.debug.core,
- org.eclipse.jdt.launching,
- org.eclipse.debug.ui,
- org.eclipse.jdt.core,
- org.eclipse.ui.console,
- org.eclipse.jdt.debug.ui,
- org.eclipse.ui.ide,
- org.eclipse.core.variables,
- org.eclipse.pde.ui;bundle-version="3.4.0",
- org.eclipse.jdt.ui;bundle-version="3.4.2"
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Bundle-Vendor: Argeo GmbH
-Bundle-ActivationPolicy: lazy
+Manifest-Version: 1.0\r
+Bundle-ActivationPolicy: lazy\r
+Bundle-Activator: org.argeo.slc.ide.ui.SlcIdeUiPlugin\r
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
+Bundle-ManifestVersion: 2\r
+Bundle-Name: IDE UI\r
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8\r
+Bundle-SymbolicName: org.argeo.slc.ide.ui;singleton=true\r
+Bundle-Version: 2.1.11.SNAPSHOT-r201801241311\r
+Export-Package: org.argeo.slc.ide.ui;uses:="org.eclipse.debug.core,org.e\r
+ clipse.jdt.core,org.eclipse.jdt.launching,org.eclipse.jface.preference,\r
+ org.eclipse.swt.graphics,org.eclipse.ui,org.eclipse.ui.plugin,org.osgi.\r
+ framework";version="2.1.11.SNAPSHOT-r201801241311",org.argeo.slc.ide.ui\r
+ .launch.preferences;uses:="org.eclipse.jface.preference,org.eclipse.ui"\r
+ ;version="2.1.11.SNAPSHOT-r201801241311",org.argeo.slc.ide.ui.launch.os\r
+ gi;uses:="org.eclipse.core.resources,org.eclipse.debug.core,org.eclipse\r
+ .debug.ui,org.eclipse.jdt.launching,org.eclipse.jface.viewers,org.eclip\r
+ se.pde.launching,org.eclipse.pde.ui.launcher,org.eclipse.swt.graphics,o\r
+ rg.eclipse.swt.widgets";version="2.1.11.SNAPSHOT-r201801241311",org.arg\r
+ eo.slc.ide.ui.launch.script;uses:="org.argeo.slc.ide.ui,org.eclipse.cor\r
+ e.resources,org.eclipse.debug.core,org.eclipse.debug.ui,org.eclipse.jdt\r
+ .core,org.eclipse.jdt.launching,org.eclipse.jface.viewers,org.eclipse.s\r
+ wt.widgets,org.eclipse.ui";version="2.1.11.SNAPSHOT-r201801241311"\r
+Import-Package: org.eclipse.swt.widgets,org.osgi.framework;version="0.0.\r
+ 0",org.argeo.slc.ide.ui,org.eclipse.core.resources,org.eclipse.core.var\r
+ iables,org.eclipse.debug.core,org.eclipse.debug.core.model,org.eclipse.\r
+ debug.ui,org.eclipse.jdt.core,org.eclipse.jdt.launching,org.eclipse.jfa\r
+ ce.dialogs,org.eclipse.jface.preference,org.eclipse.jface.resource,org.\r
+ eclipse.jface.viewers,org.eclipse.osgi.service.resolver;version="[1.6,2\r
+ )",org.eclipse.pde.core.plugin,org.eclipse.pde.launching,org.eclipse.pd\r
+ e.ui.launcher,org.eclipse.swt.events,org.eclipse.swt.graphics,org.eclip\r
+ se.swt.layout,org.eclipse.ui;ui.workbench=split,org.eclipse.ui.plugin,o\r
+ rg.argeo.cms.auth;version="[2.1,3)",org.argeo.eclipse.spring;version="[\r
+ 2.1,3)",org.argeo.eclipse.ui.utils;version="[2.1,3)",org.eclipse.core.r\r
+ untime.jobs,org.eclipse.jface.window,org.eclipse.swt,org.eclipse.ui.ser\r
+ vices,org.springframework.core;version="[3.2,4)",org.springframework.be\r
+ ans.factory;version="[3.2,4)",org.springframework.core.io.support;versi\r
+ on="[3.2,4)",org.eclipse.pde.core\r
+Include-Resource: icons/eclipse-launch.gif=icons/eclipse-launch.gif,icon\r
+ s/argeo-icon-100104-256.png=icons/argeo-icon-100104-256.png,icons/slc-l\r
+ aunch.gif=icons/slc-launch.gif,targets/managedTarget.target=targets/man\r
+ agedTarget.target,plugin.xml=plugin.xml\r
+Private-Package: icons,targets\r
+Require-Bundle: org.eclipse.core.runtime,org.eclipse.core.commands\r
+Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"\r
+SLC-Category: org.argeo.slc\r
--- /dev/null
+Bundle-SymbolicName: org.argeo.slc.ide.ui;singleton=true
+Bundle-Activator: org.argeo.slc.ide.ui.SlcIdeUiPlugin
+Bundle-ActivationPolicy: lazy
+
+Require-Bundle: org.eclipse.core.runtime,\
+org.eclipse.core.commands
+
+Import-Package: org.argeo.cms.auth,\
+org.argeo.eclipse.spring,\
+org.argeo.eclipse.ui.utils,\
+org.eclipse.core.runtime.jobs,\
+org.eclipse.jface.window,\
+org.eclipse.swt,\
+org.eclipse.swt.widgets,\
+org.eclipse.ui.services,\
+org.osgi.*;version=0.0.0,\
+org.springframework.core,\
+org.springframework.beans.factory,\
+org.springframework.core.io.support,\
+!org.eclipse.core.runtime,\
+org.eclipse.pde.core,\
+*
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>ide-plugins</artifactId>
+ <version>2.1.11-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>org.argeo.slc.ide.ui</artifactId>
+ <name>IDE UI</name>
+ <packaging>jar</packaging>
+ <dependencies>
+ <!-- SLC -->
+ <dependency>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>org.argeo.slc.core</artifactId>
+ <version>2.1.11-SNAPSHOT</version>
+ </dependency>
+
+ <!-- Argeo Commons -->
+ <dependency>
+ <groupId>org.argeo.commons</groupId>
+ <artifactId>org.argeo.eclipse.ui</artifactId>
+ <version>${version.argeo-commons}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.argeo.commons</groupId>
+ <artifactId>org.argeo.cms.ui.workbench</artifactId>
+ <version>${version.argeo-commons}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.argeo.commons.rcp</groupId>
+ <artifactId>org.argeo.eclipse.ui.rcp</artifactId>
+ <version>${version.argeo-rcp}</version>
+ </dependency>
+
+ <!-- Eclipse SDK -->
+ <dependency>
+ <groupId>org.argeo.commons.rcp</groupId>
+ <artifactId>org.argeo.dep.cms.ide</artifactId>
+ <version>${version.argeo-rcp}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
+++ /dev/null
-package org.argeo.slc.ide.ui;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.jdt.launching.IVMInstall;\r
-import org.eclipse.jdt.launching.JavaRuntime;\r
-\r
-public class DeployedSlcSystem implements SlcSystem {\r
- private File baseDir;\r
- private String relLibDir = "lib";\r
-\r
- public DeployedSlcSystem(String baseDirPath) {\r
- try {\r
- this.baseDir = new File(baseDirPath).getCanonicalFile();\r
- } catch (IOException e) {\r
- throw new RuntimeException("Cannot get path for " + baseDirPath, e);\r
- }\r
- }\r
-\r
- public String[] getClasspath() throws CoreException {\r
- List<String> classpath = new Vector<String>();\r
- File libDir = new File(baseDir.getPath() + File.separator + relLibDir);\r
- File[] files = libDir.listFiles();\r
- for (File file : files) {\r
- try {\r
- classpath.add(file.getCanonicalPath());\r
- } catch (IOException e) {\r
- throw new RuntimeException("Cannot get path for " + file, e);\r
- }\r
- }\r
- return classpath.toArray(new String[classpath.size()]);\r
- }\r
-\r
- public IVMInstall getVmInstall() throws CoreException {\r
- return JavaRuntime.getDefaultVMInstall();\r
- }\r
-\r
- public String getAntHome() {\r
- return baseDir.getPath();\r
- }\r
-\r
- public String getJavaLibraryPath() {\r
- return baseDir.getPath() + File.separator + "bin";\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui;
-
-import org.argeo.slc.ide.ui.launch.preferences.SlcLaunchPreferencePage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.launching.IVMInstall;
-import org.eclipse.jdt.launching.JavaRuntime;
-
-public class EmbeddedSlcSystem implements SlcSystem {
- private final IJavaProject project;
-
- public EmbeddedSlcSystem(IJavaProject project) {
- this.project = project;
- }
-
- public String[] getClasspath() throws CoreException {
- return JavaRuntime.computeDefaultRuntimeClassPath(project);
- }
-
- public String getJavaLibraryPath() {
- String javaLibPath = SlcIdeUiPlugin.getDefault()
- .getPreferenceStore().getString(
- SlcLaunchPreferencePage.PREF_SLC_RUNTIME_LOCATION);
- if (javaLibPath == null || javaLibPath.equals(""))
- return null;
- else
- return javaLibPath;
- }
-
- public IVMInstall getVmInstall() throws CoreException {
- return JavaRuntime.getVMInstall(project);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui;\r
-\r
-import java.net.URL;\r
-\r
-import org.eclipse.core.resources.IResource;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.debug.core.DebugEvent;\r
-import org.eclipse.debug.core.DebugPlugin;\r
-import org.eclipse.debug.core.IDebugEventSetListener;\r
-import org.eclipse.debug.core.ILaunch;\r
-import org.eclipse.debug.core.model.IProcess;\r
-import org.eclipse.jface.resource.ImageDescriptor;\r
-import org.eclipse.jface.resource.ImageRegistry;\r
-import org.eclipse.pde.core.plugin.TargetPlatform;\r
-import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.ui.plugin.AbstractUIPlugin;\r
-import org.osgi.framework.BundleContext;\r
-\r
-/**\r
- * The activator class controls the plug-in life cycle\r
- */\r
-public class SlcIdeUiPlugin extends AbstractUIPlugin {\r
-\r
- // The plug-in ID\r
- public static final String ID = "org.argeo.slc.ide.ui";\r
-\r
- // The shared instance\r
- private static SlcIdeUiPlugin plugin;\r
-\r
- /**\r
- * The constructor\r
- */\r
- public SlcIdeUiPlugin() {\r
- }\r
-\r
- @Override\r
- public void start(BundleContext context) throws Exception {\r
- super.start(context);\r
- plugin = this;\r
- DebugPlugin.getDefault()\r
- .addDebugEventListener(new DebugEventListener());\r
-\r
- String location = TargetPlatform.getLocation();\r
- System.out.println(location);\r
- }\r
-\r
- @Override\r
- public void stop(BundleContext context) throws Exception {\r
- plugin = null;\r
- super.stop(context);\r
- }\r
-\r
- /**\r
- * Returns the shared instance\r
- * \r
- * @return the shared instance\r
- */\r
- public static SlcIdeUiPlugin getDefault() {\r
- return plugin;\r
- }\r
-\r
- public Image getImage(String relativeURL) {\r
- ImageRegistry imageRegistry = getImageRegistry();\r
- Image image = imageRegistry.get(relativeURL);\r
- if (image == null) {\r
- URL imageURL = getBundle().getEntry(relativeURL);\r
- ImageDescriptor descriptor = ImageDescriptor\r
- .createFromURL(imageURL);\r
- image = descriptor.createImage();\r
- imageRegistry.put(relativeURL, image);\r
- }\r
- return image;\r
- }\r
-\r
- protected static class DebugEventListener implements IDebugEventSetListener {\r
- public void handleDebugEvents(DebugEvent[] events) {\r
- if (events == null)\r
- return;\r
-\r
- for (int i = 0; i < events.length; i++) {\r
- DebugEvent event = events[i];\r
- if (event == null)\r
- continue;\r
- Object source = event.getSource();\r
- if (source instanceof IProcess\r
- && event.getKind() == DebugEvent.TERMINATE) {\r
- IProcess process = (IProcess) source;\r
-// if (process == null)\r
-// continue;\r
- ILaunch launch = process.getLaunch();\r
- if (launch != null)\r
- refreshOsgiBootLaunch(launch);\r
- }\r
- }\r
- }\r
-\r
- protected void refreshOsgiBootLaunch(ILaunch launch) {\r
- try {\r
- if (launch == null)\r
- return;\r
- IResource[] resources = launch.getLaunchConfiguration()\r
- .getMappedResources();\r
- if (resources == null)\r
- return;\r
- if (resources.length > 0) {\r
- IResource propertiesFile = resources[0];\r
- if (propertiesFile.getParent() == null)\r
- return;\r
- propertiesFile.getParent().refreshLocal(\r
- IResource.DEPTH_INFINITE, null);\r
- // System.out.println("Refreshed "\r
- // + propertiesFile.getParent());\r
- }\r
- } catch (CoreException e) {\r
- e.printStackTrace();\r
- }\r
-\r
- }\r
-\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui;\r
-\r
-import org.eclipse.jface.preference.FieldEditorPreferencePage;\r
-import org.eclipse.ui.IWorkbench;\r
-import org.eclipse.ui.IWorkbenchPreferencePage;\r
-\r
-public class SlcMainPreferencePage extends FieldEditorPreferencePage implements\r
- IWorkbenchPreferencePage {\r
- public SlcMainPreferencePage() {\r
-// IPreferenceStore store = SlcIdePlugin.getDefault().getPreferenceStore();\r
-// setPreferenceStore(store);\r
- setDescription("Argeo SLC Preferences");\r
- }\r
-\r
- @Override\r
- protected void createFieldEditors() {\r
-// addField(new DirectoryFieldEditor(PREF_SLC_RUNTIME_LOCATION,\r
-// "SLC Runtime", getFieldEditorParent()));\r
-// addField(new DirectoryFieldEditor(PREF_EMBEDDED_JAVA_LIBRARY_PATH,\r
-// "Embedded Java Library Path", getFieldEditorParent()));\r
- }\r
-\r
- public void init(IWorkbench workbench) {\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui;\r
-\r
-import org.eclipse.jdt.ui.JavaUI;\r
-import org.eclipse.ui.IFolderLayout;\r
-import org.eclipse.ui.IPageLayout;\r
-import org.eclipse.ui.IPerspectiveFactory;\r
-import org.eclipse.ui.console.IConsoleConstants;\r
-\r
-public class SlcPerspectiveFactory implements IPerspectiveFactory {\r
-\r
- public void createInitialLayout(IPageLayout layout) {\r
- // Get the editor area.\r
- String editorArea = layout.getEditorArea();\r
-\r
- IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.LEFT, 0.25f,\r
- editorArea);\r
- topLeft.addView(JavaUI.ID_PACKAGES);\r
-\r
- IFolderLayout bottom = layout.createFolder("bottom", IPageLayout.BOTTOM, 0.66f,\r
- editorArea);\r
- bottom.addView(IConsoleConstants.ID_CONSOLE_VIEW);\r
- bottom.addView(IPageLayout.ID_TASK_LIST);\r
- \r
- layout.addActionSet("org.eclipse.debug.ui.launchActionSet");\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui;\r
-\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.jdt.launching.IVMInstall;\r
-\r
-public interface SlcSystem {\r
- public String[] getClasspath() throws CoreException;\r
- public String getJavaLibraryPath();\r
- public IVMInstall getVmInstall() throws CoreException;\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.pde.launching.EclipseApplicationLaunchConfiguration;
-
-/** OSGiBoot launch configuration. */
-public class EclipseBootLaunchConfiguration extends
- EclipseApplicationLaunchConfiguration {
- public final static String ID = SlcIdeUiPlugin.ID + ".EclipseBootLauncher";
-
- @Override
- public void launch(ILaunchConfiguration configuration, String mode,
- ILaunch launch, IProgressMonitor monitor) throws CoreException {
- super.launch(configuration, mode, launch, monitor);
- // Refresh resources before launching
- final IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
- propertiesFile.getParent().refreshLocal(IResource.DEPTH_INFINITE,
- monitor);
- }
-
- @Override
- protected void preLaunchCheck(ILaunchConfiguration configuration,
- ILaunch launch, IProgressMonitor monitor) throws CoreException {
- ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
- OsgiLaunchHelper.updateLaunchConfiguration(wc, true);
- wc.doSave();
-
- super.preLaunchCheck(configuration, launch, monitor);
-
- // Note that if a Java project contains a build.properties it has to
- // declare the sources otherwise it will be skipped in the generation of
- // the dev.properties file!
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.pde.ui.launcher.EclipseLaunchShortcut;
-
-/**
- * Launch shortcut simplifying the launch of an Eclipse application (typically
- * an RCP).
- */
-public class EclipseBootLaunchShortcut extends EclipseLaunchShortcut implements
- OsgiLauncherConstants {
- private StringBuffer name = null;
- private IFile propertiesFile = null;
-
- @Override
- protected String getLaunchConfigurationTypeName() {
- return EclipseBootLaunchConfiguration.ID;
- }
-
- @Override
- public void launch(ISelection selection, String mode) {
- // we assume that only one file is selected
- IStructuredSelection sSelection = (IStructuredSelection) selection;
- Iterator<?> it = sSelection.iterator();
- propertiesFile = (IFile) it.next();
-
- name = new StringBuffer(OsgiLaunchHelper.extractName(propertiesFile));
-
- super.launch(selection, mode);
- }
-
- @Override
- protected void initializeConfiguration(ILaunchConfigurationWorkingCopy wc) {
- IResource[] resources = { propertiesFile };
- wc.setMappedResources(resources);
- super.initializeConfiguration(wc);
-
- OsgiLaunchHelper.setDefaults(wc, true);
- wc.setAttribute(
- IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
- OsgiLaunchHelper.findWorkingDirectory(propertiesFile));
-
- OsgiLaunchHelper.updateLaunchConfiguration(wc, true);
- }
-
- protected String getName(ILaunchConfigurationType type) {
- if (name != null && !name.toString().trim().equals(""))
- return DebugPlugin.getDefault().getLaunchManager()
- .generateLaunchConfigurationName(name.toString());
- else
- return DebugPlugin.getDefault().getLaunchManager()
- .generateLaunchConfigurationName("SLC");
- }
-
- @Override
- protected boolean isGoodMatch(ILaunchConfiguration configuration) {
- if (name != null) {
- return name.toString().equals(configuration.getName());
- }
- return super.isGoodMatch(configuration);
- }
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import org.eclipse.debug.ui.CommonTab;
-import org.eclipse.debug.ui.EnvironmentTab;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
-import org.eclipse.pde.ui.launcher.EclipseLauncherTabGroup;
-import org.eclipse.pde.ui.launcher.MainTab;
-import org.eclipse.pde.ui.launcher.OSGiSettingsTab;
-import org.eclipse.pde.ui.launcher.PluginsTab;
-import org.eclipse.pde.ui.launcher.TracingTab;
-
-/** Definition of the set of tabs used in Eclipse Boot launch configuration UI. */
-public class EclipseBootLauncherTabGroup extends EclipseLauncherTabGroup {
-
- @Override
- public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
- ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] {
- new OsgiBootMainTab(true),
- new MainTab(),
- new PluginsTab(),
- // new PluginsTab() {
- // private boolean activating = false;
- //
- // @Override
- // public void performApply(
- // ILaunchConfigurationWorkingCopy config) {
- // super.performApply(config);
- // if (activating) {
- // try {
- // config.doSave();
- // } catch (CoreException e) {
- // e.printStackTrace();
- // }
- // activating = false;
- // }
- // }
- //
- // @Override
- // public void activated(
- // ILaunchConfigurationWorkingCopy workingCopy) {
- // activating = true;
- // }
- // },
- new OSGiSettingsTab(), new EnvironmentTab(), new TracingTab(),
- new CommonTab() };
- setTabs(tabs);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.pde.launching.EquinoxLaunchConfiguration;
-
-/** OSGiBoot launch configuration. */
-public class OsgiBootEquinoxLaunchConfiguration extends
- EquinoxLaunchConfiguration {
- public final static String ID = SlcIdeUiPlugin.ID
- + ".OsgiBootEquinoxLauncher";
-
- @Override
- public void launch(ILaunchConfiguration configuration, String mode,
- ILaunch launch, IProgressMonitor monitor) throws CoreException {
- super.launch(configuration, mode, launch, monitor);
-
-// System.out.println("targetBundles="
-// + configuration.getAttribute(
-// IPDELauncherConstants.TARGET_BUNDLES, ""));
-// System.out.println("workspaceBundles="
-// + configuration.getAttribute(
-// IPDELauncherConstants.WORKSPACE_BUNDLES, ""));
-
- // Refresh resources before launching
- final IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
- propertiesFile.getParent().refreshLocal(IResource.DEPTH_INFINITE,
- monitor);
- }
-
- @Override
- protected void preLaunchCheck(ILaunchConfiguration configuration,
- ILaunch launch, IProgressMonitor monitor) throws CoreException {
- // System.out.println("Launching... " + launch);
- ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
- OsgiLaunchHelper.updateLaunchConfiguration(wc, false);
- wc.doSave();
- super.preLaunchCheck(configuration, launch, monitor);
-
- // Note that if a Java project contains a build.properties it has to
- // declare the sources otherwise it will be skipped in the generation of
- // the dev.properties file!
-
- // for(Object bundleId:fAllBundles.keySet()){
- // System.out.println(bundleId+"="+fAllBundles.get(bundleId));
- // }
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.pde.ui.launcher.OSGiLaunchShortcut;
-
-/** Launch shortcut simplifying the launch of a pure OSGi runtime */
-public class OsgiBootLaunchShortcut extends OSGiLaunchShortcut implements
- OsgiLauncherConstants {
- private StringBuffer name = null;
- private IFile propertiesFile = null;
-
- @Override
- protected String getLaunchConfigurationTypeName() {
- return OsgiBootEquinoxLaunchConfiguration.ID;
- }
-
- @Override
- public void launch(ISelection selection, String mode) {
- // we assume that only one file is selected
- IStructuredSelection sSelection = (IStructuredSelection) selection;
- Iterator<?> it = sSelection.iterator();
- propertiesFile = (IFile) it.next();
-
- name = new StringBuffer(OsgiLaunchHelper.extractName(propertiesFile));
-
- super.launch(selection, mode);
- }
-
- @Override
- protected void initializeConfiguration(ILaunchConfigurationWorkingCopy wc) {
- IResource[] resources = { propertiesFile };
- wc.setMappedResources(resources);
- super.initializeConfiguration(wc);
-
- OsgiLaunchHelper.setDefaults(wc, true);
-
- wc.setAttribute(
- IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
- OsgiLaunchHelper.findWorkingDirectory(propertiesFile));
-
- OsgiLaunchHelper.updateLaunchConfiguration(wc, false);
- }
-
- protected String getName(ILaunchConfigurationType type) {
- if (name != null && !name.toString().trim().equals(""))
- return DebugPlugin.getDefault().getLaunchManager()
- .generateLaunchConfigurationName(name.toString());
- else
- return DebugPlugin.getDefault().getLaunchManager()
- .generateLaunchConfigurationName("SLC");
- }
-
- @Override
- protected boolean isGoodMatch(ILaunchConfiguration configuration) {
- if (name != null) {
- return name.toString().equals(configuration.getName());
- }
- return super.isGoodMatch(configuration);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import org.eclipse.debug.ui.CommonTab;
-import org.eclipse.debug.ui.EnvironmentTab;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
-import org.eclipse.pde.ui.launcher.BundlesTab;
-import org.eclipse.pde.ui.launcher.OSGiLauncherTabGroup;
-import org.eclipse.pde.ui.launcher.OSGiSettingsTab;
-import org.eclipse.pde.ui.launcher.TracingTab;
-
-/** Definition of the set of tabs used in OSGi Boot launch configuration UI. */
-public class OsgiBootLauncherTabGroup extends OSGiLauncherTabGroup {
-
- @Override
- public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
- ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] {
- new OsgiBootMainTab(false),
- new BundlesTab() {
-// private boolean activating = false;
-//
-// @Override
-// public void performApply(
-// ILaunchConfigurationWorkingCopy config) {
-// super.performApply(config);
-// if (activating) {
-// try {
-// config.doSave();
-// } catch (CoreException e) {
-// e.printStackTrace();
-// }
-// activating = false;
-// }
-// }
-//
-// @Override
-// public void activated(
-// ILaunchConfigurationWorkingCopy workingCopy) {
-// activating = true;
-// }
- }, new OSGiSettingsTab(), new EnvironmentTab(),
- new TracingTab(), new CommonTab() };
- setTabs(tabs);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
-import org.eclipse.jface.dialogs.Dialog;
-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.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.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/** Main tab of OSGiBoot launch configuration UI. */
-public class OsgiBootMainTab extends AbstractLaunchConfigurationTab implements
- OsgiLauncherConstants {
- private Listener listener = new Listener();
-
- private Button syncBundles;
- private Button clearDataDirectory;
-
- private Button addJvmPaths;
- private Text additionalVmArgs;
-
- private Text additionalProgramArgs;
-
- // private final Boolean isEclipse;
-
- public OsgiBootMainTab(Boolean isEclipse) {
- super();
- // this.isEclipse = isEclipse;
- }
-
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NONE);
- container.setLayout(new GridLayout());
- container.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- createAdditionalProgramArgs(container);
- createAdditionalVmArgumentBlock(container);
- createAdvanced(container);
- Dialog.applyDialogFont(container);
- setControl(container);
- }
-
- /** Init UI for programs arguments */
- protected void createAdditionalProgramArgs(Composite parent) {
- Group container = new Group(parent, SWT.NONE);
- container.setText("Additional Program Arguments");
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
- container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- additionalProgramArgs = new Text(container, SWT.MULTI | SWT.WRAP
- | SWT.BORDER | SWT.V_SCROLL);
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 60;
- gd.widthHint = 100;
- gd.horizontalSpan = 2;
- additionalProgramArgs.setLayoutData(gd);
- additionalProgramArgs.addModifyListener(listener);
- }
-
- /** Init UI for VM arguments */
- protected void createAdditionalVmArgumentBlock(Composite parent) {
- Group container = new Group(parent, SWT.NONE);
- container.setText("Additional VM Arguments");
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
- container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- additionalVmArgs = new Text(container, SWT.MULTI | SWT.WRAP
- | SWT.BORDER | SWT.V_SCROLL);
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 60;
- gd.widthHint = 100;
- gd.horizontalSpan = 2;
- additionalVmArgs.setLayoutData(gd);
- additionalVmArgs.addModifyListener(listener);
-
- }
-
- /** Init UI for Advanced section */
- protected void createAdvanced(Composite parent) {
- Group container = new Group(parent, SWT.NONE);
- container.setText("Advanced");
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
- container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- syncBundles = new Button(container, SWT.CHECK);
- syncBundles.addSelectionListener(listener);
- new Label(container, SWT.NONE)
- .setText("Keep bundles in line with target platform and workspace (recommended)");
- clearDataDirectory = new Button(container, SWT.CHECK);
- clearDataDirectory.addSelectionListener(listener);
- new Label(container, SWT.NONE)
- .setText("Clear data directory before launch");
-
- addJvmPaths = new Button(container, SWT.CHECK);
- addJvmPaths.addSelectionListener(listener);
- new Label(container, SWT.NONE)
- .setText("Add workspace JVM paths as non-standard system properties");
-
- }
-
- public String getName() {
- return "OSGi Boot";
- }
-
- @Override
- public Image getImage() {
- return SlcIdeUiPlugin.getDefault().getImage("icons/slc-launch.gif");
- }
-
- public void initializeFrom(ILaunchConfiguration configuration) {
- // System.out.println("initializeFrom");
- try {
- syncBundles.setSelection(configuration.getAttribute(
- ATTR_SYNC_BUNDLES, true));
- clearDataDirectory.setSelection(configuration.getAttribute(
- ATTR_CLEAR_DATA_DIRECTORY, false));
-
- additionalProgramArgs.setText(configuration.getAttribute(
- ATTR_ADDITIONAL_PROGRAM_ARGS, ""));
- addJvmPaths.setSelection(configuration.getAttribute(
- ATTR_ADD_JVM_PATHS, false));
- additionalVmArgs.setText(configuration.getAttribute(
- ATTR_ADDITIONAL_VM_ARGS, ""));
- // readProperties(configuration);
- } catch (CoreException e) {
- e.printStackTrace();
- }
- }
-
- public void performApply(ILaunchConfigurationWorkingCopy configuration) {
- // System.out.println("performApply");
- configuration.setAttribute(ATTR_SYNC_BUNDLES,
- syncBundles.getSelection());
- configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY,
- clearDataDirectory.getSelection());
-
- configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS,
- additionalProgramArgs.getText());
- configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS,
- additionalVmArgs.getText());
- configuration.setAttribute(ATTR_ADD_JVM_PATHS,
- addJvmPaths.getSelection());
- // writeProperties(configuration);
-
- // OsgiLaunchHelper.updateLaunchConfiguration(configuration, isEclipse);
- }
-
- public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
- // System.out.println("setDefaults");
- configuration.setAttribute(ATTR_SYNC_BUNDLES, true);
- configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY, false);
- configuration.setAttribute(ATTR_ADD_JVM_PATHS, false);
- configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, "-Xmx128m");
- configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS, "-console");
- }
-
- @Override
- public void activated(ILaunchConfigurationWorkingCopy workingCopy) {
- initializeFrom(workingCopy);
- try {
- workingCopy.doSave();
- } catch (CoreException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void deactivated(ILaunchConfigurationWorkingCopy workingCopy) {
- // do nothing
- }
-
- class Listener extends SelectionAdapter implements ModifyListener {
- public void widgetSelected(SelectionEvent e) {
- // Object source = e.getSource();
- // setDirty(true);
- updateLaunchConfigurationDialog();
- }
-
- public void modifyText(ModifyEvent e) {
- // System.out.println("modifyText : " + e);
- // setDirty(true);
- updateLaunchConfigurationDialog();
- }
- }
-
- // private void readProperties(ILaunchConfiguration configuration) {
- // BufferedReader reader = null;
- // try {
- // IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
- // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
- // reader = new BufferedReader(new InputStreamReader(propertiesFile
- // .getContents()));
- // String line = null;
- // StringBuffer buf = new StringBuffer("");
- // while ((line = reader.readLine()) != null) {
- // buf.append(line);
- // buf.append("\n");
- // }
- // propertiesText.setText(buf.toString());
- // } catch (CoreException e) {
- // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
- // "Error", "Cannot read properties", e.getStatus());
- // return;
- // } catch (Exception e) {
- // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
- // "Error", "Cannot read properties",
- // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
- // e.getMessage(), e));
- // return;
- // } finally {
- // if (reader != null)
- // try {
- // reader.close();
- // } catch (IOException e) {
- // // silent
- // }
- // }
- //
- // }
- //
- // private void writeProperties(ILaunchConfiguration configuration) {
- // InputStream in = null;
- // IFile propertiesFile = null;
- // try {
- // propertiesFile = (IFile) configuration.getMappedResources()[0];
- // in = new ByteArrayInputStream(propertiesText.getText().getBytes());
- // propertiesFile.setContents(in, true, true, null);
- // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
- // } catch (CoreException e) {
- // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
- // "Error", "Cannot write properties", e.getStatus());
- // return;
- // } catch (Exception e) {
- // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
- // "Error", "Cannot write properties",
- // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
- // e.getMessage(), e));
- // return;
- // } finally {
- // if (in != null)
- // try {
- // in.close();
- // } catch (IOException e) {
- // // silent
- // }
- // }
- //
- // }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.IStringVariableManager;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
-import org.eclipse.jdt.launching.IVMInstall;
-import org.eclipse.jdt.launching.IVMInstall2;
-import org.eclipse.jdt.launching.IVMInstallType;
-import org.eclipse.jdt.launching.JavaRuntime;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.pde.core.plugin.IPluginModelBase;
-import org.eclipse.pde.core.plugin.PluginRegistry;
-import org.eclipse.pde.launching.IPDELauncherConstants;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Most of the actual logic is concentrated in this class which manipulates
- * {@link ILaunchConfigurationWorkingCopy}. Static method are used since the
- * shortcut and launch configuration classes are already extending PDE classes.
- */
-@SuppressWarnings("restriction")
-public class OsgiLaunchHelper implements OsgiLauncherConstants {
- private static Boolean debug = true;
-
- private final static String DEFAULT_DATA_DIR = "data";
- private final static String DEFAULT_EXEC_DIR = "exec";
- private final static String DEFAULT_VMARGS = "-Xmx256m";
- private final static String DEFAULT_PROGRAM_ARGS = "-console";
-
- /** Sets default values on this configuration. */
- public static void setDefaults(ILaunchConfigurationWorkingCopy wc,
- Boolean isEclipse) {
- try {
- if (isEclipse) {
- wc.setAttribute(IPDELauncherConstants.USE_DEFAULT, false);
- wc.setAttribute(IPDELauncherConstants.USE_PRODUCT, false);
- }
-
- wc.setAttribute(ATTR_ADD_JVM_PATHS, false);
- wc.setAttribute(ATTR_ADDITIONAL_VM_ARGS, DEFAULT_VMARGS);
- wc.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS, DEFAULT_PROGRAM_ARGS);
-
- // Defaults
- String originalVmArgs = wc.getAttribute(
- IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, "");
- wc.setAttribute(ATTR_DEFAULT_VM_ARGS, originalVmArgs);
-
- // clear config area by default
- wc.setAttribute(IPDELauncherConstants.CONFIG_CLEAR_AREA, true);
- } catch (CoreException e) {
- Shell shell = Display.getCurrent().getActiveShell();
- ErrorDialog.openError(shell, "Error",
- "Cannot execute initalize configuration", e.getStatus());
- }
- }
-
- /** Find the working directory based on this properties file. */
- public static String findWorkingDirectory(IFile propertiesFile) {
- try {
- IProject project = propertiesFile.getProject();
- IPath parent = propertiesFile.getProjectRelativePath()
- .removeLastSegments(1);
- IFolder execFolder = project.getFolder(parent
- .append(DEFAULT_EXEC_DIR));
- if (!execFolder.exists())
- execFolder.create(true, true, null);
- IFolder launchFolder = project.getFolder(execFolder
- .getProjectRelativePath().append(
- extractName(propertiesFile)));
- if (!launchFolder.exists())
- launchFolder.create(true, true, null);
- return "${workspace_loc:"
- + launchFolder.getFullPath().toString().substring(1) + "}";
- } catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException("Cannot create working directory", e);
- }
- }
-
- /** Extract the launch configuration name from the properties file. */
- public static String extractName(IFile propertiesFile) {
- IPath path = propertiesFile.getFullPath();
- IPath pathNoExt = path.removeFileExtension();
- return pathNoExt.segment(pathNoExt.segmentCount() - 1);
-
- }
-
- /** Expects properties file to be set as mapped resources */
- @SuppressWarnings("unchecked")
- public static void updateLaunchConfiguration(
- ILaunchConfigurationWorkingCopy wc, Boolean isEclipse) {
- try {
- if (debug)
- debug("##\n## Launch " + wc.getName() + " - " + new Date()
- + "\n##");
-
- // Finds the properties file and load it
- IFile propertiesFile = (IFile) wc.getMappedResources()[0];
- propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
- Properties properties = readProperties(propertiesFile);
-
- // Extract information from the properties file
- Map<String, Integer> bundlesToStart = new TreeMap<String, Integer>();
- Map<String, String> systemPropertiesToAppend = new HashMap<String, String>();
- String applicationId = interpretProperties(properties,
- bundlesToStart, systemPropertiesToAppend);
-
- if (applicationId != null)
- wc.setAttribute(IPDELauncherConstants.APPLICATION,
- applicationId);
- else {
- if (isEclipse)
- throw new Exception("No application defined,"
- + " please set the 'eclipse.application' property"
- + " in the properties file");
- }
-
- // Define directories
- File workingDir = getWorkingDirectory(wc);
- File dataDir = new File(workingDir, DEFAULT_DATA_DIR);
-
- // Update the launch configuration accordingly
- updateLaunchConfiguration(wc, bundlesToStart,
- systemPropertiesToAppend, dataDir.getAbsolutePath(),
- isEclipse);
-
- if (debug) {
- Map<String, ?> attrs = new TreeMap<String, Object>(
- wc.getAttributes());
- for (String key : attrs.keySet())
- OsgiLaunchHelper.debug(key + "=" + attrs.get(key));
- }
- } catch (Exception e) {
- e.printStackTrace();
- Shell shell = SlcIdeUiPlugin.getDefault().getWorkbench()
- .getActiveWorkbenchWindow().getShell();
- // Shell shell= Display.getCurrent().getActiveShell();
- ErrorDialog.openError(shell, "Error",
- "Cannot prepare launch configuration",
- new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
- e.getMessage(), e));
- return;
- }
- }
-
- /**
- * Actually modifies the launch configuration in order to reflect the
- * current state read from the properties file and the launch configuration
- * UI.
- */
- protected static void updateLaunchConfiguration(
- ILaunchConfigurationWorkingCopy wc,
- Map<String, Integer> bundlesToStart,
- Map<String, String> systemPropertiesToAppend, String dataDir,
- Boolean isEclipse) throws CoreException {
- // Convert bundle lists
- final String targetBundles;
- final String wkSpaceBundles;
- if (wc.getAttribute(ATTR_SYNC_BUNDLES, true)) {
- StringBuffer tBuf = new StringBuffer();
- for (IPluginModelBase model : PluginRegistry.getExternalModels()) {
- tBuf.append(model.getBundleDescription().getSymbolicName());
- tBuf.append(',');
- }
- targetBundles = tBuf.toString();
- StringBuffer wBuf = new StringBuffer();
- models: for (IPluginModelBase model : PluginRegistry
- .getWorkspaceModels()) {
- if (model.getBundleDescription() == null) {
- System.err.println("No bundle description for " + model);
- continue models;
- }
- wBuf.append(model.getBundleDescription().getSymbolicName());
- wBuf.append(',');
- }
- wkSpaceBundles = wBuf.toString();
- } else {
- targetBundles = wc.getAttribute(targetBundlesAttr(isEclipse), "");
- wkSpaceBundles = wc.getAttribute(workspaceBundlesAttr(isEclipse),
- "");
- }
- wc.setAttribute(targetBundlesAttr(isEclipse),
- convertBundleList(bundlesToStart, targetBundles));
-
- wc.setAttribute(workspaceBundlesAttr(isEclipse),
- convertBundleList(bundlesToStart, wkSpaceBundles));
-
- // Update other default information
- wc.setAttribute(IPDELauncherConstants.DEFAULT_AUTO_START, false);
-
- wc.setAttribute(IPDELauncherConstants.USE_CUSTOM_FEATURES, false);
- if (!isEclipse)
- wc.setAttribute(IPDELauncherConstants.USE_DEFAULT, true);
-
- // VM arguments (system properties)
- String defaultVmArgs = wc.getAttribute(
- OsgiLauncherConstants.ATTR_DEFAULT_VM_ARGS, "");
- StringBuffer vmArgs = new StringBuffer(defaultVmArgs);
-
- // Data dir system property
- if (dataDir != null) {
- addSysProperty(vmArgs, OsgiLauncherConstants.ARGEO_OSGI_DATA_DIR,
- dataDir);
- if (isEclipse) {
- wc.setAttribute(IPDELauncherConstants.LOCATION, dataDir);
- }
- }
-
- // Add locations of JVMs
- if (wc.getAttribute(ATTR_ADD_JVM_PATHS, false))
- addVms(vmArgs);
-
- // Add other system properties
- for (String key : systemPropertiesToAppend.keySet())
- addSysProperty(vmArgs, key, systemPropertiesToAppend.get(key));
-
- vmArgs.append(" ").append(wc.getAttribute(ATTR_ADDITIONAL_VM_ARGS, ""));
-
- wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
- vmArgs.toString());
-
- // Program arguments
- StringBuffer progArgs = new StringBuffer("");
- if (dataDir != null) {
- progArgs.append("-data ");
- progArgs.append(surroundSpaces(dataDir));
-
- if (wc.getAttribute(ATTR_CLEAR_DATA_DIRECTORY, false)) {
- File dataDirFile = new File(dataDir);
- deleteDir(dataDirFile);
- dataDirFile.mkdirs();
- }
- }
- String additionalProgramArgs = wc.getAttribute(
- OsgiLauncherConstants.ATTR_ADDITIONAL_PROGRAM_ARGS, "");
- progArgs.append(' ').append(additionalProgramArgs);
- wc.setAttribute(
- IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
- progArgs.toString());
- }
-
- /** The launch configuration attribute to use for target bundles */
- protected static String targetBundlesAttr(Boolean isEclipse) {
- return isEclipse ? IPDELauncherConstants.SELECTED_TARGET_PLUGINS
- : IPDELauncherConstants.TARGET_BUNDLES;
- }
-
- /** The launch configuration attribute to use for workspace bundles */
- protected static String workspaceBundlesAttr(Boolean isEclipse) {
- return isEclipse ? IPDELauncherConstants.SELECTED_WORKSPACE_PLUGINS
- : IPDELauncherConstants.WORKSPACE_BUNDLES;
- }
-
- /**
- * Interprets special properties and register the others as system
- * properties to append.
- *
- * @return the application id defined by
- * {@link OsgiLauncherConstants#ECLIPSE_APPLICATION}, or null if not
- * found
- */
- protected static String interpretProperties(Properties properties,
- Map<String, Integer> bundlesToStart,
- Map<String, String> systemPropertiesToAppend) {
- computeBundlesToStart(bundlesToStart, properties, null);
-
- String applicationId = null;
- propKeys: for (Object keyObj : properties.keySet()) {
- String key = keyObj.toString();
- if (OsgiLauncherConstants.ARGEO_OSGI_START.equals(key))
- continue propKeys;
- if (key.startsWith(OsgiLauncherConstants.ARGEO_OSGI_START + "."))
- continue propKeys;
- else if (OsgiLauncherConstants.ARGEO_OSGI_BUNDLES.equals(key))
- continue propKeys;
- else if (OsgiLauncherConstants.ARGEO_OSGI_LOCATIONS.equals(key))
- continue propKeys;
- else if (OsgiLauncherConstants.OSGI_BUNDLES.equals(key))
- continue propKeys;
- else if (OsgiLauncherConstants.ECLIPSE_APPLICATION.equals(key))
- applicationId = properties.getProperty(key);
- else
- systemPropertiesToAppend.put(key, properties.getProperty(key));
- }
- return applicationId;
- }
-
- /** Adds a regular system property. */
- protected static void addSysProperty(StringBuffer vmArgs, String key,
- String value) {
- surroundSpaces(value);
- String str = "-D" + key + "=" + value;
- vmArgs.append(' ').append(str);
- }
-
- /** Adds JVMS registered in the workspace as special system properties. */
- protected static void addVms(StringBuffer vmArgs) {
- addVmSysProperty(vmArgs, "default", JavaRuntime.getDefaultVMInstall());
- IVMInstallType[] vmTypes = JavaRuntime.getVMInstallTypes();
- for (IVMInstallType vmType : vmTypes) {
- for (IVMInstall vmInstall : vmType.getVMInstalls()) {
- // properties based on name
- addVmSysProperty(vmArgs, vmInstall.getName(), vmInstall);
- if (vmInstall instanceof IVMInstall2) {
- // properties based on version
- IVMInstall2 vmInstall2 = (IVMInstall2) vmInstall;
- String version = vmInstall2.getJavaVersion();
- addVmSysProperty(vmArgs, version, vmInstall);
-
- List<String> tokens = new ArrayList<String>();
- StringTokenizer st = new StringTokenizer(version, ".");
- while (st.hasMoreTokens())
- tokens.add(st.nextToken());
- if (tokens.size() >= 2)
- addVmSysProperty(vmArgs,
- tokens.get(0) + "." + tokens.get(1), vmInstall);
- }
- }
- }
-
- }
-
- /** Adds a special system property pointing to one of the registered JVMs. */
- protected static void addVmSysProperty(StringBuffer vmArgs, String suffix,
- IVMInstall vmInstall) {
- addSysProperty(vmArgs, OsgiLauncherConstants.VMS_PROPERTY_PREFIX + "."
- + suffix, vmInstall.getInstallLocation().getPath());
- }
-
- /** Surround the string with quotes if it contains spaces. */
- protected static String surroundSpaces(String str) {
- if (str.indexOf(' ') >= 0)
- return '\"' + str + '\"';
- else
- return str;
- }
-
- /**
- * Reformat the bundle list in order to reflect which bundles have to be
- * started.
- */
- protected static String convertBundleList(
- Map<String, Integer> bundlesToStart, String original) {
- StringTokenizer stComa = new StringTokenizer(original, ",");
- // sort by bundle symbolic name
- Set<String> bundleIds = new TreeSet<String>();
- bundles: while (stComa.hasMoreTokens()) {
-
- String bundleId = stComa.nextToken();
- if (bundleId.indexOf('*') >= 0)
- throw new RuntimeException(
- "Bundle id "
- + bundleId
- + " not properly formatted, clean your workspace projects");
-
- int indexAt = bundleId.indexOf('@');
- if (indexAt >= 0) {
- bundleId = bundleId.substring(0, indexAt);
- }
-
- // We can now rely on bundleId value
-
- if (bundleId.endsWith(".source")) {
- // debug("Skip source bundle " + bundleId);
- continue bundles;
- } else if (bundleId
- .equals("org.eclipse.equinox.simpleconfigurator")) {
- // IPDEBuildConstants.BUNDLE_SIMPLE_CONFIGURATOR
- // skip simple configurator in order to avoid side-effects
- continue bundles;
- }
- bundleIds.add(bundleId);
- }
-
- StringBuffer bufBundles = new StringBuffer(1024);
- boolean first = true;
- for (String bundleId : bundleIds) {
- if (first)
- first = false;
- else
- bufBundles.append(',');
- boolean modified = false;
- if (bundlesToStart.containsKey(bundleId)) {
- Integer startLevel = bundlesToStart.get(bundleId);
- String startLevelStr = startLevel != null ? startLevel
- .toString() : "default";
- bufBundles.append(bundleId).append('@').append(startLevelStr)
- .append(":true");
- modified = true;
- debug("Will start " + bundleId + " at level " + startLevelStr);
- }
-
- if (!modified)
- bufBundles.append(bundleId);
-
- }
- String output = bufBundles.toString();
- return output;
- }
-
- // UTILITIES
- /** Recursively deletes a directory tree. */
- private static void deleteDir(File dir) {
- File[] files = dir.listFiles();
- for (File file : files) {
- if (file.isDirectory())
- deleteDir(file);
- else
- file.delete();
- }
- dir.delete();
- }
-
- /** Loads a properties file. */
- private static Properties readProperties(IFile file) throws CoreException {
- Properties props = new Properties();
-
- InputStream in = null;
- try {
- in = file.getContents();
- props.load(in);
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR,
- SlcIdeUiPlugin.ID, "Cannot read properties file", e));
- } finally {
- if (in != null)
- try {
- in.close();
- } catch (IOException e) {
- // silent
- }
- }
- return props;
- }
-
- /** Determines the start levels for the bundles */
- private static void computeBundlesToStart(
- Map<String, Integer> bundlesToStart, Properties properties,
- Integer defaultStartLevel) {
-
- // default (and previously, only behaviour)
- appendBundlesToStart(bundlesToStart, defaultStartLevel,
- properties.getProperty(OsgiLauncherConstants.ARGEO_OSGI_START,
- ""));
-
- // list argeo.osgi.start.* system properties
- Iterator<Object> keys = properties.keySet().iterator();
- final String prefix = OsgiLauncherConstants.ARGEO_OSGI_START + ".";
- while (keys.hasNext()) {
- String key = (String) keys.next();
- if (key.startsWith(prefix)) {
- Integer startLevel;
- String suffix = key.substring(prefix.length());
- String[] tokens = suffix.split("\\.");
- if (tokens.length > 0 && !tokens[0].trim().equals(""))
- try {
- // first token is start level
- startLevel = new Integer(tokens[0]);
- } catch (NumberFormatException e) {
- startLevel = defaultStartLevel;
- }
- else
- startLevel = defaultStartLevel;
-
- // append bundle names
- String bundleNames = properties.getProperty(key);
- appendBundlesToStart(bundlesToStart, startLevel, bundleNames);
- }
- }
- }
-
- /** Append a comma-separated list of bundles to the start levels. */
- private static void appendBundlesToStart(
- Map<String, Integer> bundlesToStart, Integer startLevel, String str) {
- if (str == null || str.trim().equals(""))
- return;
-
- String[] bundleNames = str.split(",");
- for (int i = 0; i < bundleNames.length; i++) {
- if (bundleNames[i] != null && !bundleNames[i].trim().equals(""))
- bundlesToStart.put(bundleNames[i], startLevel);
- }
- }
-
- /*
- * HACKED UTILITIES
- */
- // Hacked from
- // org.eclipse.pde.internal.ui.launcher.LaunchArgumentsHelper.getWorkingDirectory(ILaunchConfiguration)
- private static File getWorkingDirectory(ILaunchConfiguration configuration)
- throws CoreException {
- String working;
- try {
- working = configuration.getAttribute(
- IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
- new File(".").getCanonicalPath()); //$NON-NLS-1$
- } catch (IOException e) {
- working = "${workspace_loc}/../"; //$NON-NLS-1$
- }
- File dir;
- try {
- dir = new File(getSubstitutedString(working));
- } catch (Exception e) {
- // the directory was most probably deleted
- IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
- working = findWorkingDirectory(propertiesFile);
- dir = new File(getSubstitutedString(working));
- }
- if (!dir.exists())
- dir.mkdirs();
- return dir;
- }
-
- // Hacked from
- // org.eclipse.pde.internal.ui.launcher.LaunchArgumentsHelper.getSubstitutedString(String)
- private static String getSubstitutedString(String text)
- throws CoreException {
- if (text == null)
- return ""; //$NON-NLS-1$
- IStringVariableManager mgr = VariablesPlugin.getDefault()
- .getStringVariableManager();
- return mgr.performStringSubstitution(text);
- }
-
- /**
- * Not used anymore, but kept because this routine may be useful in the
- * future.
- */
- protected void addSelectedProjects(StringBuffer name, ISelection selection,
- List<String> bundlesToStart) {
- Assert.isNotNull(selection);
-
- Map<String, IPluginModelBase> bundleProjects = new HashMap<String, IPluginModelBase>();
- for (IPluginModelBase modelBase : PluginRegistry.getWorkspaceModels()) {
- IProject bundleProject = modelBase.getUnderlyingResource()
- .getProject();
- bundleProjects.put(bundleProject.getName(), modelBase);
- }
-
- IStructuredSelection sSelection = (IStructuredSelection) selection;
- for (Iterator<?> it = sSelection.iterator(); it.hasNext();) {
- Object obj = it.next();
- if (obj instanceof IProject) {
- IProject project = (IProject) obj;
- if (bundleProjects.containsKey(project.getName())) {
- IPluginModelBase modelBase = bundleProjects.get(project
- .getName());
-
- BundleDescription bundleDescription = null;
- if (modelBase.isFragmentModel()) {
- BundleDescription[] hosts = modelBase
- .getBundleDescription().getHost().getHosts();
- for (BundleDescription bd : hosts) {
- if (debug)
- System.out.println("Host for "
- + modelBase.getBundleDescription()
- .getSymbolicName() + ": "
- + bd.getSymbolicName());
- bundleDescription = bd;
- }
- } else {
- bundleDescription = modelBase.getBundleDescription();
- }
-
- if (bundleDescription != null) {
- String symbolicName = bundleDescription
- .getSymbolicName();
- String bundleName = bundleDescription.getName();
-
- bundlesToStart.add(symbolicName);
-
- if (name.length() > 0)
- name.append(" ");
- if (bundleName != null)
- name.append(bundleName);
- else
- name.append(symbolicName);
- }
- }
- }
- }
- }
-
- static void debug(Object obj) {
- if (debug)
- System.out.println(obj);
- }
-
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.osgi;
-
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
-
-/** Constants used by OSGi launch. */
-public interface OsgiLauncherConstants {
-
- public final static String OSGI_BUNDLES = "osgi.bundles";
- public final static String ECLIPSE_APPLICATION = "eclipse.application";
-
- public final static String ARGEO_OSGI_START = "argeo.osgi.start";
- public final static String ARGEO_OSGI_BUNDLES = "argeo.osgi.bundles";
- public final static String ARGEO_OSGI_LOCATIONS = "argeo.osgi.locations";
- public final static String ARGEO_OSGI_DATA_DIR = "argeo.osgi.data.dir";
- public final static String VMS_PROPERTY_PREFIX = "slc.launch.vm";
-
- // Configuration
- public final static String ATTR_SYNC_BUNDLES = SlcIdeUiPlugin.ID
- + ".syncBundles";
- public final static String ATTR_CLEAR_DATA_DIRECTORY = SlcIdeUiPlugin.ID
- + ".clearDataDirectory";
-
- public final static String ATTR_DEFAULT_VM_ARGS = SlcIdeUiPlugin.ID
- + ".defaultVmArgs";
- public final static String ATTR_ADDITIONAL_PROGRAM_ARGS = SlcIdeUiPlugin.ID
- + ".additionalProgramArgs";
- public final static String ATTR_ADDITIONAL_VM_ARGS = SlcIdeUiPlugin.ID
- + ".additionalVmArgs";
- public final static String ATTR_ADD_JVM_PATHS = SlcIdeUiPlugin.ID
- + ".addJvmPaths";
- public final static String ATTR_DATADIR = SlcIdeUiPlugin.ID + ".dataDir";
-}
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.preferences;\r
-\r
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;\r
-import org.eclipse.jface.preference.DirectoryFieldEditor;\r
-import org.eclipse.jface.preference.FieldEditorPreferencePage;\r
-import org.eclipse.ui.IWorkbench;\r
-import org.eclipse.ui.IWorkbenchPreferencePage;\r
-\r
-public class SlcLaunchPreferencePage extends FieldEditorPreferencePage implements\r
- IWorkbenchPreferencePage {\r
- public final static String PREF_SLC_RUNTIME_LOCATION = SlcIdeUiPlugin.ID\r
- + ".slcRuntimeLocation";\r
- public final static String PREF_EMBEDDED_JAVA_LIBRARY_PATH = SlcIdeUiPlugin.ID\r
- + ".embeddedJavaLibraryPath";\r
-\r
- public SlcLaunchPreferencePage() {\r
-// IPreferenceStore store = SlcUiLaunchPlugin.getDefault()\r
-// .getPreferenceStore();\r
-// setPreferenceStore(store);\r
- setDescription("Argeo SLC Launch Preferences");\r
- }\r
-\r
- @Override\r
- protected void createFieldEditors() {\r
- addField(new DirectoryFieldEditor(PREF_SLC_RUNTIME_LOCATION,\r
- "SLC Runtime", getFieldEditorParent()));\r
- addField(new DirectoryFieldEditor(PREF_EMBEDDED_JAVA_LIBRARY_PATH,\r
- "Embedded Java Library Path", getFieldEditorParent()));\r
- }\r
-\r
- public void init(IWorkbench workbench) {\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.script;\r
-\r
-import org.eclipse.core.resources.IResource;\r
-import org.eclipse.core.resources.ResourcesPlugin;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.debug.core.ILaunchConfiguration;\r
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;\r
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;\r
-import org.eclipse.jface.window.Window;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.ModifyEvent;\r
-import org.eclipse.swt.events.ModifyListener;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.events.SelectionListener;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.Text;\r
-import org.eclipse.ui.dialogs.ResourceSelectionDialog;\r
-\r
-public class SlcScriptLaunchConfigurationTab extends\r
- AbstractLaunchConfigurationTab {\r
-\r
- private Text scriptTF;\r
- private Text propertiesTF;\r
- private Text runtimeTF;\r
- private Text targetsTF;\r
- private Button pre093B;\r
-\r
- public void createControl(Composite parent) {\r
- Composite body = new Composite(parent, SWT.NONE);\r
- setControl(body);\r
- body.setLayout(new GridLayout(1, false));\r
- body.setFont(parent.getFont());\r
-\r
- createLabel(body, "Script location");\r
- scriptTF = createSingleText(body);\r
- createWorkspaceButton(body);\r
-\r
- createLabel(body, "Runtime");\r
- runtimeTF = createSingleText(body);\r
-\r
- createLabel(body, "Targets");\r
- targetsTF = createSingleText(body);\r
-\r
- createLabel(body, "Properties");\r
- propertiesTF = createMultipleText(body, 10);\r
-\r
- pre093B = createCheckBox(body, "Pre SLC v0.9.3");\r
- }\r
-\r
- public String getName() {\r
- return "SLC";\r
- }\r
-\r
- public void initializeFrom(ILaunchConfiguration configuration) {\r
- try {\r
- scriptTF.setText(configuration.getAttribute(\r
- SlcScriptUtils.ATTR_SCRIPT, ""));\r
-\r
- boolean pre093 = configuration.getAttribute(\r
- SlcScriptUtils.ATTR_PRE093, false);\r
-\r
- propertiesTF.setText(configuration.getAttribute(\r
- SlcScriptUtils.ATTR_PROPERTIES, ""));\r
- runtimeTF.setText(configuration.getAttribute(\r
- SlcScriptUtils.ATTR_RUNTIME, ""));\r
- targetsTF.setText(configuration.getAttribute(\r
- SlcScriptUtils.ATTR_TARGETS, ""));\r
- pre093B.setSelection(pre093);\r
- } catch (CoreException e) {\r
- throw new RuntimeException("Cannot initialize tab", e);\r
- }\r
-\r
- }\r
-\r
- public void performApply(ILaunchConfigurationWorkingCopy configuration) {\r
- configuration.setAttribute(SlcScriptUtils.ATTR_SCRIPT, scriptTF\r
- .getText());\r
- configuration.setAttribute(SlcScriptUtils.ATTR_PROPERTIES, propertiesTF\r
- .getText());\r
- configuration.setAttribute(SlcScriptUtils.ATTR_RUNTIME, runtimeTF\r
- .getText());\r
- configuration.setAttribute(SlcScriptUtils.ATTR_TARGETS, targetsTF\r
- .getText());\r
- configuration.setAttribute(SlcScriptUtils.ATTR_PRE093, pre093B\r
- .getSelection());\r
- }\r
-\r
- public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {\r
- configuration.setAttribute(SlcScriptUtils.ATTR_SCRIPT, "");\r
- configuration.setAttribute(SlcScriptUtils.ATTR_PROPERTIES, "");\r
- configuration.setAttribute(SlcScriptUtils.ATTR_RUNTIME, "");\r
- configuration.setAttribute(SlcScriptUtils.ATTR_TARGETS, "");\r
- configuration.setAttribute(SlcScriptUtils.ATTR_PRE093, false);\r
- }\r
-\r
- // UI Utils\r
- protected Label createLabel(Composite parent, String text) {\r
- Label t = new Label(parent, SWT.NONE | SWT.WRAP);\r
- t.setText(text);\r
- t.setFont(parent.getFont());\r
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);\r
- gd.horizontalSpan = 1;\r
- t.setLayoutData(gd);\r
- return t;\r
- }\r
-\r
- protected Text createSingleText(Composite parent) {\r
- Text t = new Text(parent, SWT.SINGLE | SWT.BORDER);\r
- t.setFont(parent.getFont());\r
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);\r
- gd.horizontalSpan = 1;\r
- t.setLayoutData(gd);\r
- t.addModifyListener(modifyListener);\r
- return t;\r
- }\r
-\r
- protected Text createMultipleText(Composite parent, int verticalSpan) {\r
- Text t = new Text(parent, SWT.MULTI | SWT.BORDER);\r
- t.setFont(parent.getFont());\r
- GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true);\r
- gd.horizontalSpan = 1;\r
- gd.verticalSpan = verticalSpan;\r
- t.setLayoutData(gd);\r
- t.addModifyListener(modifyListener);\r
- return t;\r
- }\r
-\r
- protected Button createCheckBox(Composite parent, String label) {\r
- Button b = new Button(parent, SWT.CHECK);\r
- b.setFont(parent.getFont());\r
- b.setText(label);\r
- b.addSelectionListener(selectionListener);\r
- return b;\r
-\r
- }\r
-\r
- protected Button createWorkspaceButton(Composite parent) {\r
- Button b = new Button(parent, SWT.PUSH);\r
- b.setFont(parent.getFont());\r
- b.setText("Workspace...");\r
- b.addSelectionListener(new SelectionListener() {\r
- public void widgetDefaultSelected(SelectionEvent e) {\r
- }\r
-\r
- public void widgetSelected(SelectionEvent e) {\r
- handleWorkspaceLocationButtonSelected();\r
- }\r
- });\r
- return b;\r
- }\r
-\r
- protected void handleWorkspaceLocationButtonSelected() {\r
- ResourceSelectionDialog dialog;\r
- dialog = new ResourceSelectionDialog(getShell(), ResourcesPlugin\r
- .getWorkspace().getRoot(), "Select a file");\r
- if (dialog.open() == Window.OK) {\r
- Object[] results = dialog.getResult();\r
- if (results == null || results.length < 1) {\r
- return;\r
- }\r
- IResource resource = (IResource) results[0];\r
- scriptTF.setText(SlcScriptUtils\r
- .convertToWorkspaceLocation(resource));\r
- updateLaunchConfigurationDialog();\r
- }\r
- }\r
-\r
- // LISTENERS\r
- /**\r
- * Modify listener that simply updates the owning launch configuration\r
- * dialog.\r
- */\r
- private ModifyListener modifyListener = new ModifyListener() {\r
- public void modifyText(ModifyEvent evt) {\r
- updateLaunchConfigurationDialog();\r
- }\r
- };\r
- private SelectionListener selectionListener = new SelectionListener() {\r
- public void widgetDefaultSelected(SelectionEvent e) {\r
- }\r
-\r
- public void widgetSelected(SelectionEvent e) {\r
- updateLaunchConfigurationDialog();\r
- }\r
- };\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.script;\r
-\r
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;\r
-import org.eclipse.debug.ui.CommonTab;\r
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;\r
-import org.eclipse.debug.ui.ILaunchConfigurationTab;\r
-\r
-public class SlcScriptLaunchConfigurationTabGroup extends\r
- AbstractLaunchConfigurationTabGroup {\r
-\r
- public void createTabs(ILaunchConfigurationDialog dialog, String mode) {\r
- ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] {\r
- new SlcScriptLaunchConfigurationTab(), new CommonTab() };\r
- setTabs(tabs);\r
- }\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.script;\r
-\r
-import java.io.ByteArrayInputStream;\r
-import java.io.IOException;\r
-import java.util.List;\r
-import java.util.Properties;\r
-import java.util.Vector;\r
-\r
-import org.argeo.slc.ide.ui.DeployedSlcSystem;\r
-import org.argeo.slc.ide.ui.EmbeddedSlcSystem;\r
-import org.argeo.slc.ide.ui.SlcSystem;\r
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;\r
-import org.argeo.slc.ide.ui.launch.preferences.SlcLaunchPreferencePage;\r
-import org.eclipse.core.resources.IFile;\r
-import org.eclipse.core.resources.IProject;\r
-import org.eclipse.core.resources.ResourcesPlugin;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.core.runtime.IPath;\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Path;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.core.variables.IStringVariableManager;\r
-import org.eclipse.core.variables.VariablesPlugin;\r
-import org.eclipse.debug.core.DebugPlugin;\r
-import org.eclipse.debug.core.ILaunch;\r
-import org.eclipse.debug.core.ILaunchConfiguration;\r
-import org.eclipse.debug.core.ILaunchManager;\r
-import org.eclipse.jdt.core.IJavaProject;\r
-import org.eclipse.jdt.core.IType;\r
-import org.eclipse.jdt.core.JavaCore;\r
-import org.eclipse.jdt.core.JavaModelException;\r
-import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;\r
-import org.eclipse.jdt.launching.IVMRunner;\r
-import org.eclipse.jdt.launching.VMRunnerConfiguration;\r
-import org.eclipse.jface.dialogs.ErrorDialog;\r
-import org.eclipse.swt.widgets.Shell;\r
-\r
-public class SlcScriptLaunchDelegate extends\r
- AbstractJavaLaunchConfigurationDelegate {\r
- public static final String ID = "org.argeo.slc.launch.slcScriptLaunchType";\r
-\r
- public final static String ANT_MAIN = "org.apache.tools.ant.Main";\r
- public final static String SLC_MAIN = "org.argeo.slc.cli.SlcMain";\r
-\r
- @SuppressWarnings("deprecation")\r
- public void launch(ILaunchConfiguration configuration, String mode,\r
- ILaunch launch, IProgressMonitor monitor) throws CoreException {\r
- if (!saveBeforeLaunch(configuration, mode, monitor))\r
- return;\r
-\r
- String scriptLocation = configuration.getAttribute(\r
- SlcScriptUtils.ATTR_SCRIPT, "");\r
- if (scriptLocation.equals(""))\r
- abort("Script has to be provided", null, 1);\r
-\r
- IStringVariableManager manager = VariablesPlugin.getDefault()\r
- .getStringVariableManager();\r
- scriptLocation = manager.performStringSubstitution(scriptLocation);\r
- IPath path = new Path(scriptLocation);\r
- IFile[] files = ResourcesPlugin.getWorkspace().getRoot()\r
- .findFilesForLocation(path);\r
-\r
- if (files.length == 0)\r
- abort("Coulkd not find related file", null, 1);\r
-\r
- IFile file = (IFile) files[0];\r
- DebugPlugin\r
- .logMessage("Launching " + file.getLocation().toFile(), null);\r
-\r
- boolean pre093 = configuration.getAttribute(SlcScriptUtils.ATTR_PRE093,\r
- false);\r
-\r
- // Retrieve SLC Runtime\r
- SlcSystem slcSystem = findSlcSystem(file, pre093);\r
- if (slcSystem == null)\r
- return;\r
-\r
- IVMRunner vmRunner = slcSystem.getVmInstall().getVMRunner(mode);\r
- final VMRunnerConfiguration vmConfig;\r
- if (pre093) {\r
- vmConfig = createPre093Config(slcSystem, file, mode);\r
- } else {\r
- vmConfig = createConfig(slcSystem, file, mode, configuration);\r
- }\r
- vmRunner.run(vmConfig, launch, monitor);\r
- }\r
-\r
- protected SlcSystem findSlcSystem(IFile file, boolean pre093)\r
- throws CoreException {\r
- SlcSystem slcSystem = null;\r
-\r
- IProject project = file.getProject();\r
- if (project.getNature("org.eclipse.jdt.core.javanature") != null) {\r
- IJavaProject javaProject = JavaCore.create(project);\r
- if (checkProjectForEmbedded(javaProject, pre093)) {\r
- slcSystem = new EmbeddedSlcSystem(javaProject);\r
- }\r
- }\r
-\r
- if (slcSystem == null) {\r
- String slcRuntimePath = SlcIdeUiPlugin.getDefault()\r
- .getPreferenceStore().getString(\r
- SlcLaunchPreferencePage.PREF_SLC_RUNTIME_LOCATION);\r
- if (slcRuntimePath == null || slcRuntimePath.equals("")) {\r
- showError("SLC Runtime path is not set. Set it in Windows > Preferences > SLC");\r
- return null;\r
- }\r
-\r
- slcSystem = new DeployedSlcSystem(slcRuntimePath);\r
- }\r
-\r
- return slcSystem;\r
- }\r
-\r
- protected boolean checkProjectForEmbedded(IJavaProject project,\r
- boolean pre093) {\r
- try {\r
- IType mainType = null;\r
- if (pre093)\r
- mainType = project.findType(ANT_MAIN);\r
- else\r
- mainType = project.findType(SLC_MAIN);\r
-\r
- if (mainType == null)\r
- return false;\r
- else\r
- return true;\r
- } catch (JavaModelException e) {\r
- e.printStackTrace();\r
- return false;\r
- }\r
- }\r
-\r
- // Regular SLC\r
- protected VMRunnerConfiguration createConfig(SlcSystem deployedSlc,\r
- IFile file, String mode, ILaunchConfiguration configuration)\r
- throws CoreException {\r
- VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(SLC_MAIN,\r
- deployedSlc.getClasspath());\r
- vmConfig.setVMArguments(getVmArguments(deployedSlc));\r
- vmConfig.setWorkingDirectory(file.getLocation().toFile().getParent());\r
- vmConfig.setProgramArguments(getProgramArguments(deployedSlc, file,\r
- mode, configuration));\r
- return vmConfig;\r
- }\r
-\r
- protected String[] getVmArguments(SlcSystem deployedSlc) {\r
- List<String> list = new Vector<String>();\r
- if (deployedSlc.getJavaLibraryPath() != null)\r
- list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
- return list.toArray(new String[list.size()]);\r
- }\r
-\r
- protected String[] getProgramArguments(SlcSystem deployedSlc, IFile file,\r
- String mode, ILaunchConfiguration configuration)\r
- throws CoreException {\r
- List<String> list = new Vector<String>();\r
-\r
- list.add("--mode");\r
- list.add("single");\r
-\r
- // Script\r
- list.add("--script");\r
- list.add(file.getLocation().toFile().getAbsolutePath());\r
-\r
- // Runtime\r
- String runtime = configuration.getAttribute(\r
- SlcScriptUtils.ATTR_RUNTIME, "");\r
- if (!runtime.equals("")) {\r
- list.add("--runtime");\r
- list.add(runtime);\r
- }\r
-\r
- // Targets\r
- String targets = configuration.getAttribute(\r
- SlcScriptUtils.ATTR_TARGETS, "");\r
- if (!targets.equals("")) {\r
- list.add("--targets");\r
- list.add(targets);\r
- }\r
-\r
- // Properties\r
- Properties properties = new Properties();\r
- String str = configuration.getAttribute(SlcScriptUtils.ATTR_PROPERTIES,\r
- "");\r
- ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes());\r
- try {\r
- properties.load(in);\r
- } catch (IOException e) {\r
- throw new RuntimeException("Cannot read properties", e);\r
- } finally {\r
- if (in != null)\r
- try {\r
- in.close();\r
- } catch (IOException e) {\r
- // silent\r
- }\r
- }\r
-\r
- for (Object key : properties.keySet()) {\r
- list.add("-p");\r
- StringBuffer buf = new StringBuffer("");\r
- buf.append(key).append('=').append(properties.get(key));\r
- list.add(buf.toString());\r
- }\r
-\r
- // Debug mode\r
- if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
- list.add("--property");\r
- list.add("log4j.logger.org.argeo.slc=DEBUG");\r
- }\r
- return list.toArray(new String[list.size()]);\r
- }\r
-\r
- // Pre SLC v0.9.3\r
- protected VMRunnerConfiguration createPre093Config(SlcSystem deployedSlc,\r
- IFile file, String mode) throws CoreException {\r
- VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(ANT_MAIN,\r
- deployedSlc.getClasspath());\r
- vmConfig.setVMArguments(getPre093VmArguments(deployedSlc));\r
- vmConfig.setWorkingDirectory(file.getLocation().toFile().getParent());\r
- vmConfig.setProgramArguments(getPre093ProgramArguments(deployedSlc,\r
- file, mode));\r
- return vmConfig;\r
- }\r
-\r
- protected String[] getPre093VmArguments(SlcSystem deployedSlc) {\r
- List<String> list = new Vector<String>();\r
- // list.add("-Dant.home=" + deployedSlc.getAntHome());\r
- if (deployedSlc.getJavaLibraryPath() != null)\r
- list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
- return list.toArray(new String[list.size()]);\r
- }\r
-\r
- protected String[] getPre093ProgramArguments(SlcSystem deployedSlc,\r
- IFile file, String mode) {\r
- List<String> list = new Vector<String>();\r
- list.add("-f");\r
- list.add(file.getLocation().toFile().getAbsolutePath());\r
- if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
- list.add("-d");\r
- }\r
- return list.toArray(new String[list.size()]);\r
- }\r
-\r
- // Utilities\r
- private static void showError(String message) {\r
- Shell shell = SlcIdeUiPlugin.getDefault().getWorkbench()\r
- .getActiveWorkbenchWindow().getShell();\r
-\r
- IStatus status = new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,\r
- message);\r
- ErrorDialog.openError(shell, "Error", "Cannot launch SLC script",\r
- status);\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.script;\r
-\r
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;\r
-import org.eclipse.core.resources.IFile;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.core.runtime.IPath;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.debug.core.DebugPlugin;\r
-import org.eclipse.debug.core.ILaunchConfiguration;\r
-import org.eclipse.debug.core.ILaunchConfigurationType;\r
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;\r
-import org.eclipse.debug.core.ILaunchManager;\r
-import org.eclipse.debug.ui.DebugUITools;\r
-import org.eclipse.debug.ui.IDebugUIConstants;\r
-import org.eclipse.debug.ui.ILaunchShortcut;\r
-import org.eclipse.jface.dialogs.ErrorDialog;\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.ui.IEditorPart;\r
-\r
-public class SlcScriptLaunchShortcut implements ILaunchShortcut {\r
- private boolean showDialog = false;\r
-\r
- public void launch(ISelection selection, String mode) {\r
- try {\r
- if (!(selection instanceof IStructuredSelection)) {\r
- throw new RuntimeException("Unknown selection "\r
- + selection.getClass());\r
- }\r
- IStructuredSelection sSelection = (IStructuredSelection) selection;\r
- if (sSelection.size() != 1) {\r
- throw new RuntimeException("Can only launch one SLC script.");\r
- }\r
- Object obj = sSelection.iterator().next();\r
- if (!(obj instanceof IFile)) {\r
- throw new RuntimeException("Can only launch files.");\r
- }\r
- IFile file = ((IFile) obj);\r
-\r
- ILaunchManager manager = DebugPlugin.getDefault()\r
- .getLaunchManager();\r
- ILaunchConfigurationType type = manager\r
- .getLaunchConfigurationType(SlcScriptLaunchDelegate.ID);\r
-\r
- // Find or create config\r
- String configLocation = SlcScriptUtils\r
- .convertToWorkspaceLocation(file);\r
- ILaunchConfiguration config = findLaunchConfiguration(\r
- configLocation, manager.getLaunchConfigurations(type));\r
- if (config == null) {\r
- ILaunchConfigurationWorkingCopy wc = type.newInstance(null,\r
- generateName(file));\r
- wc.setAttribute(SlcScriptUtils.ATTR_SCRIPT, configLocation);\r
- wc.setMappedResources(new IFile[] { file });\r
- config = wc.doSave();\r
- }\r
-\r
- // Launch\r
- launch(config, mode);\r
- } catch (CoreException e) {\r
- Shell shell = SlcIdeUiPlugin.getDefault().getWorkbench()\r
- .getActiveWorkbenchWindow().getShell();\r
- ErrorDialog.openError(shell, "Error",\r
- "Cannot execute SLC launch shortcut", e.getStatus());\r
- }\r
-\r
- }\r
-\r
- protected String generateName(IFile file) {\r
- IPath relativePath = file.getProjectRelativePath();\r
- String name = relativePath.toString();\r
- int idx = name.lastIndexOf(".xml");\r
- if (idx > 0)\r
- name = name.substring(0, idx);\r
-\r
- if (name.startsWith("src/main/slc/root/"))\r
- name = name.substring("src/main/slc/root/".length());\r
- else if (name.startsWith("src/main/slc/"))\r
- name = name.substring("src/main/slc/".length());\r
-\r
- name = name.replace('/', '.');// otherwise not properly saved\r
- return name;\r
- }\r
-\r
- protected ILaunchConfiguration findLaunchConfiguration(\r
- String configLocation, ILaunchConfiguration[] configs)\r
- throws CoreException {\r
- for (ILaunchConfiguration config : configs) {\r
- String loc = config.getAttribute(SlcScriptUtils.ATTR_SCRIPT, "");\r
- if (loc.equals(configLocation)) {\r
- return config;\r
- }\r
- }\r
- return null;\r
- }\r
-\r
- protected void launch(ILaunchConfiguration configuration, String mode)\r
- throws CoreException {\r
- if (showDialog) {\r
- IStatus status = new Status(IStatus.INFO, SlcIdeUiPlugin.ID,\r
- "Configure SLC Launch");\r
- String groupId;\r
- if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
- groupId = IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP;\r
- } else {\r
- groupId = IDebugUIConstants.ID_RUN_LAUNCH_GROUP;\r
- }\r
- DebugUITools.openLaunchConfigurationDialog(SlcIdeUiPlugin\r
- .getDefault().getWorkbench().getActiveWorkbenchWindow()\r
- .getShell(), configuration, groupId, status);\r
- } else {\r
- DebugUITools.launch(configuration, mode);\r
- }\r
-\r
- }\r
-\r
- public void launch(IEditorPart editor, String mode) {\r
- // not (yet) implemented\r
- }\r
-\r
- public void setShowDialog(boolean showDialog) {\r
- this.showDialog = showDialog;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.script;\r
-\r
-\r
-public class SlcScriptLaunchShortcutWithDialog extends SlcScriptLaunchShortcut {\r
-\r
- public SlcScriptLaunchShortcutWithDialog() {\r
- super();\r
- setShowDialog(true);\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.ide.ui.launch.script;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.variables.VariablesPlugin;
-
-public class SlcScriptUtils {
-
- public final static String ATTR_SCRIPT = "script";
- public final static String ATTR_PROPERTIES = "properties";
- public final static String ATTR_RUNTIME = "runtime";
- public final static String ATTR_TARGETS = "targets";
- public final static String ATTR_PRE093 = "pre093";
-
- public static String convertToWorkspaceLocation(IResource resource) {
- return VariablesPlugin.getDefault().getStringVariableManager()
- .generateVariableExpression("workspace_loc",
- resource.getFullPath().toString());
- }
-
- private SlcScriptUtils() {
-
- }
-}
--- /dev/null
+package org.argeo.slc.ide.ui;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.jdt.launching.IVMInstall;\r
+import org.eclipse.jdt.launching.JavaRuntime;\r
+\r
+public class DeployedSlcSystem implements SlcSystem {\r
+ private File baseDir;\r
+ private String relLibDir = "lib";\r
+\r
+ public DeployedSlcSystem(String baseDirPath) {\r
+ try {\r
+ this.baseDir = new File(baseDirPath).getCanonicalFile();\r
+ } catch (IOException e) {\r
+ throw new RuntimeException("Cannot get path for " + baseDirPath, e);\r
+ }\r
+ }\r
+\r
+ public String[] getClasspath() throws CoreException {\r
+ List<String> classpath = new Vector<String>();\r
+ File libDir = new File(baseDir.getPath() + File.separator + relLibDir);\r
+ File[] files = libDir.listFiles();\r
+ for (File file : files) {\r
+ try {\r
+ classpath.add(file.getCanonicalPath());\r
+ } catch (IOException e) {\r
+ throw new RuntimeException("Cannot get path for " + file, e);\r
+ }\r
+ }\r
+ return classpath.toArray(new String[classpath.size()]);\r
+ }\r
+\r
+ public IVMInstall getVmInstall() throws CoreException {\r
+ return JavaRuntime.getDefaultVMInstall();\r
+ }\r
+\r
+ public String getAntHome() {\r
+ return baseDir.getPath();\r
+ }\r
+\r
+ public String getJavaLibraryPath() {\r
+ return baseDir.getPath() + File.separator + "bin";\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui;
+
+import org.argeo.slc.ide.ui.launch.preferences.SlcLaunchPreferencePage;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+
+public class EmbeddedSlcSystem implements SlcSystem {
+ private final IJavaProject project;
+
+ public EmbeddedSlcSystem(IJavaProject project) {
+ this.project = project;
+ }
+
+ public String[] getClasspath() throws CoreException {
+ return JavaRuntime.computeDefaultRuntimeClassPath(project);
+ }
+
+ public String getJavaLibraryPath() {
+ String javaLibPath = SlcIdeUiPlugin.getDefault()
+ .getPreferenceStore().getString(
+ SlcLaunchPreferencePage.PREF_SLC_RUNTIME_LOCATION);
+ if (javaLibPath == null || javaLibPath.equals(""))
+ return null;
+ else
+ return javaLibPath;
+ }
+
+ public IVMInstall getVmInstall() throws CoreException {
+ return JavaRuntime.getVMInstall(project);
+ }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui;\r
+\r
+import java.net.URL;\r
+\r
+import org.eclipse.core.resources.IResource;\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.debug.core.DebugEvent;\r
+import org.eclipse.debug.core.DebugPlugin;\r
+import org.eclipse.debug.core.IDebugEventSetListener;\r
+import org.eclipse.debug.core.ILaunch;\r
+import org.eclipse.debug.core.model.IProcess;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.jface.resource.ImageRegistry;\r
+import org.eclipse.pde.core.plugin.TargetPlatform;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.ui.plugin.AbstractUIPlugin;\r
+import org.osgi.framework.BundleContext;\r
+\r
+/**\r
+ * The activator class controls the plug-in life cycle\r
+ */\r
+public class SlcIdeUiPlugin extends AbstractUIPlugin {\r
+\r
+ // The plug-in ID\r
+ public static final String ID = "org.argeo.slc.ide.ui";\r
+\r
+ // The shared instance\r
+ private static SlcIdeUiPlugin plugin;\r
+\r
+ /**\r
+ * The constructor\r
+ */\r
+ public SlcIdeUiPlugin() {\r
+ }\r
+\r
+ @Override\r
+ public void start(BundleContext context) throws Exception {\r
+ super.start(context);\r
+ plugin = this;\r
+ DebugPlugin.getDefault()\r
+ .addDebugEventListener(new DebugEventListener());\r
+\r
+ String location = TargetPlatform.getLocation();\r
+ System.out.println(location);\r
+ }\r
+\r
+ @Override\r
+ public void stop(BundleContext context) throws Exception {\r
+ plugin = null;\r
+ super.stop(context);\r
+ }\r
+\r
+ /**\r
+ * Returns the shared instance\r
+ * \r
+ * @return the shared instance\r
+ */\r
+ public static SlcIdeUiPlugin getDefault() {\r
+ return plugin;\r
+ }\r
+\r
+ public Image getImage(String relativeURL) {\r
+ ImageRegistry imageRegistry = getImageRegistry();\r
+ Image image = imageRegistry.get(relativeURL);\r
+ if (image == null) {\r
+ URL imageURL = getBundle().getEntry(relativeURL);\r
+ ImageDescriptor descriptor = ImageDescriptor\r
+ .createFromURL(imageURL);\r
+ image = descriptor.createImage();\r
+ imageRegistry.put(relativeURL, image);\r
+ }\r
+ return image;\r
+ }\r
+\r
+ protected static class DebugEventListener implements IDebugEventSetListener {\r
+ public void handleDebugEvents(DebugEvent[] events) {\r
+ if (events == null)\r
+ return;\r
+\r
+ for (int i = 0; i < events.length; i++) {\r
+ DebugEvent event = events[i];\r
+ if (event == null)\r
+ continue;\r
+ Object source = event.getSource();\r
+ if (source instanceof IProcess\r
+ && event.getKind() == DebugEvent.TERMINATE) {\r
+ IProcess process = (IProcess) source;\r
+// if (process == null)\r
+// continue;\r
+ ILaunch launch = process.getLaunch();\r
+ if (launch != null)\r
+ refreshOsgiBootLaunch(launch);\r
+ }\r
+ }\r
+ }\r
+\r
+ protected void refreshOsgiBootLaunch(ILaunch launch) {\r
+ try {\r
+ if (launch == null)\r
+ return;\r
+ IResource[] resources = launch.getLaunchConfiguration()\r
+ .getMappedResources();\r
+ if (resources == null)\r
+ return;\r
+ if (resources.length > 0) {\r
+ IResource propertiesFile = resources[0];\r
+ if (propertiesFile.getParent() == null)\r
+ return;\r
+ propertiesFile.getParent().refreshLocal(\r
+ IResource.DEPTH_INFINITE, null);\r
+ // System.out.println("Refreshed "\r
+ // + propertiesFile.getParent());\r
+ }\r
+ } catch (CoreException e) {\r
+ e.printStackTrace();\r
+ }\r
+\r
+ }\r
+\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui;\r
+\r
+import org.eclipse.jface.preference.FieldEditorPreferencePage;\r
+import org.eclipse.ui.IWorkbench;\r
+import org.eclipse.ui.IWorkbenchPreferencePage;\r
+\r
+public class SlcMainPreferencePage extends FieldEditorPreferencePage implements\r
+ IWorkbenchPreferencePage {\r
+ public SlcMainPreferencePage() {\r
+// IPreferenceStore store = SlcIdePlugin.getDefault().getPreferenceStore();\r
+// setPreferenceStore(store);\r
+ setDescription("Argeo SLC Preferences");\r
+ }\r
+\r
+ @Override\r
+ protected void createFieldEditors() {\r
+// addField(new DirectoryFieldEditor(PREF_SLC_RUNTIME_LOCATION,\r
+// "SLC Runtime", getFieldEditorParent()));\r
+// addField(new DirectoryFieldEditor(PREF_EMBEDDED_JAVA_LIBRARY_PATH,\r
+// "Embedded Java Library Path", getFieldEditorParent()));\r
+ }\r
+\r
+ public void init(IWorkbench workbench) {\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui;\r
+\r
+import org.eclipse.ui.IFolderLayout;\r
+import org.eclipse.ui.IPageLayout;\r
+import org.eclipse.ui.IPerspectiveFactory;\r
+\r
+public class SlcPerspectiveFactory implements IPerspectiveFactory {\r
+\r
+ public void createInitialLayout(IPageLayout layout) {\r
+ // Get the editor area.\r
+ String editorArea = layout.getEditorArea();\r
+\r
+ IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.LEFT, 0.25f,\r
+ editorArea);\r
+// topLeft.addView(JavaUI.ID_PACKAGES);\r
+\r
+ IFolderLayout bottom = layout.createFolder("bottom", IPageLayout.BOTTOM, 0.66f,\r
+ editorArea);\r
+// bottom.addView(IConsoleConstants.ID_CONSOLE_VIEW);\r
+ bottom.addView(IPageLayout.ID_TASK_LIST);\r
+ \r
+ layout.addActionSet("org.eclipse.debug.ui.launchActionSet");\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.jdt.launching.IVMInstall;\r
+\r
+public interface SlcSystem {\r
+ public String[] getClasspath() throws CoreException;\r
+ public String getJavaLibraryPath();\r
+ public IVMInstall getVmInstall() throws CoreException;\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.pde.launching.EclipseApplicationLaunchConfiguration;
+
+/** OSGiBoot launch configuration. */
+public class EclipseBootLaunchConfiguration extends
+ EclipseApplicationLaunchConfiguration {
+ public final static String ID = SlcIdeUiPlugin.ID + ".EclipseBootLauncher";
+
+ @Override
+ public void launch(ILaunchConfiguration configuration, String mode,
+ ILaunch launch, IProgressMonitor monitor) throws CoreException {
+ super.launch(configuration, mode, launch, monitor);
+ // Refresh resources before launching
+ final IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
+ propertiesFile.getParent().refreshLocal(IResource.DEPTH_INFINITE,
+ monitor);
+ }
+
+ @Override
+ protected void preLaunchCheck(ILaunchConfiguration configuration,
+ ILaunch launch, IProgressMonitor monitor) throws CoreException {
+ ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
+ OsgiLaunchHelper.updateLaunchConfiguration(wc, true);
+ wc.doSave();
+
+ super.preLaunchCheck(configuration, launch, monitor);
+
+ // Note that if a Java project contains a build.properties it has to
+ // declare the sources otherwise it will be skipped in the generation of
+ // the dev.properties file!
+ }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.pde.ui.launcher.EclipseLaunchShortcut;
+
+/**
+ * Launch shortcut simplifying the launch of an Eclipse application (typically
+ * an RCP).
+ */
+public class EclipseBootLaunchShortcut extends EclipseLaunchShortcut implements
+ OsgiLauncherConstants {
+ private StringBuffer name = null;
+ private IFile propertiesFile = null;
+
+ @Override
+ protected String getLaunchConfigurationTypeName() {
+ return EclipseBootLaunchConfiguration.ID;
+ }
+
+ @Override
+ public void launch(ISelection selection, String mode) {
+ // we assume that only one file is selected
+ IStructuredSelection sSelection = (IStructuredSelection) selection;
+ Iterator<?> it = sSelection.iterator();
+ propertiesFile = (IFile) it.next();
+
+ name = new StringBuffer(OsgiLaunchHelper.extractName(propertiesFile));
+
+ super.launch(selection, mode);
+ }
+
+ @Override
+ protected void initializeConfiguration(ILaunchConfigurationWorkingCopy wc) {
+ IResource[] resources = { propertiesFile };
+ wc.setMappedResources(resources);
+ super.initializeConfiguration(wc);
+
+ OsgiLaunchHelper.setDefaults(wc, true);
+ wc.setAttribute(
+ IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+ OsgiLaunchHelper.findWorkingDirectory(propertiesFile));
+
+ OsgiLaunchHelper.updateLaunchConfiguration(wc, true);
+ }
+
+ protected String getName(ILaunchConfigurationType type) {
+ if (name != null && !name.toString().trim().equals(""))
+ return DebugPlugin.getDefault().getLaunchManager()
+ .generateLaunchConfigurationName(name.toString());
+ else
+ return DebugPlugin.getDefault().getLaunchManager()
+ .generateLaunchConfigurationName("SLC");
+ }
+
+ @Override
+ protected boolean isGoodMatch(ILaunchConfiguration configuration) {
+ if (name != null) {
+ return name.toString().equals(configuration.getName());
+ }
+ return super.isGoodMatch(configuration);
+ }
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.EnvironmentTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.debug.ui.ILaunchConfigurationTab;
+import org.eclipse.pde.ui.launcher.EclipseLauncherTabGroup;
+import org.eclipse.pde.ui.launcher.MainTab;
+import org.eclipse.pde.ui.launcher.OSGiSettingsTab;
+import org.eclipse.pde.ui.launcher.PluginsTab;
+import org.eclipse.pde.ui.launcher.TracingTab;
+
+/** Definition of the set of tabs used in Eclipse Boot launch configuration UI. */
+public class EclipseBootLauncherTabGroup extends EclipseLauncherTabGroup {
+
+ @Override
+ public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
+ ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] {
+ new OsgiBootMainTab(true),
+ new MainTab(),
+ new PluginsTab(),
+ // new PluginsTab() {
+ // private boolean activating = false;
+ //
+ // @Override
+ // public void performApply(
+ // ILaunchConfigurationWorkingCopy config) {
+ // super.performApply(config);
+ // if (activating) {
+ // try {
+ // config.doSave();
+ // } catch (CoreException e) {
+ // e.printStackTrace();
+ // }
+ // activating = false;
+ // }
+ // }
+ //
+ // @Override
+ // public void activated(
+ // ILaunchConfigurationWorkingCopy workingCopy) {
+ // activating = true;
+ // }
+ // },
+ new OSGiSettingsTab(), new EnvironmentTab(), new TracingTab(),
+ new CommonTab() };
+ setTabs(tabs);
+ }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.pde.launching.EquinoxLaunchConfiguration;
+
+/** OSGiBoot launch configuration. */
+public class OsgiBootEquinoxLaunchConfiguration extends
+ EquinoxLaunchConfiguration {
+ public final static String ID = SlcIdeUiPlugin.ID
+ + ".OsgiBootEquinoxLauncher";
+
+ @Override
+ public void launch(ILaunchConfiguration configuration, String mode,
+ ILaunch launch, IProgressMonitor monitor) throws CoreException {
+ super.launch(configuration, mode, launch, monitor);
+
+// System.out.println("targetBundles="
+// + configuration.getAttribute(
+// IPDELauncherConstants.TARGET_BUNDLES, ""));
+// System.out.println("workspaceBundles="
+// + configuration.getAttribute(
+// IPDELauncherConstants.WORKSPACE_BUNDLES, ""));
+
+ // Refresh resources before launching
+ final IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
+ propertiesFile.getParent().refreshLocal(IResource.DEPTH_INFINITE,
+ monitor);
+ }
+
+ @Override
+ protected void preLaunchCheck(ILaunchConfiguration configuration,
+ ILaunch launch, IProgressMonitor monitor) throws CoreException {
+ // System.out.println("Launching... " + launch);
+ ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
+ OsgiLaunchHelper.updateLaunchConfiguration(wc, false);
+ wc.doSave();
+ super.preLaunchCheck(configuration, launch, monitor);
+
+ // Note that if a Java project contains a build.properties it has to
+ // declare the sources otherwise it will be skipped in the generation of
+ // the dev.properties file!
+
+ // for(Object bundleId:fAllBundles.keySet()){
+ // System.out.println(bundleId+"="+fAllBundles.get(bundleId));
+ // }
+ }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.pde.ui.launcher.OSGiLaunchShortcut;
+
+/** Launch shortcut simplifying the launch of a pure OSGi runtime */
+public class OsgiBootLaunchShortcut extends OSGiLaunchShortcut implements
+ OsgiLauncherConstants {
+ private StringBuffer name = null;
+ private IFile propertiesFile = null;
+
+ @Override
+ protected String getLaunchConfigurationTypeName() {
+ return OsgiBootEquinoxLaunchConfiguration.ID;
+ }
+
+ @Override
+ public void launch(ISelection selection, String mode) {
+ // we assume that only one file is selected
+ IStructuredSelection sSelection = (IStructuredSelection) selection;
+ Iterator<?> it = sSelection.iterator();
+ propertiesFile = (IFile) it.next();
+
+ name = new StringBuffer(OsgiLaunchHelper.extractName(propertiesFile));
+
+ super.launch(selection, mode);
+ }
+
+ @Override
+ protected void initializeConfiguration(ILaunchConfigurationWorkingCopy wc) {
+ IResource[] resources = { propertiesFile };
+ wc.setMappedResources(resources);
+ super.initializeConfiguration(wc);
+
+ OsgiLaunchHelper.setDefaults(wc, true);
+
+ wc.setAttribute(
+ IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+ OsgiLaunchHelper.findWorkingDirectory(propertiesFile));
+
+ OsgiLaunchHelper.updateLaunchConfiguration(wc, false);
+ }
+
+ protected String getName(ILaunchConfigurationType type) {
+ if (name != null && !name.toString().trim().equals(""))
+ return DebugPlugin.getDefault().getLaunchManager()
+ .generateLaunchConfigurationName(name.toString());
+ else
+ return DebugPlugin.getDefault().getLaunchManager()
+ .generateLaunchConfigurationName("SLC");
+ }
+
+ @Override
+ protected boolean isGoodMatch(ILaunchConfiguration configuration) {
+ if (name != null) {
+ return name.toString().equals(configuration.getName());
+ }
+ return super.isGoodMatch(configuration);
+ }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.EnvironmentTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.debug.ui.ILaunchConfigurationTab;
+import org.eclipse.pde.ui.launcher.BundlesTab;
+import org.eclipse.pde.ui.launcher.OSGiLauncherTabGroup;
+import org.eclipse.pde.ui.launcher.OSGiSettingsTab;
+import org.eclipse.pde.ui.launcher.TracingTab;
+
+/** Definition of the set of tabs used in OSGi Boot launch configuration UI. */
+public class OsgiBootLauncherTabGroup extends OSGiLauncherTabGroup {
+
+ @Override
+ public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
+ ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] {
+ new OsgiBootMainTab(false),
+ new BundlesTab() {
+// private boolean activating = false;
+//
+// @Override
+// public void performApply(
+// ILaunchConfigurationWorkingCopy config) {
+// super.performApply(config);
+// if (activating) {
+// try {
+// config.doSave();
+// } catch (CoreException e) {
+// e.printStackTrace();
+// }
+// activating = false;
+// }
+// }
+//
+// @Override
+// public void activated(
+// ILaunchConfigurationWorkingCopy workingCopy) {
+// activating = true;
+// }
+ }, new OSGiSettingsTab(), new EnvironmentTab(),
+ new TracingTab(), new CommonTab() };
+ setTabs(tabs);
+ }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
+import org.eclipse.jface.dialogs.Dialog;
+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.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.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/** Main tab of OSGiBoot launch configuration UI. */
+public class OsgiBootMainTab extends AbstractLaunchConfigurationTab implements
+ OsgiLauncherConstants {
+ private Listener listener = new Listener();
+
+ private Button syncBundles;
+ private Button clearDataDirectory;
+
+ private Button addJvmPaths;
+ private Text additionalVmArgs;
+
+ private Text additionalProgramArgs;
+
+ // private final Boolean isEclipse;
+
+ public OsgiBootMainTab(Boolean isEclipse) {
+ super();
+ // this.isEclipse = isEclipse;
+ }
+
+ public void createControl(Composite parent) {
+ Composite container = new Composite(parent, SWT.NONE);
+ container.setLayout(new GridLayout());
+ container.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ createAdditionalProgramArgs(container);
+ createAdditionalVmArgumentBlock(container);
+ createAdvanced(container);
+ Dialog.applyDialogFont(container);
+ setControl(container);
+ }
+
+ /** Init UI for programs arguments */
+ protected void createAdditionalProgramArgs(Composite parent) {
+ Group container = new Group(parent, SWT.NONE);
+ container.setText("Additional Program Arguments");
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ container.setLayout(layout);
+ container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ additionalProgramArgs = new Text(container, SWT.MULTI | SWT.WRAP
+ | SWT.BORDER | SWT.V_SCROLL);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 60;
+ gd.widthHint = 100;
+ gd.horizontalSpan = 2;
+ additionalProgramArgs.setLayoutData(gd);
+ additionalProgramArgs.addModifyListener(listener);
+ }
+
+ /** Init UI for VM arguments */
+ protected void createAdditionalVmArgumentBlock(Composite parent) {
+ Group container = new Group(parent, SWT.NONE);
+ container.setText("Additional VM Arguments");
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ container.setLayout(layout);
+ container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ additionalVmArgs = new Text(container, SWT.MULTI | SWT.WRAP
+ | SWT.BORDER | SWT.V_SCROLL);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 60;
+ gd.widthHint = 100;
+ gd.horizontalSpan = 2;
+ additionalVmArgs.setLayoutData(gd);
+ additionalVmArgs.addModifyListener(listener);
+
+ }
+
+ /** Init UI for Advanced section */
+ protected void createAdvanced(Composite parent) {
+ Group container = new Group(parent, SWT.NONE);
+ container.setText("Advanced");
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ container.setLayout(layout);
+ container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ syncBundles = new Button(container, SWT.CHECK);
+ syncBundles.addSelectionListener(listener);
+ new Label(container, SWT.NONE)
+ .setText("Keep bundles in line with target platform and workspace (recommended)");
+ clearDataDirectory = new Button(container, SWT.CHECK);
+ clearDataDirectory.addSelectionListener(listener);
+ new Label(container, SWT.NONE)
+ .setText("Clear data directory before launch");
+
+ addJvmPaths = new Button(container, SWT.CHECK);
+ addJvmPaths.addSelectionListener(listener);
+ new Label(container, SWT.NONE)
+ .setText("Add workspace JVM paths as non-standard system properties");
+
+ }
+
+ public String getName() {
+ return "OSGi Boot";
+ }
+
+ @Override
+ public Image getImage() {
+ return SlcIdeUiPlugin.getDefault().getImage("icons/slc-launch.gif");
+ }
+
+ public void initializeFrom(ILaunchConfiguration configuration) {
+ // System.out.println("initializeFrom");
+ try {
+ syncBundles.setSelection(configuration.getAttribute(
+ ATTR_SYNC_BUNDLES, true));
+ clearDataDirectory.setSelection(configuration.getAttribute(
+ ATTR_CLEAR_DATA_DIRECTORY, false));
+
+ additionalProgramArgs.setText(configuration.getAttribute(
+ ATTR_ADDITIONAL_PROGRAM_ARGS, ""));
+ addJvmPaths.setSelection(configuration.getAttribute(
+ ATTR_ADD_JVM_PATHS, false));
+ additionalVmArgs.setText(configuration.getAttribute(
+ ATTR_ADDITIONAL_VM_ARGS, ""));
+ // readProperties(configuration);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void performApply(ILaunchConfigurationWorkingCopy configuration) {
+ // System.out.println("performApply");
+ configuration.setAttribute(ATTR_SYNC_BUNDLES,
+ syncBundles.getSelection());
+ configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY,
+ clearDataDirectory.getSelection());
+
+ configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS,
+ additionalProgramArgs.getText());
+ configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS,
+ additionalVmArgs.getText());
+ configuration.setAttribute(ATTR_ADD_JVM_PATHS,
+ addJvmPaths.getSelection());
+ // writeProperties(configuration);
+
+ // OsgiLaunchHelper.updateLaunchConfiguration(configuration, isEclipse);
+ }
+
+ public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
+ // System.out.println("setDefaults");
+ configuration.setAttribute(ATTR_SYNC_BUNDLES, true);
+ configuration.setAttribute(ATTR_CLEAR_DATA_DIRECTORY, false);
+ configuration.setAttribute(ATTR_ADD_JVM_PATHS, false);
+ configuration.setAttribute(ATTR_ADDITIONAL_VM_ARGS, "-Xmx128m");
+ configuration.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS, "-console");
+ }
+
+ @Override
+ public void activated(ILaunchConfigurationWorkingCopy workingCopy) {
+ initializeFrom(workingCopy);
+ try {
+ workingCopy.doSave();
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void deactivated(ILaunchConfigurationWorkingCopy workingCopy) {
+ // do nothing
+ }
+
+ class Listener extends SelectionAdapter implements ModifyListener {
+ public void widgetSelected(SelectionEvent e) {
+ // Object source = e.getSource();
+ // setDirty(true);
+ updateLaunchConfigurationDialog();
+ }
+
+ public void modifyText(ModifyEvent e) {
+ // System.out.println("modifyText : " + e);
+ // setDirty(true);
+ updateLaunchConfigurationDialog();
+ }
+ }
+
+ // private void readProperties(ILaunchConfiguration configuration) {
+ // BufferedReader reader = null;
+ // try {
+ // IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
+ // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
+ // reader = new BufferedReader(new InputStreamReader(propertiesFile
+ // .getContents()));
+ // String line = null;
+ // StringBuffer buf = new StringBuffer("");
+ // while ((line = reader.readLine()) != null) {
+ // buf.append(line);
+ // buf.append("\n");
+ // }
+ // propertiesText.setText(buf.toString());
+ // } catch (CoreException e) {
+ // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
+ // "Error", "Cannot read properties", e.getStatus());
+ // return;
+ // } catch (Exception e) {
+ // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
+ // "Error", "Cannot read properties",
+ // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
+ // e.getMessage(), e));
+ // return;
+ // } finally {
+ // if (reader != null)
+ // try {
+ // reader.close();
+ // } catch (IOException e) {
+ // // silent
+ // }
+ // }
+ //
+ // }
+ //
+ // private void writeProperties(ILaunchConfiguration configuration) {
+ // InputStream in = null;
+ // IFile propertiesFile = null;
+ // try {
+ // propertiesFile = (IFile) configuration.getMappedResources()[0];
+ // in = new ByteArrayInputStream(propertiesText.getText().getBytes());
+ // propertiesFile.setContents(in, true, true, null);
+ // propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
+ // } catch (CoreException e) {
+ // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
+ // "Error", "Cannot write properties", e.getStatus());
+ // return;
+ // } catch (Exception e) {
+ // ErrorDialog.openError(Display.getCurrent().getActiveShell(),
+ // "Error", "Cannot write properties",
+ // new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
+ // e.getMessage(), e));
+ // return;
+ // } finally {
+ // if (in != null)
+ // try {
+ // in.close();
+ // } catch (IOException e) {
+ // // silent
+ // }
+ // }
+ //
+ // }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.variables.IStringVariableManager;
+import org.eclipse.core.variables.VariablesPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMInstall2;
+import org.eclipse.jdt.launching.IVMInstallType;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osgi.service.resolver.BundleDescription;
+import org.eclipse.pde.core.plugin.IPluginModelBase;
+import org.eclipse.pde.core.plugin.PluginRegistry;
+import org.eclipse.pde.launching.IPDELauncherConstants;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Most of the actual logic is concentrated in this class which manipulates
+ * {@link ILaunchConfigurationWorkingCopy}. Static method are used since the
+ * shortcut and launch configuration classes are already extending PDE classes.
+ */
+@SuppressWarnings("restriction")
+public class OsgiLaunchHelper implements OsgiLauncherConstants {
+ private static Boolean debug = true;
+
+ private final static String DEFAULT_DATA_DIR = "data";
+ private final static String DEFAULT_EXEC_DIR = "exec";
+ private final static String DEFAULT_VMARGS = "-Xmx256m";
+ private final static String DEFAULT_PROGRAM_ARGS = "-console";
+
+ /** Sets default values on this configuration. */
+ public static void setDefaults(ILaunchConfigurationWorkingCopy wc,
+ Boolean isEclipse) {
+ try {
+ if (isEclipse) {
+ wc.setAttribute(IPDELauncherConstants.USE_DEFAULT, false);
+ wc.setAttribute(IPDELauncherConstants.USE_PRODUCT, false);
+ }
+
+ wc.setAttribute(ATTR_ADD_JVM_PATHS, false);
+ wc.setAttribute(ATTR_ADDITIONAL_VM_ARGS, DEFAULT_VMARGS);
+ wc.setAttribute(ATTR_ADDITIONAL_PROGRAM_ARGS, DEFAULT_PROGRAM_ARGS);
+
+ // Defaults
+ String originalVmArgs = wc.getAttribute(
+ IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, "");
+ wc.setAttribute(ATTR_DEFAULT_VM_ARGS, originalVmArgs);
+
+ // clear config area by default
+ wc.setAttribute(IPDELauncherConstants.CONFIG_CLEAR_AREA, true);
+ } catch (CoreException e) {
+ Shell shell = Display.getCurrent().getActiveShell();
+ ErrorDialog.openError(shell, "Error",
+ "Cannot execute initalize configuration", e.getStatus());
+ }
+ }
+
+ /** Find the working directory based on this properties file. */
+ public static String findWorkingDirectory(IFile propertiesFile) {
+ try {
+ IProject project = propertiesFile.getProject();
+ IPath parent = propertiesFile.getProjectRelativePath()
+ .removeLastSegments(1);
+ IFolder execFolder = project.getFolder(parent
+ .append(DEFAULT_EXEC_DIR));
+ if (!execFolder.exists())
+ execFolder.create(true, true, null);
+ IFolder launchFolder = project.getFolder(execFolder
+ .getProjectRelativePath().append(
+ extractName(propertiesFile)));
+ if (!launchFolder.exists())
+ launchFolder.create(true, true, null);
+ return "${workspace_loc:"
+ + launchFolder.getFullPath().toString().substring(1) + "}";
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("Cannot create working directory", e);
+ }
+ }
+
+ /** Extract the launch configuration name from the properties file. */
+ public static String extractName(IFile propertiesFile) {
+ IPath path = propertiesFile.getFullPath();
+ IPath pathNoExt = path.removeFileExtension();
+ return pathNoExt.segment(pathNoExt.segmentCount() - 1);
+
+ }
+
+ /** Expects properties file to be set as mapped resources */
+ @SuppressWarnings("unchecked")
+ public static void updateLaunchConfiguration(
+ ILaunchConfigurationWorkingCopy wc, Boolean isEclipse) {
+ try {
+ if (debug)
+ debug("##\n## Launch " + wc.getName() + " - " + new Date()
+ + "\n##");
+
+ // Finds the properties file and load it
+ IFile propertiesFile = (IFile) wc.getMappedResources()[0];
+ propertiesFile.refreshLocal(IResource.DEPTH_ONE, null);
+ Properties properties = readProperties(propertiesFile);
+
+ // Extract information from the properties file
+ Map<String, Integer> bundlesToStart = new TreeMap<String, Integer>();
+ Map<String, String> systemPropertiesToAppend = new HashMap<String, String>();
+ String applicationId = interpretProperties(properties,
+ bundlesToStart, systemPropertiesToAppend);
+
+ if (applicationId != null)
+ wc.setAttribute(IPDELauncherConstants.APPLICATION,
+ applicationId);
+ else {
+ if (isEclipse)
+ throw new Exception("No application defined,"
+ + " please set the 'eclipse.application' property"
+ + " in the properties file");
+ }
+
+ // Define directories
+ File workingDir = getWorkingDirectory(wc);
+ File dataDir = new File(workingDir, DEFAULT_DATA_DIR);
+
+ // Update the launch configuration accordingly
+ updateLaunchConfiguration(wc, bundlesToStart,
+ systemPropertiesToAppend, dataDir.getAbsolutePath(),
+ isEclipse);
+
+ if (debug) {
+ Map<String, ?> attrs = new TreeMap<String, Object>(
+ wc.getAttributes());
+ for (String key : attrs.keySet())
+ OsgiLaunchHelper.debug(key + "=" + attrs.get(key));
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ Shell shell = SlcIdeUiPlugin.getDefault().getWorkbench()
+ .getActiveWorkbenchWindow().getShell();
+ // Shell shell= Display.getCurrent().getActiveShell();
+ ErrorDialog.openError(shell, "Error",
+ "Cannot prepare launch configuration",
+ new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,
+ e.getMessage(), e));
+ return;
+ }
+ }
+
+ /**
+ * Actually modifies the launch configuration in order to reflect the
+ * current state read from the properties file and the launch configuration
+ * UI.
+ */
+ protected static void updateLaunchConfiguration(
+ ILaunchConfigurationWorkingCopy wc,
+ Map<String, Integer> bundlesToStart,
+ Map<String, String> systemPropertiesToAppend, String dataDir,
+ Boolean isEclipse) throws CoreException {
+ // Convert bundle lists
+ final String targetBundles;
+ final String wkSpaceBundles;
+ if (wc.getAttribute(ATTR_SYNC_BUNDLES, true)) {
+ StringBuffer tBuf = new StringBuffer();
+ for (IPluginModelBase model : PluginRegistry.getExternalModels()) {
+ tBuf.append(model.getBundleDescription().getSymbolicName());
+ tBuf.append(',');
+ }
+ targetBundles = tBuf.toString();
+ StringBuffer wBuf = new StringBuffer();
+ models: for (IPluginModelBase model : PluginRegistry
+ .getWorkspaceModels()) {
+ if (model.getBundleDescription() == null) {
+ System.err.println("No bundle description for " + model);
+ continue models;
+ }
+ wBuf.append(model.getBundleDescription().getSymbolicName());
+ wBuf.append(',');
+ }
+ wkSpaceBundles = wBuf.toString();
+ } else {
+ targetBundles = wc.getAttribute(targetBundlesAttr(isEclipse), "");
+ wkSpaceBundles = wc.getAttribute(workspaceBundlesAttr(isEclipse),
+ "");
+ }
+ wc.setAttribute(targetBundlesAttr(isEclipse),
+ convertBundleList(bundlesToStart, targetBundles));
+
+ wc.setAttribute(workspaceBundlesAttr(isEclipse),
+ convertBundleList(bundlesToStart, wkSpaceBundles));
+
+ // Update other default information
+ wc.setAttribute(IPDELauncherConstants.DEFAULT_AUTO_START, false);
+
+ wc.setAttribute(IPDELauncherConstants.USE_CUSTOM_FEATURES, false);
+ if (!isEclipse)
+ wc.setAttribute(IPDELauncherConstants.USE_DEFAULT, true);
+
+ // VM arguments (system properties)
+ String defaultVmArgs = wc.getAttribute(
+ OsgiLauncherConstants.ATTR_DEFAULT_VM_ARGS, "");
+ StringBuffer vmArgs = new StringBuffer(defaultVmArgs);
+
+ // Data dir system property
+ if (dataDir != null) {
+ addSysProperty(vmArgs, OsgiLauncherConstants.ARGEO_OSGI_DATA_DIR,
+ dataDir);
+ if (isEclipse) {
+ wc.setAttribute(IPDELauncherConstants.LOCATION, dataDir);
+ }
+ }
+
+ // Add locations of JVMs
+ if (wc.getAttribute(ATTR_ADD_JVM_PATHS, false))
+ addVms(vmArgs);
+
+ // Add other system properties
+ for (String key : systemPropertiesToAppend.keySet())
+ addSysProperty(vmArgs, key, systemPropertiesToAppend.get(key));
+
+ vmArgs.append(" ").append(wc.getAttribute(ATTR_ADDITIONAL_VM_ARGS, ""));
+
+ wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
+ vmArgs.toString());
+
+ // Program arguments
+ StringBuffer progArgs = new StringBuffer("");
+ if (dataDir != null) {
+ progArgs.append("-data ");
+ progArgs.append(surroundSpaces(dataDir));
+
+ if (wc.getAttribute(ATTR_CLEAR_DATA_DIRECTORY, false)) {
+ File dataDirFile = new File(dataDir);
+ deleteDir(dataDirFile);
+ dataDirFile.mkdirs();
+ }
+ }
+ String additionalProgramArgs = wc.getAttribute(
+ OsgiLauncherConstants.ATTR_ADDITIONAL_PROGRAM_ARGS, "");
+ progArgs.append(' ').append(additionalProgramArgs);
+ wc.setAttribute(
+ IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+ progArgs.toString());
+ }
+
+ /** The launch configuration attribute to use for target bundles */
+ protected static String targetBundlesAttr(Boolean isEclipse) {
+ return isEclipse ? IPDELauncherConstants.SELECTED_TARGET_PLUGINS
+ : IPDELauncherConstants.TARGET_BUNDLES;
+ }
+
+ /** The launch configuration attribute to use for workspace bundles */
+ protected static String workspaceBundlesAttr(Boolean isEclipse) {
+ return isEclipse ? IPDELauncherConstants.SELECTED_WORKSPACE_PLUGINS
+ : IPDELauncherConstants.WORKSPACE_BUNDLES;
+ }
+
+ /**
+ * Interprets special properties and register the others as system
+ * properties to append.
+ *
+ * @return the application id defined by
+ * {@link OsgiLauncherConstants#ECLIPSE_APPLICATION}, or null if not
+ * found
+ */
+ protected static String interpretProperties(Properties properties,
+ Map<String, Integer> bundlesToStart,
+ Map<String, String> systemPropertiesToAppend) {
+ computeBundlesToStart(bundlesToStart, properties, null);
+
+ String applicationId = null;
+ propKeys: for (Object keyObj : properties.keySet()) {
+ String key = keyObj.toString();
+ if (OsgiLauncherConstants.ARGEO_OSGI_START.equals(key))
+ continue propKeys;
+ if (key.startsWith(OsgiLauncherConstants.ARGEO_OSGI_START + "."))
+ continue propKeys;
+ else if (OsgiLauncherConstants.ARGEO_OSGI_BUNDLES.equals(key))
+ continue propKeys;
+ else if (OsgiLauncherConstants.ARGEO_OSGI_LOCATIONS.equals(key))
+ continue propKeys;
+ else if (OsgiLauncherConstants.OSGI_BUNDLES.equals(key))
+ continue propKeys;
+ else if (OsgiLauncherConstants.ECLIPSE_APPLICATION.equals(key))
+ applicationId = properties.getProperty(key);
+ else
+ systemPropertiesToAppend.put(key, properties.getProperty(key));
+ }
+ return applicationId;
+ }
+
+ /** Adds a regular system property. */
+ protected static void addSysProperty(StringBuffer vmArgs, String key,
+ String value) {
+ surroundSpaces(value);
+ String str = "-D" + key + "=" + value;
+ vmArgs.append(' ').append(str);
+ }
+
+ /** Adds JVMS registered in the workspace as special system properties. */
+ protected static void addVms(StringBuffer vmArgs) {
+ addVmSysProperty(vmArgs, "default", JavaRuntime.getDefaultVMInstall());
+ IVMInstallType[] vmTypes = JavaRuntime.getVMInstallTypes();
+ for (IVMInstallType vmType : vmTypes) {
+ for (IVMInstall vmInstall : vmType.getVMInstalls()) {
+ // properties based on name
+ addVmSysProperty(vmArgs, vmInstall.getName(), vmInstall);
+ if (vmInstall instanceof IVMInstall2) {
+ // properties based on version
+ IVMInstall2 vmInstall2 = (IVMInstall2) vmInstall;
+ String version = vmInstall2.getJavaVersion();
+ addVmSysProperty(vmArgs, version, vmInstall);
+
+ List<String> tokens = new ArrayList<String>();
+ StringTokenizer st = new StringTokenizer(version, ".");
+ while (st.hasMoreTokens())
+ tokens.add(st.nextToken());
+ if (tokens.size() >= 2)
+ addVmSysProperty(vmArgs,
+ tokens.get(0) + "." + tokens.get(1), vmInstall);
+ }
+ }
+ }
+
+ }
+
+ /** Adds a special system property pointing to one of the registered JVMs. */
+ protected static void addVmSysProperty(StringBuffer vmArgs, String suffix,
+ IVMInstall vmInstall) {
+ addSysProperty(vmArgs, OsgiLauncherConstants.VMS_PROPERTY_PREFIX + "."
+ + suffix, vmInstall.getInstallLocation().getPath());
+ }
+
+ /** Surround the string with quotes if it contains spaces. */
+ protected static String surroundSpaces(String str) {
+ if (str.indexOf(' ') >= 0)
+ return '\"' + str + '\"';
+ else
+ return str;
+ }
+
+ /**
+ * Reformat the bundle list in order to reflect which bundles have to be
+ * started.
+ */
+ protected static String convertBundleList(
+ Map<String, Integer> bundlesToStart, String original) {
+ StringTokenizer stComa = new StringTokenizer(original, ",");
+ // sort by bundle symbolic name
+ Set<String> bundleIds = new TreeSet<String>();
+ bundles: while (stComa.hasMoreTokens()) {
+
+ String bundleId = stComa.nextToken();
+ if (bundleId.indexOf('*') >= 0)
+ throw new RuntimeException(
+ "Bundle id "
+ + bundleId
+ + " not properly formatted, clean your workspace projects");
+
+ int indexAt = bundleId.indexOf('@');
+ if (indexAt >= 0) {
+ bundleId = bundleId.substring(0, indexAt);
+ }
+
+ // We can now rely on bundleId value
+
+ if (bundleId.endsWith(".source")) {
+ // debug("Skip source bundle " + bundleId);
+ continue bundles;
+ } else if (bundleId
+ .equals("org.eclipse.equinox.simpleconfigurator")) {
+ // IPDEBuildConstants.BUNDLE_SIMPLE_CONFIGURATOR
+ // skip simple configurator in order to avoid side-effects
+ continue bundles;
+ }
+ bundleIds.add(bundleId);
+ }
+
+ StringBuffer bufBundles = new StringBuffer(1024);
+ boolean first = true;
+ for (String bundleId : bundleIds) {
+ if (first)
+ first = false;
+ else
+ bufBundles.append(',');
+ boolean modified = false;
+ if (bundlesToStart.containsKey(bundleId)) {
+ Integer startLevel = bundlesToStart.get(bundleId);
+ String startLevelStr = startLevel != null ? startLevel
+ .toString() : "default";
+ bufBundles.append(bundleId).append('@').append(startLevelStr)
+ .append(":true");
+ modified = true;
+ debug("Will start " + bundleId + " at level " + startLevelStr);
+ }
+
+ if (!modified)
+ bufBundles.append(bundleId);
+
+ }
+ String output = bufBundles.toString();
+ return output;
+ }
+
+ // UTILITIES
+ /** Recursively deletes a directory tree. */
+ private static void deleteDir(File dir) {
+ File[] files = dir.listFiles();
+ for (File file : files) {
+ if (file.isDirectory())
+ deleteDir(file);
+ else
+ file.delete();
+ }
+ dir.delete();
+ }
+
+ /** Loads a properties file. */
+ private static Properties readProperties(IFile file) throws CoreException {
+ Properties props = new Properties();
+
+ InputStream in = null;
+ try {
+ in = file.getContents();
+ props.load(in);
+ } catch (Exception e) {
+ throw new CoreException(new Status(IStatus.ERROR,
+ SlcIdeUiPlugin.ID, "Cannot read properties file", e));
+ } finally {
+ if (in != null)
+ try {
+ in.close();
+ } catch (IOException e) {
+ // silent
+ }
+ }
+ return props;
+ }
+
+ /** Determines the start levels for the bundles */
+ private static void computeBundlesToStart(
+ Map<String, Integer> bundlesToStart, Properties properties,
+ Integer defaultStartLevel) {
+
+ // default (and previously, only behaviour)
+ appendBundlesToStart(bundlesToStart, defaultStartLevel,
+ properties.getProperty(OsgiLauncherConstants.ARGEO_OSGI_START,
+ ""));
+
+ // list argeo.osgi.start.* system properties
+ Iterator<Object> keys = properties.keySet().iterator();
+ final String prefix = OsgiLauncherConstants.ARGEO_OSGI_START + ".";
+ while (keys.hasNext()) {
+ String key = (String) keys.next();
+ if (key.startsWith(prefix)) {
+ Integer startLevel;
+ String suffix = key.substring(prefix.length());
+ String[] tokens = suffix.split("\\.");
+ if (tokens.length > 0 && !tokens[0].trim().equals(""))
+ try {
+ // first token is start level
+ startLevel = new Integer(tokens[0]);
+ } catch (NumberFormatException e) {
+ startLevel = defaultStartLevel;
+ }
+ else
+ startLevel = defaultStartLevel;
+
+ // append bundle names
+ String bundleNames = properties.getProperty(key);
+ appendBundlesToStart(bundlesToStart, startLevel, bundleNames);
+ }
+ }
+ }
+
+ /** Append a comma-separated list of bundles to the start levels. */
+ private static void appendBundlesToStart(
+ Map<String, Integer> bundlesToStart, Integer startLevel, String str) {
+ if (str == null || str.trim().equals(""))
+ return;
+
+ String[] bundleNames = str.split(",");
+ for (int i = 0; i < bundleNames.length; i++) {
+ if (bundleNames[i] != null && !bundleNames[i].trim().equals(""))
+ bundlesToStart.put(bundleNames[i], startLevel);
+ }
+ }
+
+ /*
+ * HACKED UTILITIES
+ */
+ // Hacked from
+ // org.eclipse.pde.internal.ui.launcher.LaunchArgumentsHelper.getWorkingDirectory(ILaunchConfiguration)
+ private static File getWorkingDirectory(ILaunchConfiguration configuration)
+ throws CoreException {
+ String working;
+ try {
+ working = configuration.getAttribute(
+ IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
+ new File(".").getCanonicalPath()); //$NON-NLS-1$
+ } catch (IOException e) {
+ working = "${workspace_loc}/../"; //$NON-NLS-1$
+ }
+ File dir;
+ try {
+ dir = new File(getSubstitutedString(working));
+ } catch (Exception e) {
+ // the directory was most probably deleted
+ IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
+ working = findWorkingDirectory(propertiesFile);
+ dir = new File(getSubstitutedString(working));
+ }
+ if (!dir.exists())
+ dir.mkdirs();
+ return dir;
+ }
+
+ // Hacked from
+ // org.eclipse.pde.internal.ui.launcher.LaunchArgumentsHelper.getSubstitutedString(String)
+ private static String getSubstitutedString(String text)
+ throws CoreException {
+ if (text == null)
+ return ""; //$NON-NLS-1$
+ IStringVariableManager mgr = VariablesPlugin.getDefault()
+ .getStringVariableManager();
+ return mgr.performStringSubstitution(text);
+ }
+
+ /**
+ * Not used anymore, but kept because this routine may be useful in the
+ * future.
+ */
+ protected void addSelectedProjects(StringBuffer name, ISelection selection,
+ List<String> bundlesToStart) {
+ Assert.isNotNull(selection);
+
+ Map<String, IPluginModelBase> bundleProjects = new HashMap<String, IPluginModelBase>();
+ for (IPluginModelBase modelBase : PluginRegistry.getWorkspaceModels()) {
+ IProject bundleProject = modelBase.getUnderlyingResource()
+ .getProject();
+ bundleProjects.put(bundleProject.getName(), modelBase);
+ }
+
+ IStructuredSelection sSelection = (IStructuredSelection) selection;
+ for (Iterator<?> it = sSelection.iterator(); it.hasNext();) {
+ Object obj = it.next();
+ if (obj instanceof IProject) {
+ IProject project = (IProject) obj;
+ if (bundleProjects.containsKey(project.getName())) {
+ IPluginModelBase modelBase = bundleProjects.get(project
+ .getName());
+
+ BundleDescription bundleDescription = null;
+ if (modelBase.isFragmentModel()) {
+ BundleDescription[] hosts = modelBase
+ .getBundleDescription().getHost().getHosts();
+ for (BundleDescription bd : hosts) {
+ if (debug)
+ System.out.println("Host for "
+ + modelBase.getBundleDescription()
+ .getSymbolicName() + ": "
+ + bd.getSymbolicName());
+ bundleDescription = bd;
+ }
+ } else {
+ bundleDescription = modelBase.getBundleDescription();
+ }
+
+ if (bundleDescription != null) {
+ String symbolicName = bundleDescription
+ .getSymbolicName();
+ String bundleName = bundleDescription.getName();
+
+ bundlesToStart.add(symbolicName);
+
+ if (name.length() > 0)
+ name.append(" ");
+ if (bundleName != null)
+ name.append(bundleName);
+ else
+ name.append(symbolicName);
+ }
+ }
+ }
+ }
+ }
+
+ static void debug(Object obj) {
+ if (debug)
+ System.out.println(obj);
+ }
+
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.osgi;
+
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
+
+/** Constants used by OSGi launch. */
+public interface OsgiLauncherConstants {
+
+ public final static String OSGI_BUNDLES = "osgi.bundles";
+ public final static String ECLIPSE_APPLICATION = "eclipse.application";
+
+ public final static String ARGEO_OSGI_START = "argeo.osgi.start";
+ public final static String ARGEO_OSGI_BUNDLES = "argeo.osgi.bundles";
+ public final static String ARGEO_OSGI_LOCATIONS = "argeo.osgi.locations";
+ public final static String ARGEO_OSGI_DATA_DIR = "argeo.osgi.data.dir";
+ public final static String VMS_PROPERTY_PREFIX = "slc.launch.vm";
+
+ // Configuration
+ public final static String ATTR_SYNC_BUNDLES = SlcIdeUiPlugin.ID
+ + ".syncBundles";
+ public final static String ATTR_CLEAR_DATA_DIRECTORY = SlcIdeUiPlugin.ID
+ + ".clearDataDirectory";
+
+ public final static String ATTR_DEFAULT_VM_ARGS = SlcIdeUiPlugin.ID
+ + ".defaultVmArgs";
+ public final static String ATTR_ADDITIONAL_PROGRAM_ARGS = SlcIdeUiPlugin.ID
+ + ".additionalProgramArgs";
+ public final static String ATTR_ADDITIONAL_VM_ARGS = SlcIdeUiPlugin.ID
+ + ".additionalVmArgs";
+ public final static String ATTR_ADD_JVM_PATHS = SlcIdeUiPlugin.ID
+ + ".addJvmPaths";
+ public final static String ATTR_DATADIR = SlcIdeUiPlugin.ID + ".dataDir";
+}
--- /dev/null
+package org.argeo.slc.ide.ui.launch.preferences;\r
+\r
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;\r
+import org.eclipse.jface.preference.DirectoryFieldEditor;\r
+import org.eclipse.jface.preference.FieldEditorPreferencePage;\r
+import org.eclipse.ui.IWorkbench;\r
+import org.eclipse.ui.IWorkbenchPreferencePage;\r
+\r
+public class SlcLaunchPreferencePage extends FieldEditorPreferencePage implements\r
+ IWorkbenchPreferencePage {\r
+ public final static String PREF_SLC_RUNTIME_LOCATION = SlcIdeUiPlugin.ID\r
+ + ".slcRuntimeLocation";\r
+ public final static String PREF_EMBEDDED_JAVA_LIBRARY_PATH = SlcIdeUiPlugin.ID\r
+ + ".embeddedJavaLibraryPath";\r
+\r
+ public SlcLaunchPreferencePage() {\r
+// IPreferenceStore store = SlcUiLaunchPlugin.getDefault()\r
+// .getPreferenceStore();\r
+// setPreferenceStore(store);\r
+ setDescription("Argeo SLC Launch Preferences");\r
+ }\r
+\r
+ @Override\r
+ protected void createFieldEditors() {\r
+ addField(new DirectoryFieldEditor(PREF_SLC_RUNTIME_LOCATION,\r
+ "SLC Runtime", getFieldEditorParent()));\r
+ addField(new DirectoryFieldEditor(PREF_EMBEDDED_JAVA_LIBRARY_PATH,\r
+ "Embedded Java Library Path", getFieldEditorParent()));\r
+ }\r
+\r
+ public void init(IWorkbench workbench) {\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui.launch.script;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.debug.core.ILaunchConfiguration;\r
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;\r
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.ModifyEvent;\r
+import org.eclipse.swt.events.ModifyListener;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.events.SelectionListener;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Text;\r
+\r
+public class SlcScriptLaunchConfigurationTab extends\r
+ AbstractLaunchConfigurationTab {\r
+\r
+ private Text scriptTF;\r
+ private Text propertiesTF;\r
+ private Text runtimeTF;\r
+ private Text targetsTF;\r
+ private Button pre093B;\r
+\r
+ public void createControl(Composite parent) {\r
+ Composite body = new Composite(parent, SWT.NONE);\r
+ setControl(body);\r
+ body.setLayout(new GridLayout(1, false));\r
+ body.setFont(parent.getFont());\r
+\r
+ createLabel(body, "Script location");\r
+ scriptTF = createSingleText(body);\r
+ createWorkspaceButton(body);\r
+\r
+ createLabel(body, "Runtime");\r
+ runtimeTF = createSingleText(body);\r
+\r
+ createLabel(body, "Targets");\r
+ targetsTF = createSingleText(body);\r
+\r
+ createLabel(body, "Properties");\r
+ propertiesTF = createMultipleText(body, 10);\r
+\r
+ pre093B = createCheckBox(body, "Pre SLC v0.9.3");\r
+ }\r
+\r
+ public String getName() {\r
+ return "SLC";\r
+ }\r
+\r
+ public void initializeFrom(ILaunchConfiguration configuration) {\r
+ try {\r
+ scriptTF.setText(configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_SCRIPT, ""));\r
+\r
+ boolean pre093 = configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_PRE093, false);\r
+\r
+ propertiesTF.setText(configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_PROPERTIES, ""));\r
+ runtimeTF.setText(configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_RUNTIME, ""));\r
+ targetsTF.setText(configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_TARGETS, ""));\r
+ pre093B.setSelection(pre093);\r
+ } catch (CoreException e) {\r
+ throw new RuntimeException("Cannot initialize tab", e);\r
+ }\r
+\r
+ }\r
+\r
+ public void performApply(ILaunchConfigurationWorkingCopy configuration) {\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_SCRIPT, scriptTF\r
+ .getText());\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_PROPERTIES, propertiesTF\r
+ .getText());\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_RUNTIME, runtimeTF\r
+ .getText());\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_TARGETS, targetsTF\r
+ .getText());\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_PRE093, pre093B\r
+ .getSelection());\r
+ }\r
+\r
+ public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_SCRIPT, "");\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_PROPERTIES, "");\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_RUNTIME, "");\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_TARGETS, "");\r
+ configuration.setAttribute(SlcScriptUtils.ATTR_PRE093, false);\r
+ }\r
+\r
+ // UI Utils\r
+ protected Label createLabel(Composite parent, String text) {\r
+ Label t = new Label(parent, SWT.NONE | SWT.WRAP);\r
+ t.setText(text);\r
+ t.setFont(parent.getFont());\r
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);\r
+ gd.horizontalSpan = 1;\r
+ t.setLayoutData(gd);\r
+ return t;\r
+ }\r
+\r
+ protected Text createSingleText(Composite parent) {\r
+ Text t = new Text(parent, SWT.SINGLE | SWT.BORDER);\r
+ t.setFont(parent.getFont());\r
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);\r
+ gd.horizontalSpan = 1;\r
+ t.setLayoutData(gd);\r
+ t.addModifyListener(modifyListener);\r
+ return t;\r
+ }\r
+\r
+ protected Text createMultipleText(Composite parent, int verticalSpan) {\r
+ Text t = new Text(parent, SWT.MULTI | SWT.BORDER);\r
+ t.setFont(parent.getFont());\r
+ GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true);\r
+ gd.horizontalSpan = 1;\r
+ gd.verticalSpan = verticalSpan;\r
+ t.setLayoutData(gd);\r
+ t.addModifyListener(modifyListener);\r
+ return t;\r
+ }\r
+\r
+ protected Button createCheckBox(Composite parent, String label) {\r
+ Button b = new Button(parent, SWT.CHECK);\r
+ b.setFont(parent.getFont());\r
+ b.setText(label);\r
+ b.addSelectionListener(selectionListener);\r
+ return b;\r
+\r
+ }\r
+\r
+ protected Button createWorkspaceButton(Composite parent) {\r
+ Button b = new Button(parent, SWT.PUSH);\r
+ b.setFont(parent.getFont());\r
+ b.setText("Workspace...");\r
+ b.addSelectionListener(new SelectionListener() {\r
+ public void widgetDefaultSelected(SelectionEvent e) {\r
+ }\r
+\r
+ public void widgetSelected(SelectionEvent e) {\r
+ handleWorkspaceLocationButtonSelected();\r
+ }\r
+ });\r
+ return b;\r
+ }\r
+\r
+ protected void handleWorkspaceLocationButtonSelected() {\r
+ // FIXME do not use resource framework\r
+// ResourceSelectionDialog dialog;\r
+// dialog = new ResourceSelectionDialog(getShell(), ResourcesPlugin\r
+// .getWorkspace().getRoot(), "Select a file");\r
+// if (dialog.open() == Window.OK) {\r
+// Object[] results = dialog.getResult();\r
+// if (results == null || results.length < 1) {\r
+// return;\r
+// }\r
+// IResource resource = (IResource) results[0];\r
+// scriptTF.setText(SlcScriptUtils\r
+// .convertToWorkspaceLocation(resource));\r
+// updateLaunchConfigurationDialog();\r
+// }\r
+ }\r
+\r
+ // LISTENERS\r
+ /**\r
+ * Modify listener that simply updates the owning launch configuration\r
+ * dialog.\r
+ */\r
+ private ModifyListener modifyListener = new ModifyListener() {\r
+ public void modifyText(ModifyEvent evt) {\r
+ updateLaunchConfigurationDialog();\r
+ }\r
+ };\r
+ private SelectionListener selectionListener = new SelectionListener() {\r
+ public void widgetDefaultSelected(SelectionEvent e) {\r
+ }\r
+\r
+ public void widgetSelected(SelectionEvent e) {\r
+ updateLaunchConfigurationDialog();\r
+ }\r
+ };\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui.launch.script;\r
+\r
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;\r
+import org.eclipse.debug.ui.CommonTab;\r
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;\r
+import org.eclipse.debug.ui.ILaunchConfigurationTab;\r
+\r
+public class SlcScriptLaunchConfigurationTabGroup extends\r
+ AbstractLaunchConfigurationTabGroup {\r
+\r
+ public void createTabs(ILaunchConfigurationDialog dialog, String mode) {\r
+ ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[] {\r
+ new SlcScriptLaunchConfigurationTab(), new CommonTab() };\r
+ setTabs(tabs);\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui.launch.script;\r
+\r
+import java.io.ByteArrayInputStream;\r
+import java.io.IOException;\r
+import java.util.List;\r
+import java.util.Properties;\r
+import java.util.Vector;\r
+\r
+import org.argeo.slc.ide.ui.DeployedSlcSystem;\r
+import org.argeo.slc.ide.ui.EmbeddedSlcSystem;\r
+import org.argeo.slc.ide.ui.SlcSystem;\r
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;\r
+import org.argeo.slc.ide.ui.launch.preferences.SlcLaunchPreferencePage;\r
+import org.eclipse.core.resources.IFile;\r
+import org.eclipse.core.resources.IProject;\r
+import org.eclipse.core.resources.ResourcesPlugin;\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.core.runtime.IPath;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.Path;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.core.variables.IStringVariableManager;\r
+import org.eclipse.core.variables.VariablesPlugin;\r
+import org.eclipse.debug.core.DebugPlugin;\r
+import org.eclipse.debug.core.ILaunch;\r
+import org.eclipse.debug.core.ILaunchConfiguration;\r
+import org.eclipse.debug.core.ILaunchManager;\r
+import org.eclipse.jdt.core.IJavaProject;\r
+import org.eclipse.jdt.core.IType;\r
+import org.eclipse.jdt.core.JavaCore;\r
+import org.eclipse.jdt.core.JavaModelException;\r
+import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;\r
+import org.eclipse.jdt.launching.IVMRunner;\r
+import org.eclipse.jdt.launching.VMRunnerConfiguration;\r
+import org.eclipse.jface.dialogs.ErrorDialog;\r
+import org.eclipse.swt.widgets.Shell;\r
+\r
+public class SlcScriptLaunchDelegate extends\r
+ AbstractJavaLaunchConfigurationDelegate {\r
+ public static final String ID = "org.argeo.slc.launch.slcScriptLaunchType";\r
+\r
+ public final static String ANT_MAIN = "org.apache.tools.ant.Main";\r
+ public final static String SLC_MAIN = "org.argeo.slc.cli.SlcMain";\r
+\r
+ @SuppressWarnings("deprecation")\r
+ public void launch(ILaunchConfiguration configuration, String mode,\r
+ ILaunch launch, IProgressMonitor monitor) throws CoreException {\r
+ if (!saveBeforeLaunch(configuration, mode, monitor))\r
+ return;\r
+\r
+ String scriptLocation = configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_SCRIPT, "");\r
+ if (scriptLocation.equals(""))\r
+ abort("Script has to be provided", null, 1);\r
+\r
+ IStringVariableManager manager = VariablesPlugin.getDefault()\r
+ .getStringVariableManager();\r
+ scriptLocation = manager.performStringSubstitution(scriptLocation);\r
+ IPath path = new Path(scriptLocation);\r
+ IFile[] files = ResourcesPlugin.getWorkspace().getRoot()\r
+ .findFilesForLocation(path);\r
+\r
+ if (files.length == 0)\r
+ abort("Coulkd not find related file", null, 1);\r
+\r
+ IFile file = (IFile) files[0];\r
+ DebugPlugin\r
+ .logMessage("Launching " + file.getLocation().toFile(), null);\r
+\r
+ boolean pre093 = configuration.getAttribute(SlcScriptUtils.ATTR_PRE093,\r
+ false);\r
+\r
+ // Retrieve SLC Runtime\r
+ SlcSystem slcSystem = findSlcSystem(file, pre093);\r
+ if (slcSystem == null)\r
+ return;\r
+\r
+ IVMRunner vmRunner = slcSystem.getVmInstall().getVMRunner(mode);\r
+ final VMRunnerConfiguration vmConfig;\r
+ if (pre093) {\r
+ vmConfig = createPre093Config(slcSystem, file, mode);\r
+ } else {\r
+ vmConfig = createConfig(slcSystem, file, mode, configuration);\r
+ }\r
+ vmRunner.run(vmConfig, launch, monitor);\r
+ }\r
+\r
+ protected SlcSystem findSlcSystem(IFile file, boolean pre093)\r
+ throws CoreException {\r
+ SlcSystem slcSystem = null;\r
+\r
+ IProject project = file.getProject();\r
+ if (project.getNature("org.eclipse.jdt.core.javanature") != null) {\r
+ IJavaProject javaProject = JavaCore.create(project);\r
+ if (checkProjectForEmbedded(javaProject, pre093)) {\r
+ slcSystem = new EmbeddedSlcSystem(javaProject);\r
+ }\r
+ }\r
+\r
+ if (slcSystem == null) {\r
+ String slcRuntimePath = SlcIdeUiPlugin.getDefault()\r
+ .getPreferenceStore().getString(\r
+ SlcLaunchPreferencePage.PREF_SLC_RUNTIME_LOCATION);\r
+ if (slcRuntimePath == null || slcRuntimePath.equals("")) {\r
+ showError("SLC Runtime path is not set. Set it in Windows > Preferences > SLC");\r
+ return null;\r
+ }\r
+\r
+ slcSystem = new DeployedSlcSystem(slcRuntimePath);\r
+ }\r
+\r
+ return slcSystem;\r
+ }\r
+\r
+ protected boolean checkProjectForEmbedded(IJavaProject project,\r
+ boolean pre093) {\r
+ try {\r
+ IType mainType = null;\r
+ if (pre093)\r
+ mainType = project.findType(ANT_MAIN);\r
+ else\r
+ mainType = project.findType(SLC_MAIN);\r
+\r
+ if (mainType == null)\r
+ return false;\r
+ else\r
+ return true;\r
+ } catch (JavaModelException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ }\r
+\r
+ // Regular SLC\r
+ protected VMRunnerConfiguration createConfig(SlcSystem deployedSlc,\r
+ IFile file, String mode, ILaunchConfiguration configuration)\r
+ throws CoreException {\r
+ VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(SLC_MAIN,\r
+ deployedSlc.getClasspath());\r
+ vmConfig.setVMArguments(getVmArguments(deployedSlc));\r
+ vmConfig.setWorkingDirectory(file.getLocation().toFile().getParent());\r
+ vmConfig.setProgramArguments(getProgramArguments(deployedSlc, file,\r
+ mode, configuration));\r
+ return vmConfig;\r
+ }\r
+\r
+ protected String[] getVmArguments(SlcSystem deployedSlc) {\r
+ List<String> list = new Vector<String>();\r
+ if (deployedSlc.getJavaLibraryPath() != null)\r
+ list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
+ return list.toArray(new String[list.size()]);\r
+ }\r
+\r
+ protected String[] getProgramArguments(SlcSystem deployedSlc, IFile file,\r
+ String mode, ILaunchConfiguration configuration)\r
+ throws CoreException {\r
+ List<String> list = new Vector<String>();\r
+\r
+ list.add("--mode");\r
+ list.add("single");\r
+\r
+ // Script\r
+ list.add("--script");\r
+ list.add(file.getLocation().toFile().getAbsolutePath());\r
+\r
+ // Runtime\r
+ String runtime = configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_RUNTIME, "");\r
+ if (!runtime.equals("")) {\r
+ list.add("--runtime");\r
+ list.add(runtime);\r
+ }\r
+\r
+ // Targets\r
+ String targets = configuration.getAttribute(\r
+ SlcScriptUtils.ATTR_TARGETS, "");\r
+ if (!targets.equals("")) {\r
+ list.add("--targets");\r
+ list.add(targets);\r
+ }\r
+\r
+ // Properties\r
+ Properties properties = new Properties();\r
+ String str = configuration.getAttribute(SlcScriptUtils.ATTR_PROPERTIES,\r
+ "");\r
+ ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes());\r
+ try {\r
+ properties.load(in);\r
+ } catch (IOException e) {\r
+ throw new RuntimeException("Cannot read properties", e);\r
+ } finally {\r
+ if (in != null)\r
+ try {\r
+ in.close();\r
+ } catch (IOException e) {\r
+ // silent\r
+ }\r
+ }\r
+\r
+ for (Object key : properties.keySet()) {\r
+ list.add("-p");\r
+ StringBuffer buf = new StringBuffer("");\r
+ buf.append(key).append('=').append(properties.get(key));\r
+ list.add(buf.toString());\r
+ }\r
+\r
+ // Debug mode\r
+ if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
+ list.add("--property");\r
+ list.add("log4j.logger.org.argeo.slc=DEBUG");\r
+ }\r
+ return list.toArray(new String[list.size()]);\r
+ }\r
+\r
+ // Pre SLC v0.9.3\r
+ protected VMRunnerConfiguration createPre093Config(SlcSystem deployedSlc,\r
+ IFile file, String mode) throws CoreException {\r
+ VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(ANT_MAIN,\r
+ deployedSlc.getClasspath());\r
+ vmConfig.setVMArguments(getPre093VmArguments(deployedSlc));\r
+ vmConfig.setWorkingDirectory(file.getLocation().toFile().getParent());\r
+ vmConfig.setProgramArguments(getPre093ProgramArguments(deployedSlc,\r
+ file, mode));\r
+ return vmConfig;\r
+ }\r
+\r
+ protected String[] getPre093VmArguments(SlcSystem deployedSlc) {\r
+ List<String> list = new Vector<String>();\r
+ // list.add("-Dant.home=" + deployedSlc.getAntHome());\r
+ if (deployedSlc.getJavaLibraryPath() != null)\r
+ list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
+ return list.toArray(new String[list.size()]);\r
+ }\r
+\r
+ protected String[] getPre093ProgramArguments(SlcSystem deployedSlc,\r
+ IFile file, String mode) {\r
+ List<String> list = new Vector<String>();\r
+ list.add("-f");\r
+ list.add(file.getLocation().toFile().getAbsolutePath());\r
+ if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
+ list.add("-d");\r
+ }\r
+ return list.toArray(new String[list.size()]);\r
+ }\r
+\r
+ // Utilities\r
+ private static void showError(String message) {\r
+ Shell shell = SlcIdeUiPlugin.getDefault().getWorkbench()\r
+ .getActiveWorkbenchWindow().getShell();\r
+\r
+ IStatus status = new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,\r
+ message);\r
+ ErrorDialog.openError(shell, "Error", "Cannot launch SLC script",\r
+ status);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui.launch.script;\r
+\r
+import org.argeo.slc.ide.ui.SlcIdeUiPlugin;\r
+import org.eclipse.core.resources.IFile;\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.core.runtime.IPath;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.debug.core.DebugPlugin;\r
+import org.eclipse.debug.core.ILaunchConfiguration;\r
+import org.eclipse.debug.core.ILaunchConfigurationType;\r
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;\r
+import org.eclipse.debug.core.ILaunchManager;\r
+import org.eclipse.debug.ui.DebugUITools;\r
+import org.eclipse.debug.ui.IDebugUIConstants;\r
+import org.eclipse.debug.ui.ILaunchShortcut;\r
+import org.eclipse.jface.dialogs.ErrorDialog;\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.jface.viewers.IStructuredSelection;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.eclipse.ui.IEditorPart;\r
+\r
+public class SlcScriptLaunchShortcut implements ILaunchShortcut {\r
+ private boolean showDialog = false;\r
+\r
+ public void launch(ISelection selection, String mode) {\r
+ try {\r
+ if (!(selection instanceof IStructuredSelection)) {\r
+ throw new RuntimeException("Unknown selection "\r
+ + selection.getClass());\r
+ }\r
+ IStructuredSelection sSelection = (IStructuredSelection) selection;\r
+ if (sSelection.size() != 1) {\r
+ throw new RuntimeException("Can only launch one SLC script.");\r
+ }\r
+ Object obj = sSelection.iterator().next();\r
+ if (!(obj instanceof IFile)) {\r
+ throw new RuntimeException("Can only launch files.");\r
+ }\r
+ IFile file = ((IFile) obj);\r
+\r
+ ILaunchManager manager = DebugPlugin.getDefault()\r
+ .getLaunchManager();\r
+ ILaunchConfigurationType type = manager\r
+ .getLaunchConfigurationType(SlcScriptLaunchDelegate.ID);\r
+\r
+ // Find or create config\r
+ String configLocation = SlcScriptUtils\r
+ .convertToWorkspaceLocation(file);\r
+ ILaunchConfiguration config = findLaunchConfiguration(\r
+ configLocation, manager.getLaunchConfigurations(type));\r
+ if (config == null) {\r
+ ILaunchConfigurationWorkingCopy wc = type.newInstance(null,\r
+ generateName(file));\r
+ wc.setAttribute(SlcScriptUtils.ATTR_SCRIPT, configLocation);\r
+ wc.setMappedResources(new IFile[] { file });\r
+ config = wc.doSave();\r
+ }\r
+\r
+ // Launch\r
+ launch(config, mode);\r
+ } catch (CoreException e) {\r
+ Shell shell = SlcIdeUiPlugin.getDefault().getWorkbench()\r
+ .getActiveWorkbenchWindow().getShell();\r
+ ErrorDialog.openError(shell, "Error",\r
+ "Cannot execute SLC launch shortcut", e.getStatus());\r
+ }\r
+\r
+ }\r
+\r
+ protected String generateName(IFile file) {\r
+ IPath relativePath = file.getProjectRelativePath();\r
+ String name = relativePath.toString();\r
+ int idx = name.lastIndexOf(".xml");\r
+ if (idx > 0)\r
+ name = name.substring(0, idx);\r
+\r
+ if (name.startsWith("src/main/slc/root/"))\r
+ name = name.substring("src/main/slc/root/".length());\r
+ else if (name.startsWith("src/main/slc/"))\r
+ name = name.substring("src/main/slc/".length());\r
+\r
+ name = name.replace('/', '.');// otherwise not properly saved\r
+ return name;\r
+ }\r
+\r
+ protected ILaunchConfiguration findLaunchConfiguration(\r
+ String configLocation, ILaunchConfiguration[] configs)\r
+ throws CoreException {\r
+ for (ILaunchConfiguration config : configs) {\r
+ String loc = config.getAttribute(SlcScriptUtils.ATTR_SCRIPT, "");\r
+ if (loc.equals(configLocation)) {\r
+ return config;\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ protected void launch(ILaunchConfiguration configuration, String mode)\r
+ throws CoreException {\r
+ if (showDialog) {\r
+ IStatus status = new Status(IStatus.INFO, SlcIdeUiPlugin.ID,\r
+ "Configure SLC Launch");\r
+ String groupId;\r
+ if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
+ groupId = IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP;\r
+ } else {\r
+ groupId = IDebugUIConstants.ID_RUN_LAUNCH_GROUP;\r
+ }\r
+ DebugUITools.openLaunchConfigurationDialog(SlcIdeUiPlugin\r
+ .getDefault().getWorkbench().getActiveWorkbenchWindow()\r
+ .getShell(), configuration, groupId, status);\r
+ } else {\r
+ DebugUITools.launch(configuration, mode);\r
+ }\r
+\r
+ }\r
+\r
+ public void launch(IEditorPart editor, String mode) {\r
+ // not (yet) implemented\r
+ }\r
+\r
+ public void setShowDialog(boolean showDialog) {\r
+ this.showDialog = showDialog;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui.launch.script;\r
+\r
+\r
+public class SlcScriptLaunchShortcutWithDialog extends SlcScriptLaunchShortcut {\r
+\r
+ public SlcScriptLaunchShortcutWithDialog() {\r
+ super();\r
+ setShowDialog(true);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ide.ui.launch.script;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.variables.VariablesPlugin;
+
+public class SlcScriptUtils {
+
+ public final static String ATTR_SCRIPT = "script";
+ public final static String ATTR_PROPERTIES = "properties";
+ public final static String ATTR_RUNTIME = "runtime";
+ public final static String ATTR_TARGETS = "targets";
+ public final static String ATTR_PRE093 = "pre093";
+
+ public static String convertToWorkspaceLocation(IResource resource) {
+ return VariablesPlugin.getDefault().getStringVariableManager()
+ .generateVariableExpression("workspace_loc",
+ resource.getFullPath().toString());
+ }
+
+ private SlcScriptUtils() {
+
+ }
+}
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>ide</artifactId>
+ <version>2.1.11-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>ide-plugins</artifactId>
+ <packaging>pom</packaging>
+ <name>IDE Plugins</name>
+ <modules>
+ <module>org.argeo.slc.ide.ui</module>
+ </modules>
+</project>
\ No newline at end of file
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>argeo-slc</artifactId>
+ <version>2.1.11-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>ide</artifactId>
+ <packaging>pom</packaging>
+ <name>IDE</name>
+ <modules>
+ <module>plugins</module>
+ </modules>
+</project>
\ No newline at end of file