SWT Import Wizard - frage zur WizardPage

V

Vasida

Gast
Hi,

ich möchte für mein Program eine ganz popelige und einfach Importseite haben, wo man über einen browse button ein zu importierendes file auswählt und dieses dann verarbeitet.
Ich steige nicht durch den ziemlich undurchsichtigen Aufbau dieser WizardPages durch.

Ich habe mir über die plugin.xml das ImportWizard Template genommen und dann einen eigene WizardPage dazu gemacht.

Prinzipiell komme so weit, dass ich den Wizard über das Menu öffnen kann und in einer Zeile mein Textdatei auswählen kann. Das mache ich mit einem FileFieldEditor
Nur ich steige überhaupt durch, wie ich da jetzt "verarbeiten" kann. Wie schaffe ich es, dass z.B. der Finish-Button aktiviert wird? Ich kann zwar etwas auswählen, aber dann nichts weiter damit machen. Ich suche etwas wie eine Art run()-Methode.

Wo kann ich meine Prüfungen durchführen, ob die Eingabe gültig ist?

Mein ImportWizard sieht so aus:
Java:
	BookmarkImportWizardPage mainPage;

	public BookmarkImportWizard() {
		super();
	}

	public boolean performFinish() {
		File file = mainPage.getSelectedFile();
        if (file == null)
            return false;
        return true;
	}
	 
	public void init(IWorkbench workbench, IStructuredSelection selection) {
		setWindowTitle("File Import Wizard"); //NON-NLS-1
		setNeedsProgressMonitor(true);
		mainPage = new BookmarkImportWizardPage("Import Bookmarks",selection); //NON-NLS-1
	}
	
    public void addPages() {
        super.addPages(); 
        addPage(mainPage);        
    }

}

Meine dazugehörige Page:
Java:
public class BookmarkImportWizardPage
	extends WizardPage
{

	private Composite container;
	private final IStructuredSelection selection;
	private FileFieldEditor fileFieldEditor;

	protected BookmarkImportWizardPage(String pageName,
			IStructuredSelection selection)
	{
		super(pageName);
		this.selection = selection;
	}

	@Override
	public void createControl(Composite parent)
	{

		container = new Composite(parent, SWT.NONE);

		fileFieldEditor = new FileFieldEditor("Import", "Select file",
				container);
		fileFieldEditor.setFileExtensions(new String[] { "*.xxxx" });

		// Required to avoid an error in the system
		setControl(container);
		setPageComplete(false);

	}

	public File getSelectedFile()
	{
		System.out.println("getSelectedFile()");
		return null;
	}
 

mimo

Aktives Mitglied
Hallo,

ich weiß nicht ob der FileFieldEditor außerhalb der Eclipse Preferences benutzt werden kann, oder wie das Konfiguriert wird. Ich habe mal schnell was in den Editor gehackt... Ich habe den Code nicht getestet, aber eventuelle Fehler sollten leicht zu finden sein.

Java:
public class BookmarkImportWizardPage
    extends WizardPage implements PropertyChangeListener{
	
	private Composite container;
	private final IStructuredSelection selection;
	private PropertyChangeSupport pcs = new PropertyChangeSupport(this);

	public void addPropertyChangeListener(String propertyName,
			PropertyChangeListener listener) {
		pcs.addPropertyChangeListener(propertyName, listener);

	}
	
	public void addPropertyChangeListener(PropertyChangeListener listener) {
		pcs.addPropertyChangeListener(listener);

	}

	public void removePropertyChangeListener(PropertyChangeListener listener) {
		pcs.removePropertyChangeListener(listener);
	}

	@Override
	public void propertyChange(PropertyChangeEvent evt) {
		
	}
	
	public BookmarkImportWizardPage(String pageName,
	IStructuredSelection selection)
	{
		super(pageName);
		this.selection = selection;
	}
	
	private Text text;
	private String filename;

	public String getFilename(){
		return filename;
	}

	public void setFilename(String filename){
		pcs.firePropertyChange("filename", this.filename, this.filename = filename);
	}
	
	@Override
	public void createControl(Composite parent)


		container = new Composite(parent, SWT.NONE);
		
		Label label = new Label(composite_4, SWT.NONE);
		label.setLocation(0, 88);
		label.setSize(75, 15);
		label.setText("Importfile:");
		
		text = new Text(container, SWT.BORDER);
		text.setLocation(0, 109);
		text.setSize(422, 21);

		Button button = new Button(container, SWT.NONE);
		button.setLocation(0, 136);
		button.setSize(143, 25);
		button.setText("Select Importfile");
		
		button.addListener(SWT.Selection, new Listener(){

			@Override
			public void handleEvent(Event event) {
				FileDialog fd = new FileDialog(getSite().getShell(), SWT.OPEN);
		        fd.setText("Select Importfile");
		        fd.setFilterNames (new String [] {"Excel-File"});
		        fd.setFilterExtensions (new String [] {"*.xls*"});
		        String fileName = fd.open();
		        
		        if (fileName == null)
		            return;//Process canceled by user
		        text.setText(fileName);
			}
			
			
		});
		bindValues();
	}
	
	private void bindValues(){
		IValidator valFile = new IValidator(){

			@Override
			public IStatus validate(Object value) {
				String s = String.valueOf(value);
				
				File f = new File(s);
				if(f.exists()){
					setPageComplete(true);
					return ValidationStatus.ok();
				}
				return ValidationStatus.error("Is not a file");
			}
			
		};
		
		UpdateValueStrategy strategyFile = new UpdateValueStrategy();
		strategyFile.setBeforeSetValidator(valFile);
		
		IObservableValue widgetValue = WidgetProperties.text(SWT.Modify).observe(text);
		IObservableValue modelValue = BeanProperties.value(BookmarkImportWizardPage.class, "filename").observe(this);
		
		bindValue = ctx.bindValue(widgetValue, modelValue, strategyFile, null);
		ControlDecorationSupport.create(bindValue, SWT.TOP | SWT.LEFT);
	}


So sollte es funktionieren...

Gruß

MIMO
 

maestr0

Bekanntes Mitglied
Wollte kein neuen Thread aufmachen,habe nämlich eine ähnliche Frage.
Bin auch gerade dabei eine Wizard Page zu bauen und scheitere daran das Textfeld oder den Button des FileFieldEditors anzusprechen,um bei verändertem Inhalt im Textfeld vom FileFieldEditors daraufhin meinen DirectoryFieldEditor zu "disablen".
Ist das möglich?
Die obige Antwort basiert darauf den FileFieldEditor ganz weg zu lassen,was ich jedoch nicht möchte,da die Eclipse Wizards meines Erachtens auch auf den jeweiligen Editoren basieren.In Eclipse wird das "disablen" durch RadioButtons gehandelt.Wenn jemand diese Möglichkeit aufzeigen würde,wäre ich natürlich auch sehr dankbar.
 

Wildcard

Top Contributor
Die obige Antwort basiert darauf den FileFieldEditor ganz weg zu lassen,was ich jedoch nicht möchte,da die Eclipse Wizards meines Erachtens auch auf den jeweiligen Editoren basieren.In Eclipse wird das "disablen" durch RadioButtons gehandelt.Wenn jemand diese Möglichkeit aufzeigen würde,wäre ich natürlich auch sehr dankbar.
Die FieldEditors sind aber nicht für Wizards gedacht. Wie in der API Doc steht, werden sie normal nur im Zusammenhang mit einer entsprechenden Preference Page und dem Preference Store verwendet.
Field editors should be used in conjunction with a field editor preference page (FieldEditorPreferencePage) which coordinates everything and provides the message line which display messages emanating from the editor.

Das Databinding wie von 'mimo' gezeigt ist ein sauberer Weg. Wenn man sowieso schon ein anständiges Datenmodell (am besten EMF) dahinter liegen hat, dann fällt auch der ganze PCS Boiler Plate Code weg.
 

maestr0

Bekanntes Mitglied
Habs jetzt hinbekommen:)Nun habe ich noch eine weitere Frage.Die WizardPage steht soweit,aber wie schaffe ich es nun das ausgewählte Projekt im Package Explorer in einem Path oder String zu speichern und dem Import Wizard zu übergeben.Daraufhin muss man auf meiner Import Page den FileDialog nicht benutzen,da der Pfad von dem ausgewählten Projekt schon im Textfeld steht.Bin im Internet auf IResource gestoßen,wenn das etwas damit zu tun hat.Was dieses Interface angeht blick ich aber nicht ganz durch.
 

maestr0

Bekanntes Mitglied
Habe es nun endlich selber herausgefunden.

IStructuredSelection ss = (IStructuredSelection) selection;
Object firstElement = ss.getFirstElement();
if (firstElement instanceof IAdaptable)
{
IProject project = (IProject)((IAdaptable)firstElement).getAdapter(IProject.class);
IPath path = project.getLocation();
System.out.println(path);
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
Z Swing JOptionPane import AWT, Swing, JavaFX & SWT 5
M error: package javafx.scene.web is not visible import javafx.scene.web.*; AWT, Swing, JavaFX & SWT 16
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
H import javafx. Anweisungen funktioniert nicht AWT, Swing, JavaFX & SWT 2
K Eclipse-Java Export/Import mit Oberfläche AWT, Swing, JavaFX & SWT 2
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
T The import javax.vecmath cannot be resolved AWT, Swing, JavaFX & SWT 2
B SWT Hello World-Anwendung mit GUI in Eclipse -Problem mit Import von SWT AWT, Swing, JavaFX & SWT 9
S import von Klassen (zwei Panels eine Form) AWT, Swing, JavaFX & SWT 39
A Problem beim Import! AWT, Swing, JavaFX & SWT 2
F Kein JavaFX mehr im Eclipse Wizard AWT, Swing, JavaFX & SWT 1
Z ProgressBar in Eclipse mit Wizard page? AWT, Swing, JavaFX & SWT 1
A JFace Wizard: Ist es möglich eine Page zu löschen? AWT, Swing, JavaFX & SWT 2
T Wizard mit NEXT Button erstellen AWT, Swing, JavaFX & SWT 11
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
R SWT Wizard schließen AWT, Swing, JavaFX & SWT 2
G Swing Wizard API AWT, Swing, JavaFX & SWT 3
M Ecipse Wizard starten AWT, Swing, JavaFX & SWT 6
D SWT JFace Wizard Progressbar AWT, Swing, JavaFX & SWT 4
S Wizard Tutorial AWT, Swing, JavaFX & SWT 12
G Button im Wizard ändern AWT, Swing, JavaFX & SWT 3
J wizard "finish" disable AWT, Swing, JavaFX & SWT 5
7 SWT-Composite für Wizard, Event finden? AWT, Swing, JavaFX & SWT 5
B Wizard erstellen AWT, Swing, JavaFX & SWT 6
A Dialog! Kontrolle! Wie komme ich aus dem Wizard raus??? AWT, Swing, JavaFX & SWT 15
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben