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:

weird selection

selection in second click:

enter image description here

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

Popular posts from this blog

php - isset function not working properly -

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -