2017-08-21 3 views
0

Wie kann ich Workspace Browse und EPackages Browse in SWT/jface implementieren? Der folgende Code durchsuchen Dateisystem nicht Arbeitsbereich.SWT - Workspace und EPackage Registry durchsuchen

Button button = new Button(grpModelProperties, SWT.PUSH); 
button.setText("Browse Workspace..."); 
button.addSelectionListener(new SelectionAdapter() { 
public void widgetSelected(SelectionEvent e) { 
FileDialog dialog = new FileDialog(getShell(), SWT.NULL); 
String path = dialog.open(); 
if (path != null) { 
File file = new File(path); 
if (file.isFile()) 
displayFiles(new String[] { file.toString()}); 
else 
displayFiles(file.list()); 
} 
} 
}); 

ich auch versucht, die in SWT Component for choose file only from workspace von @sambi Reddy präsentierte Lösung, aber ich habe die folgenden Fehler:

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/osgi/util/NLS 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at org.eclipse.ui.dialogs.SelectionDialog.<clinit>(SelectionDialog.java:55) 
at mypackage.FrontPage.createControl(FrontPage.java:38) 
at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:175) 
at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:705) 
at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:597) 
at org.eclipse.jface.window.Window.create(Window.java:430) 
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1096) 
at org.eclipse.jface.window.Window.open(Window.java:792) 
at mypackage.ReservationWizard.main(ReservationWizard.java:76) 
Caused by: java.lang.ClassNotFoundException: org.eclipse.osgi.util.NLS 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 21 more 

ich eine Idee nicht auch haben über EPackages zu sehen.

edit: Wenn ich den folgenden Code ausführen, keine Einträge vorhanden, obwohl Arbeitsplatz Projekte hat:

Button button2 = new Button(grpModelProperties1, SWT.PUSH); 
button2.setText("Browse Workspace..."); 
final GridData button2Data = new GridData(SWT.RIGHT, SWT.CENTER, true, true); 
button2.setLayoutData(button2Data); 
button2.addSelectionListener(new SelectionAdapter() { 
public void widgetSelected(SelectionEvent e2) { 
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(
    Display.getDefault().getActiveShell(), 
    new WorkbenchLabelProvider(), 
    new BaseWorkbenchContentProvider()); 
    dialog.open(); 
} 
}); 
+1

Wenn Sie über den Eclipse-Arbeitsbereich sprechen, müssen Sie ein Eclipse-Plug-in verwenden. Der Arbeitsbereich ist für ein einfaches Java-Programm nicht verfügbar. Die Antworten, auf die Sie verlinken, funktionieren in einem Plugin. Ich habe keine Ahnung, was du mit EPackages browse meinst. –

+0

@ greg-449 Vielen Dank. Ja, meine Mittel sind Eclipse Workspace. Wenn ich Eclipse-Plugin und diesen Code verwende, werden die Dateien nicht angezeigt. Es gibt keine Einträge verfügbar. Weißt du, was kann ich tun? Mein Mean ist EMF-Registrierung (Metamodelle, die in Eclipse registriert sind). Sie werden auch in Fenster-> Zeige Ansicht -> andere -> Epsilon -> E-Package Registry oder in der Run-Konfiguration von ATL und Epsilon Sprachen in Eclipse gezeigt. –

+0

Wenn Sie Ihr Plugin testen, wird ein neuer Arbeitsbereich erstellt, der leer ist. Sie müssen diesem Arbeitsbereich Testprojekte hinzufügen. Ich benutze Eclipse Epsilon nicht, also kann ich dazu nichts sagen. –

Antwort

1

können Sie nur die Eclipse-Workspace-Plugin in einer Eclipse-Zugang, ist es in einer Ebene nicht verfügbar Java-App wegen der großen Menge an Initialisierung, die erforderlich ist.

In Ihrem ElementTreeSelectionDialog Dialog Sie setInput aufrufen müssen Sie den Dialog über die Elemente zu sagen, angezeigt werden:

ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(
       Display.getDefault().getActiveShell(), 
       new WorkbenchLabelProvider(), 
       new BaseWorkbenchContentProvider()); 

dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); 

dialog.open(); 

Dies zeigt den gesamten Arbeitsbereich, durch den Eingang zu einem IProject oder IFolder Ändern Sie die Anzeige einschränken zu einem Teil des Arbeitsbereichs.

+0

Vielen Dank. Wie kann ich den String-Pfad der ausgewählten Datei in der Textbox anzeigen lassen? –

+0

Welche Textbox? Wenn Sie eine neue Frage haben, fragen Sie eine neue Frage. –

+0

In dieser Frage, wie bekomme ich den String-Pfad der ausgewählten Datei? –