Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 108283 Details for
Bug 240737
[product] be able to set start levels on a product
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
small fixes
bug240737.txt (text/plain), 17.71 KB, created by
bartosz michalik
on 2008-07-23 19:27:16 EDT
(
hide
)
Description:
small fixes
Filename:
MIME Type:
Creator:
bartosz michalik
Created:
2008-07-23 19:27:16 EDT
Size:
17.71 KB
patch
obsolete
>Index: src/org/eclipse/pde/internal/core/product/ProductModelFactory.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/ProductModelFactory.java,v >retrieving revision 1.13 >diff -u -r1.13 ProductModelFactory.java >--- src/org/eclipse/pde/internal/core/product/ProductModelFactory.java 2 Jan 2008 15:56:22 -0000 1.13 >+++ src/org/eclipse/pde/internal/core/product/ProductModelFactory.java 23 Jul 2008 23:26:03 -0000 >@@ -10,19 +10,7 @@ > *******************************************************************************/ > package org.eclipse.pde.internal.core.product; > >-import org.eclipse.pde.internal.core.iproduct.IAboutInfo; >-import org.eclipse.pde.internal.core.iproduct.IArgumentsInfo; >-import org.eclipse.pde.internal.core.iproduct.IConfigurationFileInfo; >-import org.eclipse.pde.internal.core.iproduct.IIntroInfo; >-import org.eclipse.pde.internal.core.iproduct.IJREInfo; >-import org.eclipse.pde.internal.core.iproduct.ILauncherInfo; >-import org.eclipse.pde.internal.core.iproduct.IProduct; >-import org.eclipse.pde.internal.core.iproduct.IProductFeature; >-import org.eclipse.pde.internal.core.iproduct.IProductModel; >-import org.eclipse.pde.internal.core.iproduct.IProductModelFactory; >-import org.eclipse.pde.internal.core.iproduct.IProductPlugin; >-import org.eclipse.pde.internal.core.iproduct.ISplashInfo; >-import org.eclipse.pde.internal.core.iproduct.IWindowImages; >+import org.eclipse.pde.internal.core.iproduct.*; > > public class ProductModelFactory implements IProductModelFactory { > >@@ -54,6 +42,13 @@ > } > > /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IProductModelFactory#createPluginConfiguration() >+ */ >+ public IProductPluginConfiguration createPluginConfiguration() { >+ return new ProductPluginConfiguration(fModel); >+ } >+ >+ /* (non-Javadoc) > * @see org.eclipse.pde.internal.core.iproduct.IProductModelFactory#createConfigFileInfo() > */ > public IConfigurationFileInfo createConfigFileInfo() { >Index: src/org/eclipse/pde/internal/core/product/Product.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/product/Product.java,v >retrieving revision 1.40 >diff -u -r1.40 Product.java >--- src/org/eclipse/pde/internal/core/product/Product.java 26 Apr 2008 23:28:09 -0000 1.40 >+++ src/org/eclipse/pde/internal/core/product/Product.java 23 Jul 2008 23:26:03 -0000 >@@ -26,6 +26,7 @@ > private IAboutInfo fAboutInfo; > > private TreeMap fPlugins = new TreeMap(); >+ private TreeMap fPluginConfigurations = new TreeMap(); > private List fFeatures = new ArrayList(); > private IConfigurationFileInfo fConfigIniInfo; > private IJREInfo fJVMInfo; >@@ -201,6 +202,14 @@ > writer.println(indent + " </features>"); //$NON-NLS-1$ > } > >+ writer.println(indent + " <configurations>"); //$NON-NLS-1$ >+ iter = fPluginConfigurations.values().iterator(); >+ while (iter.hasNext()) { >+ IProductPluginConfiguration configuration = (IProductPluginConfiguration) iter.next(); >+ configuration.write(indent + " ", writer); //$NON-NLS-1$ >+ } >+ writer.println(indent + " </configurations>"); //$NON-NLS-1$ >+ > writer.println(); > writer.println("</product>"); //$NON-NLS-1$ > } >@@ -222,6 +231,7 @@ > fUseFeatures = false; > fAboutInfo = null; > fPlugins.clear(); >+ fPluginConfigurations.clear(); > fFeatures.clear(); > fConfigIniInfo = null; > fWindowImages = null; >@@ -256,6 +266,8 @@ > parsePlugins(child.getChildNodes()); > } else if (name.equals("features")) { //$NON-NLS-1$ > parseFeatures(child.getChildNodes()); >+ } else if (name.equals("configurations")) { //$NON-NLS-1$ >+ parsePluginConfigurations(child.getChildNodes()); > } else if (name.equals("configIni")) { //$NON-NLS-1$ > fConfigIniInfo = factory.createConfigFileInfo(); > fConfigIniInfo.parse(child); >@@ -296,6 +308,19 @@ > } > } > >+ private void parsePluginConfigurations(NodeList children) { >+ for (int i = 0; i < children.getLength(); i++) { >+ Node child = children.item(i); >+ if (child.getNodeType() == Node.ELEMENT_NODE) { >+ if (child.getNodeName().equals("pluginConfiguration")) { //$NON-NLS-1$ >+ IProductPluginConfiguration configuration = getModel().getFactory().createPluginConfiguration(); >+ configuration.parse(child); >+ fPluginConfigurations.put(configuration.getId(), configuration); >+ } >+ } >+ } >+ } >+ > private void parseFeatures(NodeList children) { > for (int i = 0; i < children.getLength(); i++) { > Node child = children.item(i); >@@ -332,16 +357,63 @@ > } > > /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IProduct#addPluginConfigurations(org.eclipse.pde.internal.core.iproduct.IPluginConfiguration[]) >+ */ >+ public void addPluginConfigurations(IProductPluginConfiguration[] configuration) { >+ boolean modified = false; >+ for (int i = 0; i < configuration.length; i++) { >+ if (configuration[i] == null) >+ continue; >+ String id = configuration[i].getId(); >+ if (id == null || fPluginConfigurations.containsKey(id)) { >+ configuration[i] = null; >+ continue; >+ } >+ >+ configuration[i].setModel(getModel()); >+ fPluginConfigurations.put(id, configuration[i]); >+ modified = true; >+ } >+ if (modified && isEditable()) >+ fireStructureChanged(configuration, IModelChangedEvent.INSERT); >+ } >+ >+ /* (non-Javadoc) > * @see org.eclipse.pde.internal.core.iproduct.IProduct#removePlugins(org.eclipse.pde.internal.core.iproduct.IProductPlugin[]) > */ > public void removePlugins(IProductPlugin[] plugins) { > boolean modified = false; >+ LinkedList removedConfigurations = new LinkedList(); > for (int i = 0; i < plugins.length; i++) { >- if (fPlugins.remove(plugins[i].getId()) != null) >+ final String id = plugins[i].getId(); >+ if (fPlugins.remove(id) != null) { > modified = true; >+ Object configuration = fPluginConfigurations.remove(id); >+ if (configuration != null) >+ removedConfigurations.add(configuration); >+ } >+ } >+ if (isEditable()) { >+ if (modified) >+ fireStructureChanged(plugins, IModelChangedEvent.REMOVE); >+ if (!removedConfigurations.isEmpty()) { >+ fireStructureChanged((IProductObject[]) removedConfigurations.toArray(new IProductObject[removedConfigurations.size()]), IModelChangedEvent.REMOVE); >+ } > } >- if (modified && isEditable()) >- fireStructureChanged(plugins, IModelChangedEvent.REMOVE); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IProduct#removePluginConfigurations(org.eclipse.pde.internal.core.iproduct.IProductPluginConfiguration[]) >+ */ >+ public void removePluginConfigurations(IProductPluginConfiguration[] configurations) { >+ boolean modified = false; >+ for (int i = 0; i < configurations.length; i++) { >+ if (fPluginConfigurations.remove(configurations[i].getId()) != null) { >+ modified = true; >+ } >+ } >+ if (isEditable() && modified) >+ fireStructureChanged(configurations, IModelChangedEvent.REMOVE); > } > > /* (non-Javadoc) >@@ -352,6 +424,13 @@ > } > > /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IProduct#getPluginConfigurations() >+ */ >+ public IProductPluginConfiguration[] getPluginConfigurations() { >+ return (IProductPluginConfiguration[]) fPluginConfigurations.values().toArray(new IProductPluginConfiguration[fPluginConfigurations.size()]); >+ } >+ >+ /* (non-Javadoc) > * @see org.eclipse.pde.internal.core.iproduct.IProduct#getConfigurationFileInfo() > */ > public IConfigurationFileInfo getConfigurationFileInfo() { >@@ -485,4 +564,11 @@ > fireStructureChanged(feature1, IModelChangedEvent.CHANGE); > } > >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IProduct#findPluginConfiguration(java.lang.String) >+ */ >+ public IProductPluginConfiguration findPluginConfiguration(String id) { >+ return (IProductPluginConfiguration) fPluginConfigurations.get(id); >+ } >+ > } >Index: src/org/eclipse/pde/internal/core/iproduct/IProductModelFactory.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/IProductModelFactory.java,v >retrieving revision 1.12 >diff -u -r1.12 IProductModelFactory.java >--- src/org/eclipse/pde/internal/core/iproduct/IProductModelFactory.java 2 Jan 2008 15:56:15 -0000 1.12 >+++ src/org/eclipse/pde/internal/core/iproduct/IProductModelFactory.java 23 Jul 2008 23:26:03 -0000 >@@ -18,6 +18,8 @@ > > IProductPlugin createPlugin(); > >+ IProductPluginConfiguration createPluginConfiguration(); >+ > IProductFeature createFeature(); > > IConfigurationFileInfo createConfigFileInfo(); >Index: src/org/eclipse/pde/internal/core/iproduct/IProduct.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/iproduct/IProduct.java,v >retrieving revision 1.31 >diff -u -r1.31 IProduct.java >--- src/org/eclipse/pde/internal/core/iproduct/IProduct.java 26 Apr 2008 23:28:09 -0000 1.31 >+++ src/org/eclipse/pde/internal/core/iproduct/IProduct.java 23 Jul 2008 23:26:03 -0000 >@@ -52,14 +52,22 @@ > > void addFeatures(IProductFeature[] feature); > >+ void addPluginConfigurations(IProductPluginConfiguration[] configurations); >+ > void removePlugins(IProductPlugin[] plugins); > > void removeFeatures(IProductFeature[] feature); > >+ void removePluginConfigurations(IProductPluginConfiguration[] configurations); >+ >+ IProductPluginConfiguration findPluginConfiguration(String id); >+ > IProductPlugin[] getPlugins(); > > IProductFeature[] getFeatures(); > >+ IProductPluginConfiguration[] getPluginConfigurations(); >+ > void setId(String id); > > void setVersion(String version); >Index: src/org/eclipse/pde/internal/core/iproduct/IProductPluginConfiguration.java >=================================================================== >RCS file: src/org/eclipse/pde/internal/core/iproduct/IProductPluginConfiguration.java >diff -N src/org/eclipse/pde/internal/core/iproduct/IProductPluginConfiguration.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/pde/internal/core/iproduct/IProductPluginConfiguration.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,54 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 Bartosz Michalik and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ * Bartosz Michalik (bartosz.michalik@gmail.com) >+ *******************************************************************************/ >+package org.eclipse.pde.internal.core.iproduct; >+ >+/** >+ * PluginConfiguration description defines plug-in start level, and other properties that can be used >+ * during product launching/building >+ * @author Bartosz Michalik >+ */ >+public interface IProductPluginConfiguration extends IProductObject { >+ public static final String P_AUTO_START = "autostart"; //$NON-NLS-1$ >+ public static final String P_START_LEVEL = "startLevel"; //$NON-NLS-1$ >+ >+ String getId(); >+ >+ void setId(String id); >+ >+ void setAutoStart(boolean autostart); >+ >+ boolean isAutoStart(); >+ >+ void setStartLevel(int startLevel); >+ >+ int getStartLevel(); >+ >+ /** >+ * Adds property, if property exists is overridden >+ * @param key >+ * @param value >+ * @throws IllegalArgumentException when key or value is empty >+ */ >+ void addProperty(String key, String value) throws IllegalArgumentException; >+ >+ /** >+ * @param key >+ */ >+ void removeProperty(String key); >+ >+ /** >+ * get property from key >+ * @param key >+ * @return property or <code>null</code> >+ */ >+ String getProperty(String key); >+} >Index: src/org/eclipse/pde/internal/core/product/ProductPluginConfiguration.java >=================================================================== >RCS file: src/org/eclipse/pde/internal/core/product/ProductPluginConfiguration.java >diff -N src/org/eclipse/pde/internal/core/product/ProductPluginConfiguration.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/pde/internal/core/product/ProductPluginConfiguration.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,164 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ * Bartosz Michalik (bartosz.michalik@gmail.com) >+ *******************************************************************************/ >+package org.eclipse.pde.internal.core.product; >+ >+import java.io.PrintWriter; >+import java.util.*; >+import org.eclipse.pde.internal.core.iproduct.IProductModel; >+import org.eclipse.pde.internal.core.iproduct.IProductPluginConfiguration; >+import org.w3c.dom.*; >+ >+public class ProductPluginConfiguration extends ProductObject implements IProductPluginConfiguration { >+ >+ private static final long serialVersionUID = -3549668957352554876L; >+ private boolean fAutoStart; >+ private int fStartLevel; >+ private String fId; >+ private Map fPropertiesMap; >+ >+ /** >+ * Only for parsing usage >+ * @param model >+ */ >+ ProductPluginConfiguration(IProductModel model) { >+ super(model); >+ fPropertiesMap = new HashMap(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IProductObject#parse(org.w3c.dom.Node) >+ */ >+ public void parse(Node node) { >+ if (node.getNodeType() == Node.ELEMENT_NODE) { >+ Element element = (Element) node; >+ fId = element.getAttribute("id"); >+ fAutoStart = Boolean.parseBoolean(element.getAttribute(P_AUTO_START)); >+ fStartLevel = Integer.parseInt(element.getAttribute(P_START_LEVEL)); >+ NodeList children = node.getChildNodes(); >+ int length = children.getLength(); >+ for (int i = 0; i < length; ++i) { >+ Node item = children.item(i); >+ if (item.getNodeType() == Node.ELEMENT_NODE) { >+ element = (Element) item; >+ String key = element.getAttribute("key"); >+ String value = element.getAttribute("value"); >+ fPropertiesMap.put(key, value); >+ } >+ } >+ } >+ >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.core.IWritable#write(java.lang.String, java.io.PrintWriter) >+ */ >+ public void write(String indent, PrintWriter writer) { >+ writer.print("<pluginConfiguration id=\"" + fId + "\""); //$NON-NLS-1$ //$NON-NLS-2$ >+ writer.print(" autoStart=\"" + fAutoStart + "\""); //$NON-NLS-1$//$NON-NLS-2$ >+ writer.print(" startLevel=\"" + fStartLevel + "\""); //$NON-NLS-1$ //$NON-NLS-2$ >+ if (fPropertiesMap.isEmpty()) >+ writer.println(" />"); //$NON-NLS-1$ >+ else { >+ writer.println(" >"); //$NON-NLS-1$ >+ Iterator i = fPropertiesMap.keySet().iterator(); >+ while (i.hasNext()) { >+ String key = (String) i.next(); >+ writer.println(indent + "<property key=\"" + key + " value=\"" + fPropertiesMap.get(key) + "\" />"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >+ } >+ writer.println("</pluginConfiguration>"); //$NON-NLS-1$ >+ } >+ >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#addProperty(java.lang.String, java.lang.String) >+ */ >+ public void addProperty(String key, String value) throws IllegalArgumentException { >+ if (key == null || key.equals("")) //$NON-NLS-1$ >+ throw new IllegalArgumentException("key cannot empty"); //$NON-NLS-1$ >+ if (value == null || value.equals("")) //$NON-NLS-1$ >+ throw new IllegalArgumentException("value cannot empty"); //$NON-NLS-1$ >+ String oldValue = (String) fPropertiesMap.get(key); >+ fPropertiesMap.put(key, value); >+ if (isEditable() && !value.equals(oldValue)) >+ firePropertyChanged(key, oldValue, value); >+ >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#getId() >+ */ >+ public String getId() { >+ return fId; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#getProperty(java.lang.String) >+ */ >+ public String getProperty(String key) { >+ return (String) fPropertiesMap.get(key); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#getStartLevel() >+ */ >+ public int getStartLevel() { >+ return fStartLevel; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#isAutoStart() >+ */ >+ public boolean isAutoStart() { >+ return fAutoStart; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#removeProperty(java.lang.String) >+ */ >+ public void removeProperty(String key) { >+ String oldValue = (String) fPropertiesMap.get(key); >+ fPropertiesMap.remove(key); >+ if (isEditable() && oldValue != null) >+ firePropertyChanged(key, oldValue, null); >+ >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#setAutoStart(boolean) >+ */ >+ public void setAutoStart(boolean autostart) { >+ boolean oldValue = fAutoStart; >+ fAutoStart = autostart; >+ if (isEditable() && oldValue != fAutoStart) >+ firePropertyChanged(P_AUTO_START, new Boolean(oldValue), new Boolean(fAutoStart)); >+ >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IPluginConfiguration#setStartLevel(java.lang.String) >+ */ >+ public void setStartLevel(int startLevel) { >+ int oldValue = fStartLevel; >+ fStartLevel = startLevel; >+ if (isEditable() && oldValue != fStartLevel) >+ firePropertyChanged(P_START_LEVEL, new Integer(oldValue), new Integer(fStartLevel)); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.internal.core.iproduct.IProductPluginConfiguration#setId(java.lang.String) >+ */ >+ public void setId(String id) { >+ fId = id; >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 240737
:
108113
|
108188
|
108269
|
108270
| 108283 |
108385
|
109836
|
111676
|
117252
|
117335
|
117405
|
119203
|
122351