Eclipse RCP - Databinding

tech84

Mitglied
Hi,

ich bin ziemlicher RCP Neuling und arbeite mich zurzeit ein..
Nun möchte ich meine GUI auf eine saubere Art und Weise von der Logik trennen, bin dabei auf folgendes tutorial gestoßen:

Eclipse JFace Databinding - Tutorial

ich finde den Artikel auch wirklich super beschrieben, die Beispiele funktionieren auch und leuchten ein. Nun habe ich eine grundlegende Frage..

Ich möchte bspw. eine Gui entwickeln, die lediglich aus zwei Textfelder und einem Button besteht (ganz trivial). Nun soll bei einem Buttonklick der Wert des oberen Textfeldes übergeben werden, eine Datenbankabfrage gestartet werden und das Ergebnis entsprechend im zweiten Textfeld angezeigt werden.

Die Textboxen habe ich wie in dem Beispiel verbunden, Model habe ich auch. Mir stellt sich jetzt nur die Frage, ob es im Sinne des Erfinders ist, wenn ich nun beim Buttonklick einen Controlleraufruf starte. In dem Beispielen wird dort ja immer nur auf das Model zugegriffen..

also sowas in der Art:

[Java] dbContent.setText(controller.generateDbContent(testNr.getText())); [/code]

mein Controller würde dann entsprechend so aussehen:

Java:
public class Controller(){
 Model model;

public Controller(){
model = new Model();
}


public String generateDbContent(String testNr) {


// ist nur ein beispiel

}


wäre das so in Ordnung? Schonmal im Vorraus danke :)

gruß,

Mo
 

SegFault

Bekanntes Mitglied
Warum sollte das ganze nicht in ordnung sein? Ich glaube aber da würde das Databinding noch nicht direkt greifen. Da du programmatisch das zweite Textfeld füllst. Willst du den Wert den du aus der DB liest dann auch in das gebundene feld schreiben kann es sein das du noch sowas wie ein propertychange senden musst, aber da bin ich mir nicht ganz sicher.
 

tech84

Mitglied
Danke für die Antwort. Ich gehe ja auch davon aus, dass es in Ordnung ist. Möchte da nur sichergehen :) Dann müsste ich aber ausschließlich mit dem Controller in der view arbeiten,richig? Also auch wenn ich das Model ändern wollte - entsprechende Methoden in den Controller packen der das model ändert, richtig?
 
Zuletzt bearbeitet:

SegFault

Bekanntes Mitglied
wenn man strikt eine MVC trennung haben möchte wäre das ideal. Spätestens wenn du solche Sachen im Team entwickels kann man das nicht mehr durchsetzen da einige Leute meist aus der reihe Tanzen und Controll Typische Sachen woanders hinpacken. Allgemein ist es manchmal sogar wirklich schwierig, Programmteile eindeutig den Control/View/oder Modell zuzuordnen.
 

tech84

Mitglied
Dann wäre ja soweit alles geklärt und ich kann mal herumexperimentieren ;-) Eine kleine Frage hätte ich allerdings noch. Wie sollte ich vorgehen, wenn mehrere Views auf ein Model zugreifen? Bspw wird eine Datei eingelesen und im Model abgelegt - auf die Daten in diesem model würde ich dann mit einer view (bspw. Anzeigen einer Tabelle) und einem Dialog (PDF-Export) zugreifen. Dialog und View hätten eigene Menüpunkte (Tabelle anzeigen/ PDF-Export)...? :autsch: Ich hatte vorher mal mit Singelton experimentiert, aber wollte das ja nun mit dem Databinding machen..

Wenn ihr mir die Frage noch beantworten würdet, wäre mein Wissensdurst schonmal ein bisschen gestillt ;-)

Gruß,

tech
 

SegFault

Bekanntes Mitglied
Databinding ist ja unabhängig vom MVC prinzip. Du bindest ja nur steuerelementinhalte an einzelne klassen. Du könntest da unterschiedlich rangehen. Du könntest im Control funktionen anbieten wie
myControl.openEditor(Mymodel file)
beim Speichern der View oder des dialogs gibts halt sowas wie einen Aufruf
myControl.change(Mymodel file) diese funktion benachrichtig alle weiteren views die irgendwas vom Modell anzeigen sollen das sich was geändert hat. (Hier ist schon der erste punkt wo man Control/Model und View nicht wirklich perfekt trennen kann)
Ich persönlich hatte sowas etwas anders gelöst. Die Modellklassen unterstützen propertychange events. Jedes View welches eine solche Klasse darstellt meldet sich bei dieser als Propertychangelistener an. Beim speichern der Modellklassen feuer ich das propertychangeevent. Damit updaten sich alle Viewer automatisch. Aber mit dem Prinzip kommt man vom strikten MVC prinzip weg.
Das Singleton Prinzip ist aber für den Controller gar nicht mal schlecht, da die meisten Anwendungen eh nur einen Controller haben.
 

tech84

Mitglied
hm ok das wäre ein Ansatz - danke erstmal dafür. Aber habe ich das denn richtig verstanden, dass durch dieses Databinding quasi diese Observable Geschichte überflüssig ist? Weil ich dann ja direkt model/view gleich halte? Bin was MVC Kapselung angeht noch nicht so wirklich fit :-/
 

SegFault

Bekanntes Mitglied
Direkt wird das mit dem Observable wohl nicht überflüssig. Kann ich aber auch nicht genau beurteilen da ich damit noch wenig zu tun haben. Sofern aber andere Oberflächen genau dieses Objekt anzeigen musst du sie über änderungen informieren damit die Oberflächen den Inhalt updaten. Das kann man natürlich auch über ein Observable machen. Mal schnell beurteilt würde ich sagen das der PropertyChangeSupport sowas ähnliches wie ein Observable ist nur das man im PropertyChangeSupport noch die Property angeben kann auf deren änderung man hören will.
 

tech84

Mitglied
Hm, wie stelle ich das an, dass das model mit der view synchron bleibt? Wenn ich ´nen controlleruafruf mache und darin´n neues model erstelle, ist das ganze ja nicht mehr synchron mit den gui-elementen...

Oder soll ich in der view´nen model erstellen und das direkt dem controller übergeben. Aber dieses übergebene model mit den gui-elementen "verbinden"??
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E OSGi Eclipse Plug-in programmierung: java.lang.NullPointerException: Cannot enter synchronized block because "profile" is null Plattformprogrammierung 4
R Eclipse Bundles Plattformprogrammierung 2
Robertop RCP Command in bereits bestehendes Eclipse-Menü einbauen Plattformprogrammierung 4
T Java Projekt läuft nur in Eclipse Plattformprogrammierung 6
M Eclipse Plugin PreferencePage BooleanFieldEditor Plattformprogrammierung 1
F OSGi Plugin unter Eclipse arbeitet anders als wenn veröffentlicht Plattformprogrammierung 2
D RCP P2-Repository für Eclipse-Plugins Plattformprogrammierung 0
M Debuging in Eclipse Annotations Processor Plattformprogrammierung 0
D Nach Sprachpaket Installation kann eclipse nicht mehr gestartet werden Plattformprogrammierung 4
L0MiN Wie kann ich ein Klassendiagramm aus Eclipse heraus erstellen? Plattformprogrammierung 5
M Eclipse Probleme beim Ausführen eines Programms Plattformprogrammierung 3
feinperligekohlensaeure Eclipse Workspace gemeinsam Nutzen -> keine .project Datei Plattformprogrammierung 1
F Eclipse Build Path auf benötigte Projekte Plattformprogrammierung 4
B Daten von Eclipse extern sichern Plattformprogrammierung 2
B Eclipse zeigt Fehler nach Java-Update auf 1.8.0_40 Plattformprogrammierung 3
VfL_Freak [Eclipse] Fehleranzeige im Reiter "Problems" Plattformprogrammierung 1
S Errors in workspace bei eclipse Plattformprogrammierung 3
T eclipse bietet keine META-INF an Plattformprogrammierung 1
N Eclipse wo starten Plattformprogrammierung 6
A Eclipse schließt einfach ohne Fehlermeldung Plattformprogrammierung 4
W Eclipse vergißt beim Exportieren Resources-Ordner Plattformprogrammierung 11
A RCP Eclipse e4 und Injection-Contexts Plattformprogrammierung 0
K Eclipse fährt nicht mehr hoch. Metadatendatei schuld? Plattformprogrammierung 7
C [Eclipse RCP E4]InjectionException: no actual value was found for the argument "MDirtyable" Plattformprogrammierung 8
T Eclipse Eigenschaften hinzufügen Plattformprogrammierung 2
M RCP [Eclipse RCP 3.4] ViewTab Kontextmenu "Alle schließen" Plattformprogrammierung 0
D Problem mit eclipse Plattformprogrammierung 2
S Verschieben des Verzeichnis .eclipse aus Userprofile Plattformprogrammierung 3
A RCP Kann kein Eclipse 4 Projekt anlegen Plattformprogrammierung 0
S RCP Exportiertes RCP Produkt lädt Datei nicht, bei Start aus Eclipse wird Datei jedoch gefunden Plattformprogrammierung 6
G Eine Library in Eclipse zur Verfügung stellen Plattformprogrammierung 14
Gregorrr Eclipse RCP Product Build-Nummer + Jenkins Plattformprogrammierung 6
R Einfaches Eclipse-Plugin-Beispiel funktioniert nicht Plattformprogrammierung 5
H OSGi OSGi + Logback + slf4j - Eclipse Run Configuration Plattformprogrammierung 7
C plugin development environment eclipse Plattformprogrammierung 4
R RCP Commands nutzen / org.eclipse.ui.file.save Plattformprogrammierung 7
O Installiere externe Methode "containsNone" in Eclipse Plattformprogrammierung 2
M Keybinding in Eclipse Plugin Plattformprogrammierung 3
TheWhiteShadow RCP Konstrukt für Editor in Eclipse gesucht. Plattformprogrammierung 3
B Eclipse Probleme mit build Plattformprogrammierung 8
H Keine Hilfe/API mehr in Eclipse Juno? Plattformprogrammierung 4
B Neue SuppressWarning in Eclipse Juno Plattformprogrammierung 6
B Eclipse Property Page Plattformprogrammierung 6
B Eclipse PreferencePage Plattformprogrammierung 3
B Eclipse Plugin Einstellungsleiste Plattformprogrammierung 2
B Birt-Previewer über Eclipse Plattformprogrammierung 14
J Eclipse Plug-In für UML-Diagramme Problem Plattformprogrammierung 4
O Eclipse Plugin - Einfachstes Problem, das es gibt. Plattformprogrammierung 2
R Eclipse RCP Tabellen-View (Anfängerfrage) Plattformprogrammierung 3
C Eclipse: Notification beim umbennen von Methoden? Plattformprogrammierung 4
schalentier Eclipse Sourcecode Plattformprogrammierung 4
A Eclipse undo/redo button reagiert nicht auf Änderungen in der OperationHistory Plattformprogrammierung 5
P Eclipse M2_REPO (NON MODIFIABLE) Plattformprogrammierung 8
B Eclipse: Contextmenu id erhalten? Plattformprogrammierung 9
H Datei in eclipse wird nicht erkannt Plattformprogrammierung 3
O Neues Tastenkürzel für Eclipse Editorfenster registrieren Plattformprogrammierung 2
3 Eclipse Editor Plugin selektiert Projekt nicht Plattformprogrammierung 10
Madlip RCP eclipse.ui.bindings (Key-Problematik) Plattformprogrammierung 2
S Eclipse vs. JavaMail vs. Ubuntu vs. Windows Plattformprogrammierung 3
M eclipse führt applikationen nicht mehr aus Plattformprogrammierung 6
S Eclipse: Auf CTRL-C/CTRL-V im Package Explorer? Plattformprogrammierung 4
M Eclipse und Hilfen Plattformprogrammierung 5
G Eclipse buggt rum!!! Plattformprogrammierung 4
B Eclipse RCP und Java 7 Plattformprogrammierung 7
G RCP Eclipse Editor + Guice Plattformprogrammierung 8
T RCP Eclipse RCP: Wo/wann im Plugin ist workbench initialisiert? Plattformprogrammierung 14
G Eclipse Plug-in: wie refreshe ich eine combobox? Plattformprogrammierung 4
M Eclipse Plug-in: Wie eine Grafik einfügen? Plattformprogrammierung 20
M RCP [Eclipse RCP] Feature Export und "Fehler"... Plattformprogrammierung 3
P Eclipse speichert keine Änderungen Plattformprogrammierung 5
M Eclipse - Dokumentation nicht über das Internet benutzen Plattformprogrammierung 3
C Eclipse Plugin NoClassDefFoundError Plattformprogrammierung 4
E org.eclipse.ui.dialogs.ListSelectionDialog erzeugt ClassNotFoundException zur Laufzeit Plattformprogrammierung 4
M Eclipse Plugin Entwicklung - NoClassDefFoundError Plattformprogrammierung 10
C RCP Verständnisfrage Eclipse/Equinox Plattformprogrammierung 4
D eclipse-RCP von der Konsole baut nicht Plattformprogrammierung 3
L RCP Eclipse Popupmenu im PackageExplorer erweitern? Plattformprogrammierung 7
C Eclipse Plugin Entwicklung: Editor für Flussdiagramme Plattformprogrammierung 6
S (OSGI - EQUINOX) Welche Eclipse IDE? Plattformprogrammierung 3
C Pdf in jar datei einbinden mit eclipse Plattformprogrammierung 23
G neuer branch in SVN mit Eclipse Plattformprogrammierung 6
F RCP eclipse rcp ohne eclipse? Plattformprogrammierung 15
dzim RCP Eclipse Provisioning Plattformprogrammierung 3
G RCP Abhängigkeiten von Eclipse Plugins Plattformprogrammierung 9
K Eclipse RCP, EMF, Hibernate Problem Plattformprogrammierung 7
B RCP eigenes Eclipse Plugin wird nicht aufgelöst Plattformprogrammierung 7
T Eclipse Helios XMLUnit importieren Plattformprogrammierung 6
R Verwendung pdfbox in Maven-Projekt in Eclipse Plattformprogrammierung 3
lumo RCP wechseln der Font von Eclipse per code Plattformprogrammierung 10
lumo RCP Eclipse internationalisierung Plattformprogrammierung 5
jemandzehage Kurze Fehlernachricht beim starten in Eclipse Plattformprogrammierung 5
A RCP java.lang.ClassNotFoundException: org.eclipse.core.runtime.adaptor.EclipseStarter Plattformprogrammierung 7
P Wie bekomme ich ICompilationUnit aus dem event? bei Eclipse-Plugin Plattformprogrammierung 3
Rudolf External Libs dauerhaft in Eclipse einbinden Plattformprogrammierung 3
G RCP Eclipse UI Forms Plattformprogrammierung 10
musiKk RCP Eclipse: Speichern von Spaltenbreiten Plattformprogrammierung 9
X Datei in einem Eclipse Projekt über Plugin zugreifen Plattformprogrammierung 2
P Eclipse Help: Wie Links zu anderer Hilfeseite setzen ? Plattformprogrammierung 5
F Eclipse EMF Modelltransformation Plattformprogrammierung 3
tfa RCP Compilereinstellungen festlegen bei Eclipse-Batch-Build Plattformprogrammierung 9

Ähnliche Java Themen


Oben