eclipse rcp - The standard 'Select all' command doesn't work -
i have tableviewer within view , use org.eclipse.ui.edit.selectall command select rows using standard ctrl+a shortcut.
when put tracing on can see handlerauthority class resolves conflicts , output looks this:
handlers >>> command('org.eclipse.ui.edit.selectall') has changed 'org.eclipse.ui.internal.handlers.selectallhandler' handler handlers >>> resolveconflicts: eval: handleractivation(commandid=org.eclipse.ui.edit.selectall, handler=org.eclipse.ui.internal.handlers.selectallhandler@2a3e58, expression=,sourcepriority=0) handlers >>> resolved conflict detected. following activation won: handlers >>> handleractivation(commandid=org.eclipse.ui.edit.selectall, handler=org.eclipse.ui.internal.handlers.selectallhandler@2a3e58, expression=,sourcepriority=0) handlers >>> resolveconflicts: eval: handleractivation(commandid=org.eclipse.ui.edit.selectall, handler=org.eclipse.ui.internal.handlers.selectallhandler@2a3e58, expression=,sourcepriority=0) handlers >>> resolved conflict detected. following activation won: handlers >>> handleractivation(commandid=org.eclipse.ui.edit.selectall, handler=org.eclipse.ui.internal.handlers.selectallhandler@2a3e58, expression=,sourcepriority=0) handlers >>> resolveconflicts: eval: handleractivation(commandid=org.eclipse.ui.edit.selectall, handler=actionhandler(retargetaction(selectall)), expression=activeshellexpression(shell {spl v0.1.2 (vyvoj) (db test)}),sourcepriority=17408) handlers >>> resolveconflicts: eval: handleractivation(commandid=org.eclipse.ui.edit.selectall, handler=org.eclipse.ui.internal.handlers.selectallhandler@2a3e58, expression=,sourcepriority=0) handlers >>> resolved conflict detected. following activation won: handlers >>> handleractivation(commandid=org.eclipse.ui.edit.selectall, handler=actionhandler(retargetaction(selectall)), expression=activeshellexpression(shell {spl v0.1.2 (vyvoj) (db test)}),sourcepriority=17408) handlers >>> command('org.eclipse.ui.edit.selectall') has changed 'actionhandler(retargetaction(selectall))' handler
when press ctrl+a can see:
keys >>> listener.handleevent(type = keydown, statemask = 0x0, keycode = 0x40000, time = 9403459, character = 0x0) keys >>> listener.handleevent(type = keydown, statemask = 0x40000, keycode = 0x61, time = 9403553, character = 0x1) keys >>> workbenchkeyboard.press(potentialkeystrokes = [ctrl+a]) keys >>> workbenchkeyboard.executecommand(commandid = 'org.eclipse.ui.edit.selectall', parameters = {}) keys >>> not handled
debugging retargetaction found action not handled because has no handler set.
so question is, why handlerauthority sets retargetaction handler org.eclipse.ui.edit.selectall command? use default 1 (org.eclipse.ui.internal.handlers.selectallhandler).
all actions intended implemented multiple views , editors use retargetaction
. hook in retarget action in view this:
iactionbars bars = getviewsite().getactionbars(); bars.setglobalactionhandler(actionfactory.select_all.getid(), selectallaction);
where selectionallaction
action
select on table. action might like:
class selectallaction extends action { private final tableviewer tableviewer; selectallaction(final treeviewer viewer) { tableviewer = viewer; } @override public void run() { tableviewer.gettable().selectall(); // table view selection synchronized table selection tableviewer.setselection(tableviewer.getselection()); } }
Comments
Post a Comment