Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCamille Letavernier2017-08-09 08:10:24 +0000
committerCamille Letavernier2017-08-31 07:05:55 +0000
commit1fd57583d65596c3cb38d5baec98618e2824de29 (patch)
tree24c897e106319e2cbfb927edfc51b1a4c8f32908 /plugins/uml
parent25b14e8ffeb3321dd5b387fe2867b91c3c0569af (diff)
downloadorg.eclipse.papyrus-1fd57583d65596c3cb38d5baec98618e2824de29.tar.gz
org.eclipse.papyrus-1fd57583d65596c3cb38d5baec98618e2824de29.tar.xz
org.eclipse.papyrus-1fd57583d65596c3cb38d5baec98618e2824de29.zip
Bug 520729: [Properties view] The wizard for profiles only accepts
*.profile.uml files https://bugs.eclipse.org/bugs/show_bug.cgi?id=520729 Change-Id: Icdf7b5a62ccc2032bc79f78d800fc9cdb2a7aa22 Signed-off-by: Camille Letavernier <cletavernier@eclipsesource.com> (cherry picked from commit ea525c1a5be6413949197ea991e1a46507376359)
Diffstat (limited to 'plugins/uml')
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.classpath17
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/META-INF/MANIFEST.MF5
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/pom.xml2
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/generators/ProfileGenerator.java27
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/AbstractValidator.java7
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/SourceValidator.java6
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/GeneratorPage.java11
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/widget/FileChooser.java102
9 files changed, 143 insertions, 40 deletions
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.classpath b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.classpath
index afb9bb46ef3..a2737ddb01a 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.classpath
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.classpath
@@ -1,8 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src-gen"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry exported="true" kind="lib" path="bin" sourcepath="bin"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.settings/org.eclipse.jdt.core.prefs b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.settings/org.eclipse.jdt.core.prefs
index 4759947300a..62a08f4494d 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/.settings/org.eclipse.jdt.core.prefs
@@ -1,10 +1,10 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/META-INF/MANIFEST.MF b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/META-INF/MANIFEST.MF
index 839b2a017f0..418be75ef7a 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/META-INF/MANIFEST.MF
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/META-INF/MANIFEST.MF
@@ -2,6 +2,7 @@ Manifest-Version: 1.0
Export-Package: org.eclipse.papyrus.customization.properties.generation,
org.eclipse.papyrus.customization.properties.generation.generators,
org.eclipse.papyrus.customization.properties.generation.layout,
+ org.eclipse.papyrus.customization.properties.generation.validators,
org.eclipse.papyrus.customization.properties.generation.wizard,
org.eclipse.papyrus.customization.properties.generation.wizard.widget
Require-Bundle: org.eclipse.m2m.qvt.oml;bundle-version="[3.6.0,4.0.0)";visibility:=reexport,
@@ -16,11 +17,11 @@ Bundle-Vendor: %Bundle-Vendor
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .,
bin
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.1.0.qualifier
Eclipse-BuddyPolicy: dependent
Bundle-Name: %Bundle-Name
Bundle-ManifestVersion: 2
Bundle-Activator: org.eclipse.papyrus.customization.properties.generation.Activator
Bundle-Description: %pluginDescription
Bundle-SymbolicName: org.eclipse.papyrus.uml.properties.generation;singleton:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/pom.xml b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/pom.xml
index 77991d4c9ac..62cdc5cde41 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/pom.xml
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/pom.xml
@@ -8,6 +8,6 @@
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.papyrus.uml.properties.generation</artifactId>
- <version>2.0.0-SNAPSHOT</version>
+ <version>2.1.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project> \ No newline at end of file
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/generators/ProfileGenerator.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/generators/ProfileGenerator.java
index f7a0791aed0..db44891524f 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/generators/ProfileGenerator.java
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/generators/ProfileGenerator.java
@@ -34,6 +34,7 @@ import org.eclipse.papyrus.customization.properties.generation.wizard.widget.Fil
import org.eclipse.papyrus.infra.properties.contexts.Context;
import org.eclipse.papyrus.infra.properties.contexts.DataContextElement;
import org.eclipse.papyrus.infra.properties.contexts.Property;
+import org.eclipse.papyrus.infra.widgets.providers.FileExtensions;
import org.eclipse.papyrus.views.properties.root.PropertiesRoot;
import org.eclipse.papyrus.views.properties.runtime.ConfigurationManager;
import org.eclipse.swt.SWT;
@@ -67,6 +68,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
private List<EObject> listEObject;
+ @Override
public void createControls(Composite parent) {
Composite root = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
@@ -80,28 +82,31 @@ public class ProfileGenerator extends AbstractQVTGenerator {
sourceLabel.setLayoutData(data);
sourceFileChooser = new FileChooser(root, false);
- sourceFileChooser.setFilterExtensions(new String[] { "profile.uml" }); //$NON-NLS-1$
+ sourceFileChooser.setFilterExtensions(FileExtensions.umlProfileExtensions);
sourceFileChooser.addListener(this);
- listEObject = new ArrayList<EObject>();
+ listEObject = new ArrayList<>();
}
+ @Override
public String getDescription() {
return Messages.ProfileGenerator_description;
}
+ @Override
public boolean isReady() {
return sourceFileChooser.getFilePath() != null;
}
+ @Override
public String getName() {
return Messages.ProfileGenerator_name;
}
@Override
protected List<ModelExtent> getModelExtents() {
- LinkedList<ModelExtent> result = new LinkedList<ModelExtent>();
+ LinkedList<ModelExtent> result = new LinkedList<>();
ModelExtent inPackage = new BasicModelExtent();
- List<EObject> liste = new ArrayList<EObject>();
+ List<EObject> liste = new ArrayList<>();
if (!listEObject.isEmpty()) {
for (EObject currentEObject : listEObject) {
EObject tempEObject = null;
@@ -185,7 +190,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
private List<String> getPath(DataContextElement element) {
List<String> result;
if (element.getPackage() == null) {
- result = new LinkedList<String>();
+ result = new LinkedList<>();
} else {
result = getPath(element.getPackage());
}
@@ -232,6 +237,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
return null;
}
+ @Override
public boolean isSelectedSingle(Property property) {
org.eclipse.uml2.uml.Property attribute = getAttribute(property);
if (attribute == null) {
@@ -250,6 +256,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
return true;
}
+ @Override
public boolean isSelectedMultiple(Property property) {
if (!isSelectedSingle(property)) {
return false;
@@ -257,7 +264,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
org.eclipse.uml2.uml.Property attribute = getAttribute(property);
- Set<String> validDataTypes = new HashSet<String>(Arrays.asList(new String[] { "Integer", "Boolean", "Float", "Double" })); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ Set<String> validDataTypes = new HashSet<>(Arrays.asList(new String[] { "Integer", "Boolean", "Float", "Double" })); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
if (attribute.getType() instanceof PrimitiveType) {
return validDataTypes.contains(((PrimitiveType) attribute.getType()).getName());
@@ -270,10 +277,12 @@ public class ProfileGenerator extends AbstractQVTGenerator {
return false;
}
+ @Override
public boolean isSelectedSingle(Property property, DataContextElement element) {
return isSelectedSingle(property);
}
+ @Override
public boolean isSelectedMultiple(Property property, DataContextElement element) {
return isSelectedMultiple(property);
}
@@ -283,6 +292,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
return sourceFileChooser.getObservableValue();
}
+ @Override
public List<Object> getExternalReference() {
URI packageURI = URI.createPlatformResourceURI(sourceFileChooser.getFilePath(), true);
try {
@@ -290,7 +300,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
} catch (IOException e) {
// nothing
}
- list = new ArrayList<Object>();
+ list = new ArrayList<>();
list.add(umlProfile);
TreeIterator<EObject> tree = umlProfile.eAllContents();
@@ -310,6 +320,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
}
+ @Override
public void addCheckElement(Object obj) {
if (obj instanceof EObject) {
EObject current = (EObject) obj;
@@ -344,7 +355,7 @@ public class ProfileGenerator extends AbstractQVTGenerator {
PropertiesRoot root = ConfigurationManager.getInstance().getPropertiesRoot();
ModelExtent inRoot = new BasicModelExtent(Collections.singletonList(root));
- LinkedList<ModelExtent> result = new LinkedList<ModelExtent>();
+ LinkedList<ModelExtent> result = new LinkedList<>();
result.add(inProfile);
result.add(getOutContextExtent());
result.add(inUml);
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/AbstractValidator.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/AbstractValidator.java
index 0aa404ec6e0..a1d242723fb 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/AbstractValidator.java
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/AbstractValidator.java
@@ -30,6 +30,13 @@ public abstract class AbstractValidator implements IValidator {
return new Status(IStatus.ERROR, getPluginId(), message);
}
+ /**
+ * @since 2.1
+ */
+ protected IStatus warning(String message) {
+ return new Status(IStatus.WARNING, getPluginId(), message);
+ }
+
public String getPluginId() {
if (pluginId == null) {
return Activator.PLUGIN_ID;
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/SourceValidator.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/SourceValidator.java
index 3273dd876dd..720a430983e 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/SourceValidator.java
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/validators/SourceValidator.java
@@ -38,11 +38,11 @@ public class SourceValidator extends AbstractValidator {
if (!s.equals("")) { //$NON-NLS-1$
if (this.generator instanceof EcoreGenerator) {
if (!s.endsWith("ecore")) { //$NON-NLS-1$
- return error(Messages.SourceValidator_2);
+ return warning(Messages.SourceValidator_2);
}
} else if (this.generator instanceof ProfileGenerator) {
- if (!s.endsWith("profile.uml")) { //$NON-NLS-1$
- return error(Messages.SourceValidator_4);
+ if (!s.endsWith("uml")) { //$NON-NLS-1$
+ return warning(Messages.SourceValidator_4);
}
}
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/GeneratorPage.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/GeneratorPage.java
index 5870cec6b0e..720ec925260 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/GeneratorPage.java
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/GeneratorPage.java
@@ -130,6 +130,7 @@ public class GeneratorPage extends AbstractCreateContextPage implements Listener
}
}
+ @Override
public void createControl(Composite parent) {
root = new Composite(parent, SWT.NONE);
root.setLayout(new GridLayout(2, false));
@@ -168,15 +169,18 @@ public class GeneratorPage extends AbstractCreateContextPage implements Listener
if (targetFieldStrategy != null) {
targetFieldStrategy.setConverter(new IConverter() {
+ @Override
public Object getToType() {
return String.class;
}
+ @Override
public Object getFromType() {
return String.class;
}
+ @Override
public String convert(Object fromObject) {
if (srcTextObservable != null) {
return (String) srcTextObservable.getValue();
@@ -191,14 +195,17 @@ public class GeneratorPage extends AbstractCreateContextPage implements Listener
if (srcFieldStrategy != null) {
srcFieldStrategy.setConverter(new IConverter() {
+ @Override
public Object getToType() {
return String.class;
}
+ @Override
public Object getFromType() {
return String.class;
}
+ @Override
public String convert(Object fromObject) {
if (fromObject instanceof String) {
@@ -242,6 +249,7 @@ public class GeneratorPage extends AbstractCreateContextPage implements Listener
setControl(root);
}
+ @Override
public void handleEvent(Event event) {
String filePath = targetFileChooser.getFilePath();
@@ -281,9 +289,10 @@ public class GeneratorPage extends AbstractCreateContextPage implements Listener
public boolean canFlipToNextPage() {
binding.getValidationStatus().addValueChangeListener(new IValueChangeListener() {
+ @Override
public void handleValueChange(ValueChangeEvent event) {
IStatus status = (IStatus) event.diff.getNewValue();
- if (status.isOK()) {
+ if (status.isOK() || status.getSeverity() == IStatus.WARNING) {
setNext(true);
} else {
setNext(false);
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/widget/FileChooser.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/widget/FileChooser.java
index 04cdd1414af..efc3b48b460 100644
--- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/widget/FileChooser.java
+++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties.generation/src/org/eclipse/papyrus/customization/properties/generation/wizard/widget/FileChooser.java
@@ -11,9 +11,11 @@
*****************************************************************************/
package org.eclipse.papyrus.customization.properties.generation.wizard.widget;
+import java.util.Collections;
import java.util.HashSet;
-import java.util.LinkedList;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.eclipse.core.databinding.observable.value.IObservableValue;
@@ -21,8 +23,17 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.emf.common.ui.dialogs.WorkspaceResourceDialog;
import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
import org.eclipse.papyrus.customization.properties.generation.messages.Messages;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
+import org.eclipse.papyrus.infra.services.labelprovider.service.impl.LabelProviderServiceImpl;
+import org.eclipse.papyrus.infra.widgets.Activator;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.infra.widgets.providers.WorkspaceContentProvider;
+import org.eclipse.papyrus.infra.widgets.util.FileUtil;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
@@ -47,9 +58,9 @@ public class FileChooser extends Composite implements SelectionListener, Listene
private IFile currentFile;
- private List<ViewerFilter> filters;
+ private Map<String, String> filters = new LinkedHashMap<>();
- private Set<Listener> listeners = new HashSet<Listener>();
+ private Set<Listener> listeners = new HashSet<>();
private boolean newFile;
@@ -75,7 +86,6 @@ public class FileChooser extends Composite implements SelectionListener, Listene
browse = new Button(this, SWT.PUSH);
browse.setText(Messages.FileChooser_browseWorkspace);
browse.addSelectionListener(this);
- filters = new LinkedList<ViewerFilter>();
this.newFile = newFile;
}
@@ -101,10 +111,32 @@ public class FileChooser extends Composite implements SelectionListener, Listene
*/
public void setFilterExtensions(String[] extensions) {
filters.clear();
- ExtensionFilter filter = new ExtensionFilter(extensions);
- filters.add(filter);
+ for (String ext : extensions) {
+ filters.put(ext, ext);
+ }
}
+ /**
+ * Sets the file extensions that this FileChooser accepts.
+ * Files that don't match one of these extensions will be hidden.
+ *
+ * Extensions is a map in which the key is the filter (Accepting * and ? as wildcards)
+ * and value is the displayed label. The filter may contain several patterns, separated
+ * with a semi-colon (;).
+ *
+ * Example: <*.uml, UML>, <*.profile.uml;*.xmi, UML Profile>
+ *
+ * @param extensions
+ * A map of (filter name, extension filter)
+ *
+ * @since 2.1
+ */
+ public void setFilterExtensions(Map<String, String> extensions) {
+ filters.clear();
+ filters.putAll(extensions);
+ }
+
+ @Override
public void handleEvent(Event event) {
notifyChange();
}
@@ -119,22 +151,64 @@ public class FileChooser extends Composite implements SelectionListener, Listene
listeners.add(listener);
}
+ @Override
public void widgetSelected(SelectionEvent e) {
- IFile[] result = new IFile[0];
+
+ Object[] result = new Object[0];
if (newFile) {
- IFile file = WorkspaceResourceDialog.openNewFile(getShell(), null, null, null, filters);
+
+ List<ViewerFilter> viewerFilter = Collections.singletonList(new ExtensionFilter(filters.keySet().toArray(new String[0])));
+
+ IFile file = WorkspaceResourceDialog.openNewFile(getShell(), null, null, null, viewerFilter);
if (file != null) {
result = new IFile[] { file };
}
} else {
- result = WorkspaceResourceDialog.openFileSelection(getShell(), null, null, false, new Object[] { currentFile }, filters);
+ LabelProviderService labelProviderService = new LabelProviderServiceImpl();
+ try {
+ labelProviderService.startService();
+ } catch (ServiceException ex) {
+ Activator.log.error(ex);
+ }
+
+ ILabelProvider labelProvider = labelProviderService.getLabelProvider();
+
+ IFile currentFile = FileUtil.getIFile(text.getText());
+
+ TreeSelectorDialog dialog = new TreeSelectorDialog(getShell());
+ dialog.setTitle("File Selection");
+
+ WorkspaceContentProvider contentProvider = new WorkspaceContentProvider();
+
+ contentProvider.setExtensionFilters(filters);
+
+ dialog.setContentProvider(contentProvider);
+ dialog.setLabelProvider(labelProvider);
+
+
+ if (currentFile != null && currentFile.exists()) {
+ dialog.setInitialSelections(new IFile[] { currentFile });
+ }
+
+ int code = dialog.open();
+ if (code == Window.OK) {
+ result = dialog.getResult();
+ }
+ try {
+ labelProviderService.disposeService();
+ } catch (ServiceException ex) {
+ Activator.log.error(ex);
+ }
}
- if (result.length >= 1) {
- currentFile = result[0];
- text.setText(currentFile.getFullPath().toString());
- notifyChange();
+ if (result.length > 0) {
+ Object file = result[0];
+ if (file instanceof IFile) {
+ this.currentFile = ((IFile) file);
+ text.setText(currentFile.getFullPath().toString());
+ notifyChange();
+ }
}
}
@@ -144,6 +218,7 @@ public class FileChooser extends Composite implements SelectionListener, Listene
}
}
+ @Override
public void widgetDefaultSelected(SelectionEvent e) {
// Nothing
}
@@ -155,6 +230,5 @@ public class FileChooser extends Composite implements SelectionListener, Listene
public void setText(String s) {
text.setText(s);
-
}
}

Back to the top