LocalWorkspaceChangesView - selecting TreeItem in the pending changes view
Hello to the forum members,
I am selecting a certain TreeItem in the pending changes view: First I get the TreeViewer from LocalWorkspaceChangesView using getActiveViewer(). Then I get the Tree control using TreeViewer.getTree() and after I locate the required TreeItem I call Tree.setSelection(TreeItem).
The problem: When I right-click on the selected TreeItem, I cannot see "Check-in" option if the item is unresolved. If I right-click on the item again, "Check-in" appears. I tried to see if the related command (com.ibm.team.filesystem.ide.ui.command.checkin, if I understand correctly) has some condition for the menu display, I did not find one. So, my current proposed solution is to use java.awt.Robot to generate mouse-click on the selected item.
I'm quite sure there is a more elegant solution to this issue. I will be grateful if you could share it with me.
Many thanks in advance,
Gidi
I am selecting a certain TreeItem in the pending changes view: First I get the TreeViewer from LocalWorkspaceChangesView using getActiveViewer(). Then I get the Tree control using TreeViewer.getTree() and after I locate the required TreeItem I call Tree.setSelection(TreeItem).
The problem: When I right-click on the selected TreeItem, I cannot see "Check-in" option if the item is unresolved. If I right-click on the item again, "Check-in" appears. I tried to see if the related command (com.ibm.team.filesystem.ide.ui.command.checkin, if I understand correctly) has some condition for the menu display, I did not find one. So, my current proposed solution is to use java.awt.Robot to generate mouse-click on the selected item.
I'm quite sure there is a more elegant solution to this issue. I will be grateful if you could share it with me.
Many thanks in advance,
Gidi
Comments
Gidi Gal
Oct 30 '16, 12:20 p.m.Some improvement for my solution: instead of using java.awt.Robot I'm using org.eclipse.swt.widgets.Display.post(Event), so I don't mix AWT and SWT.
Gidi Gal
Oct 31 '16, 2:12 p.m.Well, the Display.post seems to be unreliable, so I'm back to the AWT solution, though I have my doubts about it as well... I did some more digging in RTC SDK, I found SaveIntoActivityContributionItem, if I understand correctly, it is related to "New change set" menu option under "Check in". I see in com.ibm.team.filesystem.ui.changes.views.Actions that it is added to the menu when SaveIntoActivityContributionItem.isNeeded returns true. isNeeded returns true according to returned local changes from call to ComponentSyncUtil.filter. So, I guess that when I select through API, local changes are empty, so SaveIntoActivityContributionItem is not added to the menu.
If you have idea how to update IComponentSyncModel so local changes will be filled according to the selection I did, I'll be grateful for your input. I tried calling IComponentSyncModel.refresh, but it did not do the trick.
Thanks,
Gidi
Gidi Gal
Nov 01 '16, 10:37 a.m.A bit better solution:
void org.eclipse.swt.widgets.Widget.notifyListeners(int eventType, Event event)
with the arguments SWT.Selection and new Event().
I activate it on the Tree instance after I call setSelection.