Hallo allerseits,
EDIT: problem hat sich gelöst, wie immer, dann wenn man mal nachfragt kommt 5 minuten später die lösung daherspaziert. --> hab ein notifyListeners() vergessen. :roll:
Ich beschäftige mich seit ein paar Tagen mit RCP und stehe im Moment einfach total an.
Die Tutorials im Netz sind alle wunderbar, nur sobald ich anfange darauf aufbauend weiter zu programmiern fehlt es mir an Hintergrundwissen.
Mein Problem ist folgendes. Ich habe eine Liste von Personen und möchte mit einem Wizard Personen hinzufügen. Der Wizard klappt wunderbar, die Person ist auch hinzugefügt jedoch bekomm ich es einfach nicht hin den View in dem die Personen zu sehen ist upzudaten um die neue Person anzuzeigen.
Ich habe mir dazu schon folgenden Thread angesehen: http://java-forum.org/de/viewtopic.php?t=68656&highlight=view+updaten, bin jedoch auch damit nicht weit gekommen.
Vom Prinzip her ist mir klar, dass ich irgendwo einen Listener brauche der wenn die Person hinzugefügt wurde den View updated - Nur wie update ich die View - was muss ich aufrufen um den View mal zu clearen. Ich denke dabei an folgenden Ablauf:
removeEverything <-- wie mach ich das?
und dann einfach noch creatPartControl aufrufen
Ist das die richtige Variante?
Anbei mein Code vom View und dem ContentProvider:
View:
ContentProvider:
Ziel ist es in der refreshView() Methode den View neu aufzubauen. Was ich dabei bis jetzt nicht hinbekommen hab war es den View überhaupt erstmal komplett zu clearen, löschen, removen was auch immer es braucht um den Inhalt neu aufbauen zu können.
clear, remove und refresh haben dabei eben nichts geholfen.
Ich bin dankbar für jeden Denkanstoss oder Code Schnippsel.
Stehe einfach an!
mfg
-stone
EDIT: problem hat sich gelöst, wie immer, dann wenn man mal nachfragt kommt 5 minuten später die lösung daherspaziert. --> hab ein notifyListeners() vergessen. :roll:
EDIT: problem hat sich gelöst, wie immer, dann wenn man mal nachfragt kommt 5 minuten später die lösung daherspaziert. --> hab ein notifyListeners() vergessen. :roll:
Ich beschäftige mich seit ein paar Tagen mit RCP und stehe im Moment einfach total an.
Die Tutorials im Netz sind alle wunderbar, nur sobald ich anfange darauf aufbauend weiter zu programmiern fehlt es mir an Hintergrundwissen.
Mein Problem ist folgendes. Ich habe eine Liste von Personen und möchte mit einem Wizard Personen hinzufügen. Der Wizard klappt wunderbar, die Person ist auch hinzugefügt jedoch bekomm ich es einfach nicht hin den View in dem die Personen zu sehen ist upzudaten um die neue Person anzuzeigen.
Ich habe mir dazu schon folgenden Thread angesehen: http://java-forum.org/de/viewtopic.php?t=68656&highlight=view+updaten, bin jedoch auch damit nicht weit gekommen.
Vom Prinzip her ist mir klar, dass ich irgendwo einen Listener brauche der wenn die Person hinzugefügt wurde den View updated - Nur wie update ich die View - was muss ich aufrufen um den View mal zu clearen. Ich denke dabei an folgenden Ablauf:
removeEverything <-- wie mach ich das?
und dann einfach noch creatPartControl aufrufen
Ist das die richtige Variante?
Anbei mein Code vom View und dem ContentProvider:
View:
Code:
public class View1 extends ViewPart {
public static final String ID = "project1.views.View1";
private Action doubleClickAction;
private Action singleClickAction;
private TableViewer viewer;
private IViewSite viewSite;
private Composite parent;
private MyModel model;
public void createPartControl(Composite parent) {
this.parent = parent;
viewSite = getViewSite();
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);
viewer.setContentProvider(new MyContentProvider(viewer, this));
viewer.setLabelProvider(new MyLabelProvider(this));
viewer.getTable().setLinesVisible(true);
viewer.setInput(getViewSite());
// New
hookDoubleClickAction();
hookSingleClickAction();
contributeActions();
getSite().setSelectionProvider(viewer);
// New contextm
MenuManager menuManager = new MenuManager();
Menu menu = menuManager.createContextMenu(viewer.getTable());
// Set the MenuManager
viewer.getTable().setMenu(menu);
getSite().registerContextMenu(menuManager, viewer);
// Make the selection available
getSite().setSelectionProvider(viewer);
}
public void setFocus() {
viewer.getControl().setFocus();
}
public void refreshView() {
System.out.println("refreshView()");
viewer.refresh();
}
// New
private void hookDoubleClickAction() {
viewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
doubleClickAction.run();
}
});
}
.............. hier gehts dann weiter mit doubleclick und singleclick Listenern
ContentProvider:
Code:
public class MyContentProvider implements IStructuredContentProvider, PropertyChangeListener {
private MyModel content;
private final Viewer viewer;
private View1 view;
public MyContentProvider(Viewer viewer, View1 view) {
this.viewer = viewer;
this.view = view;
content = new MyModel();
content.addChangeListener(this);
}
@Override
public Object[] getElements(Object inputElement) {
return content.getPersons().toArray();
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO Auto-generated method stub
}
@Override
public void propertyChange(PropertyChangeEvent arg0) {
// viewer.refresh();
view.refreshView();
}
}
Ziel ist es in der refreshView() Methode den View neu aufzubauen. Was ich dabei bis jetzt nicht hinbekommen hab war es den View überhaupt erstmal komplett zu clearen, löschen, removen was auch immer es braucht um den Inhalt neu aufbauen zu können.
clear, remove und refresh haben dabei eben nichts geholfen.
Ich bin dankbar für jeden Denkanstoss oder Code Schnippsel.
Stehe einfach an!
mfg
-stone
EDIT: problem hat sich gelöst, wie immer, dann wenn man mal nachfragt kommt 5 minuten später die lösung daherspaziert. --> hab ein notifyListeners() vergessen. :roll: