2017-08-21 1 views
0

Comment puis-je implémenter Workspace Browse et EPackages Browse dans SWT/jface? Le code ci-dessous parcourt le système de fichiers et non l'espace de travail.SWT - Espace de travail et Registre EPackage parcourir

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()); 
} 
} 
}); 

J'ai aussi essayé la solution présentée dans SWT Component for choose file only from workspace par @sambi reddy mais je l'erreur ci-dessous:

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 

Je n'ai pas aussi une idée sur EPackages parcourir.

modifier: Quand j'exécuter le code ci-dessous, aucune entrée disponible même si l'espace de travail a des projets:

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

Si vous parlez de l'espace de travail Eclipse, vous devez utiliser un plugin Eclipse, l'espace de travail n'est pas disponible pour un programme Java simple. Les réponses que vous liez fonctionneront dans un plugin. Je n'ai aucune idée de ce que vous entendez par EPackages parcourir. –

+0

@ greg-449 Merci beaucoup. Oui, mes moyens sont Eclipse Workspace. Lorsque j'utilise le plugin Eclipse et ce code, les fichiers ne sont pas affichés. Il dit pas d'entrées disponibles. Savez-vous ce que je peux faire? Mon moyen est EMF Registry (Metamodels qui sont enregistrés en eclipse) .Ils sont également affichés dans Window-> show view -> autre -> Epsilon -> Registre Epackage ou dans la configuration d'exécution des langages ATL et Epsilon dans eclipse. –

+0

Lorsque vous testez votre plugin, un nouvel espace de travail vide est créé. Vous devrez ajouter des projets de test à cet espace de travail. Je n'utilise pas Eclipse Epsilon donc je ne peux pas commenter cela. –

Répondre

1

Vous ne pouvez accéder à l'espace de travail Eclipse dans un plug-in Eclipse, il n'est pas disponible dans une plaine Application Java en raison de la grande quantité d'initialisation requise.

Dans votre ElementTreeSelectionDialog dialogue vous devez appeler setInput dire la boîte de dialogue sur les éléments à afficher:

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

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

dialog.open(); 

Cette affiche l'ensemble de l'espace de travail, en changeant l'entrée d'un iProject ou IFolder vous pouvez restreindre l'affichage à une partie de l'espace de travail.

+0

Merci beaucoup. Comment puis-je obtenir le chemin de la chaîne du fichier sélectionné à afficher dans la zone de texte? –

+0

Quelle zone de texte? Si vous avez une nouvelle question, posez une nouvelle question. –

+0

Dans cette question, comment puis-je obtenir le chemin de la chaîne du fichier sélectionné? –