import org.argeo.ArgeoException;
import org.argeo.eclipse.ui.ErrorFeedback;
+import org.argeo.eclipse.ui.utils.CommandUtils;
import org.argeo.jcr.ArgeoJcrConstants;
import org.argeo.jcr.ArgeoNames;
import org.argeo.jcr.ArgeoTypes;
RemoteRepositoryLoginDialog dlg = new RemoteRepositoryLoginDialog(
Display.getDefault().getActiveShell());
if (dlg.open() == Dialog.OK) {
+ CommandUtils.callCommand(Refresh.ID);
}
return null;
}
import org.argeo.eclipse.ui.TreeParent;
import org.argeo.eclipse.ui.jcr.views.AbstractJcrBrowser;
+import org.argeo.jcr.ui.explorer.JcrExplorerPlugin;
import org.argeo.jcr.ui.explorer.utils.JcrUiUtils;
+import org.argeo.jcr.ui.explorer.views.GenericJcrBrowser;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
/**
* Force the selected objects of the active view to be refreshed doing the
*/
public class Refresh extends AbstractHandler {
+ public final static String ID = JcrExplorerPlugin.ID + ".refresh";
+
public Object execute(ExecutionEvent event) throws ExecutionException {
- ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
- .getActivePage().getSelection();
- AbstractJcrBrowser view = (AbstractJcrBrowser) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(HandlerUtil.getActivePartId(event));
- if (selection != null && selection instanceof IStructuredSelection) {
+
+ AbstractJcrBrowser view = (AbstractJcrBrowser) JcrExplorerPlugin
+ .getDefault().getWorkbench().getActiveWorkbenchWindow()
+ .getActivePage().getActivePart();//
+
+ ISelection selection = JcrExplorerPlugin.getDefault().getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage().getSelection();
+
+ if (selection != null && selection instanceof IStructuredSelection
+ && !selection.isEmpty()) {
Iterator<?> it = ((IStructuredSelection) selection).iterator();
while (it.hasNext()) {
Object obj = it.next();
view.refresh(obj);
}
}
- }
+ } else if (view instanceof GenericJcrBrowser)
+ ((GenericJcrBrowser) view).refresh(null); // force full refresh
+
return null;
}
}
doRefresh = true;
}
} else if (element instanceof RepositoriesElem) {
- RepositoriesElem rn = (RepositoriesElem) element;
- if (element.getChildren().length != rn.getRepositoryRegister()
- .getRepositories().size())
- doRefresh = true;
+ doRefresh = true;
+ // Always force refresh for RepositoriesElem : the condition
+ // below does not take remote repository into account and it is
+ // not trivial to do so.
+
+ // RepositoriesElem rn = (RepositoriesElem) element;
+ // if (element.getChildren().length !=
+ // rn.getRepositoryRegister()
+ // .getRepositories().size())
+ // doRefresh = true;
}
if (doRefresh) {
element.clearChildren();
nodesViewer.setComparer(new NodeViewerComparer());
}
+ @Override
+ public void refresh(Object obj) {
+ // Enable full refresh from a command when no element of the tree is
+ // selected
+ if (obj == null) {
+ Object[] elements = nodeContentProvider.getElements(null);
+ for (Object el : elements) {
+ if (el instanceof TreeParent)
+ JcrUiUtils.forceRefreshIfNeeded((TreeParent) el);
+ getNodeViewer().refresh(el);
+ }
+ }
+ super.refresh(obj);
+ }
+
/**
* To be overridden to adapt size of form and result frames.
*/