java - How can I make a view selection independent from SelectionProvider? -
i got emf tree viewer , tableview gets objects tree viewer of specific class. synchronize tableview row selection corresponding object in tree viewer, opening properties view.
i tried setting registry iselectionprovider , getviewsite().setselectionprovider(registry); using wrapper ipropertysheetpage.
the main problem tableview selection weird (when click, selection blue border around row, , in second click selection normal) , guess because tableview listens selection provider. there way bypass that? using javafx tableview.
weird selection:
selection in second click:
in createpartcontrol:
view.getselectionmodel().selecteditemproperty().addlistener((obs, oldselection, newselection) -> { list<object> eolist = new arraylist<object>(); (simplerow row : view.getselectionmodel().getselecteditems()) { if (null != row.geteobject()) eolist.add(row.geteobject()); } ; minimalplugin.getdefault().getregistry().setselection(new structuredselection(eolist)); }); getviewsite().setselectionprovider(minimalplugin.getdefault().getregistry()); at getadapter:
@override public object getadapter(class adapter) { if (adapter == ipropertysheetpage.class) { if (null == propertypage) propertypage = new propertysheetwrapper(); return propertypage; } return super.getadapter(adapter); } the emf tree viewer selection listener:
iworkbench wb = platformui.getworkbench(); iworkbenchwindow win = wb.getactiveworkbenchwindow(); win.getactivepage().addselectionlistener(new iselectionlistener() { @override public void selectionchanged(iworkbenchpart part, iselection selection) { if (selection instanceof structuredselection) { structuredselection sel = (structuredselection) selection; if (sel.getfirstelement() instanceof eobject) { // property sheet page editor if (part instanceof ieditorpart) { editorpart = (ieditorpart) part; ipropertysheetpage newpropertypage = editorpart.getadapter(ipropertysheetpage.class); if (null != newpropertypage && newpropertypage instanceof extendedpropertysheetpage) { propertypage.setpropertysheetpage((extendedpropertysheetpage) newpropertypage); } } eobject object = (eobject) sel.getfirstelement(); eobject root = ecoreutil.getrootcontainer(object); populatefromroot(root); } } } }); populatefromroot() method redraws tableview found objects.


Comments
Post a Comment