/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.diagram.ui.actions; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWT; import org.eclipse.ui.IWorkbenchPart; import org.teiid.designer.core.workspace.ModelResource; import org.teiid.designer.diagram.ui.DiagramUiConstants; import org.teiid.designer.diagram.ui.DiagramUiPlugin; import org.teiid.designer.diagram.ui.editor.DiagramEditor; import org.teiid.designer.ui.UiConstants; import org.teiid.designer.ui.common.util.UiUtil; import org.teiid.designer.ui.editors.ModelEditor; import org.teiid.designer.ui.editors.ModelEditorManager; import org.teiid.designer.ui.viewsupport.ModelUtilities; /** * */ public class LockDiagramAction extends DiagramAction { DiagramEditor editor = null; /** * */ public LockDiagramAction(DiagramEditor editor) { super(SWT.TOGGLE); this.editor = editor; setImageDescriptor(DiagramUiPlugin.getDefault().getImageDescriptor(DiagramUiConstants.Images.UNLOCKED_IMAGE)); } /* (non-Javadoc) * @see org.eclipse.ui.ISelectionListener#selectionChanged(IWorkbenchPart, ISelection) */ @Override public void selectionChanged(IWorkbenchPart thePart, ISelection theSelection) { super.selectionChanged(thePart, theSelection); setEnabled(true); updateUi(); } private void updateUi() { ModelResource mr = this.editor.getCurrentModelResource(); if( mr != null ) { boolean currentValue = ModelUtilities.isModelDiagramLocked(mr); if( currentValue ) { setToolTipText(DiagramUiConstants.Util.getString("LockDiagramAction.unlockTooltip")); //$NON-NLS-1$ setImageDescriptor(DiagramUiPlugin.getDefault().getImageDescriptor(DiagramUiConstants.Images.LOCKED_IMAGE)); } else { setToolTipText(DiagramUiConstants.Util.getString("LockDiagramAction.lockTooltip")); //$NON-NLS-1$ setImageDescriptor(DiagramUiPlugin.getDefault().getImageDescriptor(DiagramUiConstants.Images.UNLOCKED_IMAGE)); } } } /* (non-Javadoc) * @see org.eclipse.jface.action.IAction#run() */ @Override protected void doRun() { // Get current DiagramEditor ModelResource mr = this.editor.getCurrentModelResource(); boolean currentValue = ModelUtilities.isModelDiagramLocked(mr); if( currentValue ) { ModelUtilities.unlockModelDiagrams(mr); } else { ModelUtilities.lockModelDiagrams(mr); } try { ModelEditor modelEditor = ModelEditorManager.getModelEditorForFile((IFile)mr.getUnderlyingResource(), false); if( modelEditor != null ) { modelEditor.doSave(new NullProgressMonitor()); } } catch (final Exception e) { UiConstants.Util.log(IStatus.ERROR, e, e.getMessage()); } UiUtil.runInSwtThread(new Runnable() { @Override public void run() { editor.doRefreshDiagram(); } }, true); updateUi(); } }