RCP Eigene Klasse für Views

adipure

Mitglied
Hallo,
ich bin gerade dabei mich in Eclipse RCP einzuarbeiten. Meine Programmierkenntnisse sind mittelmäßig...
Meine eigentliche Frage ist jetzt, ich hab mir eine View erzeugt mit der man Personen suchen kann und aus dieser View kann dann ein Editor Fenster aufgerufen werden. Nun möchte ich das Design (also die GUI) und die Logik dahinter nocheinmal für eine Personensuche aber in einem anderen Kontext benutzen... Den ganzen Code jetzt einfach zu kopieren ist natürlich Schwachsinn, aber das Auslagern in eine eigene Klasse funktioniert auch nicht irgendwie, weil ich da Probleme mit den addActionListener der Buttons bekomme....
Würd mir also das Ganze so vorstellen, dass ich eine Klasse hab die mir das Design+das bisschen Logik bereitstellt und ich diese Klasse dann in meinen verschiedenen Views aufrufe...
Könnt ihr mir da vl hilfreiche Tipps geben???!

Danke
 
Hört sich nach einem Fall für Refactoring an.
Überlege dir was die Unterschiede und Gemeinsamkeiten der beiden Varianten sind.
Dann extrahierst du die Gemeinsamkeiten in eine abstrakte Klasse und erzeugst dann zwei konkrete Subklassen für die spezifischen Fälle.
Wenn das eine sehr aufwändige View ist können evtl. Extension Points sinnvoll sein, aber meistens genügt die gute alte abstrakte Klasse.
 
unterschiede gibt es nur bei der Beschriftung die TextFelder, Buttons, ComboBox und die Tabelle sind dieselben...
wie mach ich das dann mit den ActionListeneners bei den Buttons weil die hab ich jz immer direkt bei den Buttons hinzugefügt nur mit addActionListener nur jz müssen dann eben zwei verschiedene Actions aufgerufen werden
 
wie mach ich das dann mit den ActionListeneners bei den Buttons weil die hab ich jz immer direkt bei den Buttons hinzugefügt nur mit addActionListener nur jz müssen dann eben zwei verschiedene Actions aufgerufen werden
Das ist jetzt keine hohe Softwarekunst, aber ich kenne deinen Code nicht und 'you'll get the idea'
Mach in der abstrakten Klasse eine protected Button getXYButton().
In der Implementierung dann
Java:
getXYButton().addSelectionListener(new SelectionAdapter());
 
meine eigene View müsste dann von ViewPart und meiner anderen abstrakten Klasse erben. Da ich einmal die GUI+Logik in einer View haben möchte und einmal in einem Dialog... nur in Java gibt es doch keine Mehrfachvererbung... Wie könnte man das Problem trotzdem lösen??
 
Zuletzt bearbeitet:
meine eigene View müsste dann von ViewPart und meiner anderen abstrakten Klasse erben. Da ich einmal die GUI+Logik in einer View haben möchte und einmal in einem Dialog... nur in Java gibt es doch keine Mehrfachvererbung... Wie könnte man das Problem trotzdem lösen??

Indem du deine abstrakte Klasse(AbstractViewPart) von ViewPart erben lässt.
 
Insgesamt sind es zwei Views und ein Dialog-Fenster wo ich diese Klasse bräuchte..
das heißt ich mach mir eine Klasse die von Composite erbt und lass dann die Views und das Dialog-Fenster von dieser Klasse erben
 
Zuletzt bearbeitet:
Insgesamt sind es zwei Views und ein Dialog-Fenster wo ich diese Klasse bräuchte..
das heißt ich mach mir eine Klasse die von Composite erbt und lass dann die Views und das Dialog-Fenster von dieser Klasse erben

Kommt auf deine Gemeinsamkeiten drauf an.

Wenn du GUI(Layout Button usw.)Gemeinsamkeiten hast addest du die am besten auf ein Composite und dieses Composite instanzierst in deinen anderen Klassen (Assoziation KEINE Vererbung)...
 
jz ist nur die Frage wie lös ich das Problem mit den SelectionListenern bei den Buttons?? weil die Buttons public zu machen und dann in der jeweiligen Klasse mit addSelectionListener etwas hinzufügen find ich nicht besonders sauber... gibts da eine andere Möglichkeit?
 
jz ist nur die Frage wie lös ich das Problem mit den SelectionListenern bei den Buttons?? weil die Buttons public zu machen und dann in der jeweiligen Klasse mit addSelectionListener etwas hinzufügen find ich nicht besonders sauber... gibts da eine andere Möglichkeit?

Hat Wildcard doch schon geschrieben. getMethoden oder abstrakte methoden die du überschreiben musst.
 

Zurück
Oben