]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/PartStateChanged.java
Plug automatic refresh of the transaction edition commands.
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / PartStateChanged.java
diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/PartStateChanged.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/PartStateChanged.java
new file mode 100644 (file)
index 0000000..2d43754
--- /dev/null
@@ -0,0 +1,112 @@
+package org.argeo.security.ui.admin.internal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.ArgeoException;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.contexts.IContextActivation;
+
+/** Manage transaction and part refresh while updating the security model */
+public class PartStateChanged implements IPartListener, IStartup {
+       private final static Log log = LogFactory.getLog(PartStateChanged.class);
+       IContextActivation contextActivation;
+
+       @Override
+       public void earlyStartup() {
+               Display.getDefault().asyncExec(new Runnable() {
+                       public void run() {
+                               try {
+                                       IWorkbenchPage iwp = PlatformUI.getWorkbench()
+                                                       .getActiveWorkbenchWindow().getActivePage();
+                                       if (iwp != null)
+                                               iwp.addPartListener(new PartStateChanged());
+                               } catch (Exception e) {
+                                       throw new ArgeoException(
+                                                       "Error while registering the PartStateChangedListener",
+                                                       e);
+                               }
+                       }
+               });
+       }
+
+       @Override
+       public void partActivated(IWorkbenchPart part) {
+               if (log.isTraceEnabled())
+                       log.trace("Part activated: " + part.getTitle() + " - "
+                                       + part.getClass());
+
+               // Try to avoid NPE when closing the application
+               IWorkbenchPartSite site = part.getSite();
+               if (site == null)
+                       return;
+               IWorkbenchWindow window = site.getWorkbenchWindow();
+               if (window == null)
+                       return;
+
+               // // Retrieve the service to enable/disable checkout button
+               // ISourceProviderService sourceProviderService =
+               // (ISourceProviderService) window
+               // .getService(ISourceProviderService.class);
+               // EditionSourceProvider esp = (EditionSourceProvider)
+               // sourceProviderService
+               // .getSourceProvider(EditionSourceProvider.EDITING_STATE);
+               // if (part instanceof IVersionedItemEditor) {
+               // IStatusLineManager manager = ((IEditorPart) part).getEditorSite()
+               // .getActionBars().getStatusLineManager();
+               // manager.setMessage(((IVersionedItemEditor) part)
+               // .getlastUpdateMessage());
+               //
+               // }
+               // if (part instanceof CmsEditable) {
+               // CmsEditable editor = (CmsEditable) part;
+               // // Processing the ability to checkout is delegated to the editor
+               // esp.setCurrentItemEditingState(editor.isEditing());
+               // } else {// force button to be disabled if another part has the focus.
+               // esp.setCurrentItemEditingState(true);
+               // }
+       }
+
+       @Override
+       public void partBroughtToTop(IWorkbenchPart part) {
+               // Nothing to do
+       }
+
+       @Override
+       public void partClosed(IWorkbenchPart part) {
+               // Nothing to do
+       }
+
+       @Override
+       public void partDeactivated(IWorkbenchPart part) {
+               // Always remove checkOut button when the editor is left.
+               // if (part instanceof IVersionedItemEditor) {
+               // // Try to avoid NPE when closing the application
+               // IWorkbenchPartSite site = part.getSite();
+               // if (site == null)
+               // return;
+               // IWorkbenchWindow window = site.getWorkbenchWindow();
+               // if (window == null)
+               // return;
+               //
+               // // Retrieve the service to enable/disable checkout button
+               // ISourceProviderService sourceProviderService =
+               // (ISourceProviderService) window
+               // .getService(ISourceProviderService.class);
+               // EditionSourceProvider esp = (EditionSourceProvider)
+               // sourceProviderService
+               // .getSourceProvider(EditionSourceProvider.EDITING_STATE);
+               // esp.setCurrentItemEditingState(true);
+               // }
+       }
+
+       @Override
+       public void partOpened(IWorkbenchPart part) {
+       }
+}
\ No newline at end of file