From 9cb9b53b9a5b901839a404801905b89949bc8604 Mon Sep 17 00:00:00 2001 From: lempinen Date: Fri, 25 Oct 2013 08:57:16 +0000 Subject: [PATCH] PropertyPage for changing default colors of diagram elements. Currently only Dependency arrows are supported. Default color is displayed if user has not specified a color for the element. refs #4481 git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@28120 ac1ea38d-2e2b-0410-8846-a27921b304fc --- .../modelica/data/SimulationResult.java | 4 +- org.simantics.sysdyn.ontology/graph.tg | Bin 155992 -> 156629 bytes .../graph/Sysdyn.pgraph | 33 ++++-- .../org/simantics/sysdyn/SysdynResource.java | 6 ++ org.simantics.sysdyn.ui/plugin.xml | 8 ++ .../ui/elements/SysdynElementFactory.java | 10 +- .../DependencyConnectionFactory.java | 24 ++++- .../SysdynDiagramPreferencePage.java | 89 +++++++++++++++ .../preferences/SysdynDiagramPreferences.java | 29 +++++ .../SysdynDiagramPreferencesInitializer.java | 39 +++++++ .../SysdynDiagramPropertyExternalRead.java | 48 +++++++++ .../SysdynDiagramPropertySubscription.java | 38 +++++++ .../SysdynDiagramPropertySupport.java | 101 ++++++++++++++++++ org.simantics.sysdyn.ui/sysdyn.product | 4 +- 14 files changed, 414 insertions(+), 19 deletions(-) create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencePage.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferences.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencesInitializer.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertyExternalRead.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySubscription.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySupport.java diff --git a/org.simantics.modelica/src/org/simantics/modelica/data/SimulationResult.java b/org.simantics.modelica/src/org/simantics/modelica/data/SimulationResult.java index 3f187058..315b1fc8 100644 --- a/org.simantics.modelica/src/org/simantics/modelica/data/SimulationResult.java +++ b/org.simantics.modelica/src/org/simantics/modelica/data/SimulationResult.java @@ -410,10 +410,10 @@ public class SimulationResult { */ public DataSet getDataSet(String name) { for(DataSet set : variables) - if(set.name.equals(name)) + if(set.name.equalsIgnoreCase(name)) return set; for(DataSet set : initials) - if(set.name.equals(name)) + if(set.name.equalsIgnoreCase(name)) return set; return null; } diff --git a/org.simantics.sysdyn.ontology/graph.tg b/org.simantics.sysdyn.ontology/graph.tg index 17eab9a3c4491791d58cd0ddfcbc86aac5f97fc8..5046ca49bfab2b29f943c25b83273bfd92df5760 100644 GIT binary patch literal 156629 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

#J1=C0?a~5|;$5{EK-^$NjTdP^Qo@TB^{4 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 KR(eHlOa4EkVyz(n literal 155992 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 diff --git a/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph b/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph index fa30152a..c209722f 100644 --- a/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph +++ b/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph @@ -24,8 +24,8 @@ SYSDYN.ImportedOntologies : PROJ.NamespaceRequirement "http://www.simantics.org/Sysdyn-1.1" : L0.URI "http://www.simantics.org/Layer0-1.1" : L0.URI "http://www.simantics.org/SelectionView-1.2" : L0.URI -// "http://www.simantics.org/Documentation-1.1" : L0.URI // Experimental documentation tool -// "http://www.simantics.org/DocumentWorkbench-1.0" : L0.URI // Experimental documentation tool + //"http://www.semantum.fi/Simupedia-1.0" : L0.URI // Experimental Simupedia + //"http://www.semantum.fi/SimupediaWorkbench-1.0" : L0.URI // Experimental Simupedia SYSDYN.SharedFunctionOntology -- SYSDYN.ValveSymbol.orientation --> SYSDYN.Orientation + + + + diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/SysdynElementFactory.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/SysdynElementFactory.java index 4686cc62..61415eca 100644 --- a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/SysdynElementFactory.java +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/SysdynElementFactory.java @@ -19,6 +19,7 @@ import java.util.Collections; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.Statement; import org.simantics.db.common.utils.OrderedSetUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.exception.ManyObjectsForFunctionalRelationException; @@ -101,9 +102,12 @@ public abstract class SysdynElementFactory extends SyncElementFactory { ElementUtils.setTextFont(e, G2DUtils.getFont(graph, fontResource)); } if (graph.isInstanceOf(element, dr.ColorProvider)) { - Resource colorResource = graph.getPossibleObject(element, g2d.HasColor); - if (colorResource != null) - ElementUtils.setTextColor(e, G2DUtils.getColor(graph, colorResource)); + Statement colorStatement = graph.getPossibleStatement(element, g2d.HasColor); + if (colorStatement != null && !colorStatement.isAsserted(element)) + ElementUtils.setTextColor(e, G2DUtils.getColor(graph, colorStatement.getObject())); + else { + + } } Resource component = graph.getPossibleObject(element, mr.ElementToComponent); diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/connections/DependencyConnectionFactory.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/connections/DependencyConnectionFactory.java index fcfb5445..b521dd4b 100644 --- a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/connections/DependencyConnectionFactory.java +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/elements/connections/DependencyConnectionFactory.java @@ -11,14 +11,18 @@ *******************************************************************************/ package org.simantics.sysdyn.ui.elements.connections; +import java.awt.Color; import java.util.HashMap; import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.atomic.AtomicInteger; +import org.eclipse.jface.resource.StringConverter; +import org.eclipse.swt.graphics.RGB; import org.simantics.databoard.Bindings; import org.simantics.db.AsyncReadGraph; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.Statement; import org.simantics.db.exception.DatabaseException; import org.simantics.db.procedure.AsyncMultiProcedure; import org.simantics.db.procedure.AsyncProcedure; @@ -36,6 +40,8 @@ import org.simantics.g2d.element.IElement; import org.simantics.g2d.element.handler.impl.StaticObjectAdapter; import org.simantics.layer0.Layer0; import org.simantics.sysdyn.ui.editor.routing.DependencyRouter; +import org.simantics.sysdyn.ui.preferences.SysdynDiagramPreferences; +import org.simantics.sysdyn.ui.preferences.SysdynDiagramPropertyExternalRead; import org.simantics.utils.datastructures.Pair; /** @@ -92,12 +98,22 @@ public class DependencyConnectionFactory extends ElementFactoryAdapter { }); // Find possible color - graph.forPossibleObject(elementResource, G2D.HasColor, new SyncProcedure() { + graph.forPossibleStatement(elementResource, G2D.HasColor, new SyncProcedure() { @Override - public void execute(ReadGraph graph, Resource result) throws DatabaseException { - if(result != null) { - element.setHint(ElementHints.KEY_TEXT_COLOR, G2DUtils.getColor(graph, result)); + public void execute(ReadGraph graph, Statement result) throws DatabaseException { + if(result != null && !result.isAsserted(elementResource)) { + element.setHint(ElementHints.KEY_TEXT_COLOR, G2DUtils.getColor(graph, result.getObject())); + } else { + String color = graph.syncRequest(new SysdynDiagramPropertyExternalRead(new Pair(elementResource, SysdynDiagramPreferences.ARROW_COLOR))); + if(color != null) { + RGB rgb = StringConverter.asRGB(color, null); + if(rgb != null) { + Color c = new Color(rgb.red, rgb.green, rgb.blue); + element.setHint(ElementHints.KEY_TEXT_COLOR, c); + } + } + } } diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencePage.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencePage.java new file mode 100644 index 00000000..ce357b73 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencePage.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy + *******************************************************************************/ + +package org.simantics.sysdyn.ui.preferences; + +import org.eclipse.jface.preference.ColorFieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.simantics.g2d.diagram.DiagramUtils; +import org.simantics.g2d.diagram.IDiagram; +import org.simantics.modeling.ui.diagramEditor.DiagramEditor; +import org.simantics.sysdyn.ui.Activator; + +/** + * + * @author Teemu Lempinen + * + */ +public class SysdynDiagramPreferencePage extends FieldEditorPreferencePage implements +IWorkbenchPreferencePage { + + public SysdynDiagramPreferencePage() { + super(GRID); + setDescription("System dynamics diagram preferences"); + } + + @Override + public void init(IWorkbench workbench) { + setPreferenceStore(Activator.getDefault().getPreferenceStore()); + } + + @Override + protected void createFieldEditors() { + addField(new ColorFieldEditor(SysdynDiagramPreferences.ARROW_COLOR, "&Dependency", getFieldEditorParent())); + addField(new ColorFieldEditor(SysdynDiagramPreferences.FLOW_COLOR, "&Flow", getFieldEditorParent())); + addField(new ColorFieldEditor(SysdynDiagramPreferences.AUXILIARY_COLOR, "&Auxiliary", getFieldEditorParent())); + addField(new ColorFieldEditor(SysdynDiagramPreferences.STOCK_COLOR, "&Stock", getFieldEditorParent())); + addField(new ColorFieldEditor(SysdynDiagramPreferences.VALVE_COLOR, "&Valve", getFieldEditorParent())); + addField(new ColorFieldEditor(SysdynDiagramPreferences.CLOUD_COLOR, "&Cloud", getFieldEditorParent())); + } + + @Override + public boolean performOk() { + IEditorPart editor = null; + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow[] windows = workbench.getWorkbenchWindows(); + // To ask for the active window doesn't work, so browse through all + // windows and when an active editor is found, use that + for (IWorkbenchWindow window : windows) { + IWorkbenchPage page = window.getActivePage(); + if (page != null) { + editor = (IEditorPart)page.getActiveEditor(); + if (editor != null) + break; + } + } + if (editor != null) { + if (editor instanceof DiagramEditor) { + DiagramEditor diagramEditor = (DiagramEditor) editor; + IDiagram o = (IDiagram) diagramEditor.getViewer().getAdapter(IDiagram.class); +// ICanvasContext o = (ICanvasContext) diagramEditor.getViewer().getAdapter(ICanvasContext.class); + if(o != null) { + DiagramUtils.invalidate(o); + DiagramUtils.validateAndFix(o, o.getElements()); + +// o.getContentContext().setDirty(); + } + } + } + + + return super.performOk(); + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferences.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferences.java new file mode 100644 index 00000000..5ab40e62 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferences.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy + *******************************************************************************/ +package org.simantics.sysdyn.ui.preferences; + +/** + * + * @author Teemu Lempinen + * + */ +public class SysdynDiagramPreferences { + + public static String ARROW_COLOR = "Arrow color"; + public static String FLOW_COLOR = "Flow color"; + public static String AUXILIARY_COLOR = "Auxiliary color"; + public static String CLOUD_COLOR = "Cloud color"; + public static String STOCK_COLOR = "Stock color"; + public static String VALVE_COLOR = "Valve color"; + + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencesInitializer.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencesInitializer.java new file mode 100644 index 00000000..0539888f --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPreferencesInitializer.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy + *******************************************************************************/ +package org.simantics.sysdyn.ui.preferences; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.resource.StringConverter; +import org.eclipse.swt.graphics.RGB; +import org.simantics.sysdyn.ui.Activator; + +/** + * + * @author Teemu Lempinen + * + */ +public class SysdynDiagramPreferencesInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + IPreferenceStore store = Activator.getDefault().getPreferenceStore(); + store.setDefault(SysdynDiagramPreferences.ARROW_COLOR, StringConverter.asString(new RGB(0, 0, 255))); + store.setDefault(SysdynDiagramPreferences.FLOW_COLOR, StringConverter.asString(new RGB(0, 0, 0))); + store.setDefault(SysdynDiagramPreferences.AUXILIARY_COLOR, StringConverter.asString(new RGB(0, 0, 0))); + store.setDefault(SysdynDiagramPreferences.STOCK_COLOR, StringConverter.asString(new RGB(0, 0, 0))); + store.setDefault(SysdynDiagramPreferences.VALVE_COLOR, StringConverter.asString(new RGB(0, 0, 0))); + store.setDefault(SysdynDiagramPreferences.CLOUD_COLOR, StringConverter.asString(new RGB(0, 0, 0))); + } + + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertyExternalRead.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertyExternalRead.java new file mode 100644 index 00000000..4d76f611 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertyExternalRead.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy + *******************************************************************************/ +package org.simantics.sysdyn.ui.preferences; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.request.ParametrizedPrimitiveRead; +import org.simantics.db.procedure.Listener; +import org.simantics.sysdyn.ui.Activator; +import org.simantics.utils.datastructures.Pair; + +/** + * + * @author Teemu Lempinen + * + */ +public class SysdynDiagramPropertyExternalRead extends ParametrizedPrimitiveRead, String> { + + private SysdynDiagramPropertySubscription subscription; + + public SysdynDiagramPropertyExternalRead(Pair input) { + super(input); + } + + @Override + public void register(ReadGraph graph, Listener procedure) { + subscription = new SysdynDiagramPropertySubscription(procedure, parameter.second); + SysdynDiagramPropertySupport.INSTANCE.register(subscription); + procedure.execute(Activator.getDefault().getPreferenceStore().getString(parameter.second)); + } + + @Override + public void unregistered() { + if(subscription != null) { + SysdynDiagramPropertySupport.INSTANCE.unregister(subscription); + subscription = null; + } + } +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySubscription.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySubscription.java new file mode 100644 index 00000000..286572cf --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySubscription.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy + *******************************************************************************/ +package org.simantics.sysdyn.ui.preferences; + +import org.simantics.db.procedure.Listener; + +/** + * + * @author Teemu Lempinen + * + */ +public class SysdynDiagramPropertySubscription { + + private Listener listener; + private String propertyName; + + public SysdynDiagramPropertySubscription(Listener listener, String propertyName) { + this.listener = listener; + this.propertyName = propertyName; + } + + public Listener getListener() { + return listener; + } + + public String getPropertyName() { + return propertyName; + } +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySupport.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySupport.java new file mode 100644 index 00000000..1e5d5b53 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/SysdynDiagramPropertySupport.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy + *******************************************************************************/ +package org.simantics.sysdyn.ui.preferences; + +import gnu.trove.set.hash.THashSet; + +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.jface.resource.StringConverter; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.graphics.RGB; +import org.simantics.sysdyn.ui.Activator; + +/** + * + * @author Teemu Lempinen + * + */ +public class SysdynDiagramPropertySupport { + + public static SysdynDiagramPropertySupport INSTANCE = new SysdynDiagramPropertySupport(); + + private Set diagramProperties; + private THashSet subscriptions = new THashSet(); + private SysdynDiagramPropertySubscription[] subscriptionSnapshot = null; + + private void add(String property) { + diagramProperties.add(property); + } + + public SysdynDiagramPropertySupport() { + diagramProperties = new HashSet(); + add(SysdynDiagramPreferences.ARROW_COLOR); + add(SysdynDiagramPreferences.AUXILIARY_COLOR); + add(SysdynDiagramPreferences.CLOUD_COLOR); + add(SysdynDiagramPreferences.FLOW_COLOR); + add(SysdynDiagramPreferences.STOCK_COLOR); + add(SysdynDiagramPreferences.VALVE_COLOR); + + Activator.getDefault().getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent event) { + String propertyName = event.getProperty(); + if(diagramProperties.contains(propertyName)){ + for(SysdynDiagramPropertySubscription subscription : getSubscriptionSnapshot()) { + if(propertyName.equals(subscription.getPropertyName())) { + Object newValue = event.getNewValue(); + String result = newValue.toString(); + if(newValue instanceof RGB) + result = StringConverter.asString((RGB)newValue); + subscription.getListener().execute(result); + } + } + } + } + }); + } + + public void register(SysdynDiagramPropertySubscription subscription) { + assert subscription != null; + synchronized (subscriptions) { + subscriptions.add(subscription); + subscriptionSnapshot = null; + } + } + + public void unregister(SysdynDiagramPropertySubscription subscription) { + assert subscription != null; + synchronized (subscriptions) { + subscriptions.remove(subscription); + subscriptionSnapshot = null; + } + + } + + public SysdynDiagramPropertySubscription[] getSubscriptionSnapshot() { + SysdynDiagramPropertySubscription[] snapshot = subscriptionSnapshot; + if (snapshot == null) { + synchronized (subscriptions) { + snapshot = subscriptionSnapshot; + if (snapshot == null) { + snapshot = subscriptionSnapshot = + subscriptions.toArray(new SysdynDiagramPropertySubscription[subscriptions.size()]); + } + } + } + return snapshot; + } + +} diff --git a/org.simantics.sysdyn.ui/sysdyn.product b/org.simantics.sysdyn.ui/sysdyn.product index 921a8d4c..d65c835e 100644 --- a/org.simantics.sysdyn.ui/sysdyn.product +++ b/org.simantics.sysdyn.ui/sysdyn.product @@ -14,7 +14,8 @@ -fixerrors ---launcher.XXMaxPermSize 192m +--launcher.XXMaxPermSize 192m +-data @noDefault -ea -Xmx768M -XX:MaxPermSize=192m -Xshare:off -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts @@ -30,7 +31,6 @@ - org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6 -- 2.47.1