1 package org
.argeo
.security
.ui
.admin
.internal
;
3 import org
.apache
.commons
.logging
.Log
;
4 import org
.apache
.commons
.logging
.LogFactory
;
5 import org
.argeo
.ArgeoException
;
6 import org
.eclipse
.swt
.widgets
.Display
;
7 import org
.eclipse
.ui
.IPartListener
;
8 import org
.eclipse
.ui
.IStartup
;
9 import org
.eclipse
.ui
.IWorkbenchPage
;
10 import org
.eclipse
.ui
.IWorkbenchPart
;
11 import org
.eclipse
.ui
.IWorkbenchPartSite
;
12 import org
.eclipse
.ui
.IWorkbenchWindow
;
13 import org
.eclipse
.ui
.PlatformUI
;
14 import org
.eclipse
.ui
.contexts
.IContextActivation
;
16 /** Manage transaction and part refresh while updating the security model */
17 public class PartStateChanged
implements IPartListener
, IStartup
{
18 private final static Log log
= LogFactory
.getLog(PartStateChanged
.class);
19 IContextActivation contextActivation
;
22 public void earlyStartup() {
23 Display
.getDefault().asyncExec(new Runnable() {
26 IWorkbenchPage iwp
= PlatformUI
.getWorkbench()
27 .getActiveWorkbenchWindow().getActivePage();
29 iwp
.addPartListener(new PartStateChanged());
30 } catch (Exception e
) {
31 throw new ArgeoException(
32 "Error while registering the PartStateChangedListener",
40 public void partActivated(IWorkbenchPart part
) {
41 if (log
.isTraceEnabled())
42 log
.trace("Part activated: " + part
.getTitle() + " - "
45 // Try to avoid NPE when closing the application
46 IWorkbenchPartSite site
= part
.getSite();
49 IWorkbenchWindow window
= site
.getWorkbenchWindow();
53 // // Retrieve the service to enable/disable checkout button
54 // ISourceProviderService sourceProviderService =
55 // (ISourceProviderService) window
56 // .getService(ISourceProviderService.class);
57 // EditionSourceProvider esp = (EditionSourceProvider)
58 // sourceProviderService
59 // .getSourceProvider(EditionSourceProvider.EDITING_STATE);
60 // if (part instanceof IVersionedItemEditor) {
61 // IStatusLineManager manager = ((IEditorPart) part).getEditorSite()
62 // .getActionBars().getStatusLineManager();
63 // manager.setMessage(((IVersionedItemEditor) part)
64 // .getlastUpdateMessage());
67 // if (part instanceof CmsEditable) {
68 // CmsEditable editor = (CmsEditable) part;
69 // // Processing the ability to checkout is delegated to the editor
70 // esp.setCurrentItemEditingState(editor.isEditing());
71 // } else {// force button to be disabled if another part has the focus.
72 // esp.setCurrentItemEditingState(true);
77 public void partBroughtToTop(IWorkbenchPart part
) {
82 public void partClosed(IWorkbenchPart part
) {
87 public void partDeactivated(IWorkbenchPart part
) {
88 // Always remove checkOut button when the editor is left.
89 // if (part instanceof IVersionedItemEditor) {
90 // // Try to avoid NPE when closing the application
91 // IWorkbenchPartSite site = part.getSite();
94 // IWorkbenchWindow window = site.getWorkbenchWindow();
95 // if (window == null)
98 // // Retrieve the service to enable/disable checkout button
99 // ISourceProviderService sourceProviderService =
100 // (ISourceProviderService) window
101 // .getService(ISourceProviderService.class);
102 // EditionSourceProvider esp = (EditionSourceProvider)
103 // sourceProviderService
104 // .getSourceProvider(EditionSourceProvider.EDITING_STATE);
105 // esp.setCurrentItemEditingState(true);
110 public void partOpened(IWorkbenchPart part
) {