/*
* 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.draw2d.FigureCanvas;
import org.eclipse.draw2d.geometry.Point;
//import org.eclipse.gef.EditPart;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPart;
import org.teiid.designer.diagram.ui.DiagramUiConstants;
import org.teiid.designer.diagram.ui.DiagramUiPlugin;
import org.teiid.designer.diagram.ui.editor.DiagramViewer;
import org.teiid.designer.diagram.ui.model.DiagramModelNode;
/**
* RefreshAction
*
* @since 8.0
*/
public class RefreshAction extends DiagramEditorAction {
/**
* Construct an instance of NewEllipseAction.
*
*/
public RefreshAction() {
super();
setImageDescriptor(DiagramUiPlugin.getDefault().getImageDescriptor(DiagramUiConstants.Images.REFRESH_DIAGRAM));
}
/* (non-Javadoc)
* see org.teiid.designer.ui.common.actions.AbstractAction#doRun()
*/
@Override
protected void doRun() {
// Let's get ahold of the current diagram...
DiagramModelNode diagramNode = editor.getCurrentModel();
if( diagramNode != null ) {
final DiagramViewer scrolledViewer = editor.getDiagramViewer();
final FigureCanvas scrolledCanvas = (FigureCanvas)scrolledViewer.getControl();
final Point viewportPt = scrolledCanvas.getViewport().getViewLocation();
// final List selectedEPs = new ArrayList(scrolledViewer.getSelectedEditParts());
final int vValue = scrolledCanvas.getVerticalBar().getSelection();
final int hValue = scrolledCanvas.getHorizontalBar().getSelection();
editor.openContext(diagramNode.getModelObject(), true);
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
scrolledCanvas.getViewport().getContents().setVisible(false);
// if( selectedEPs != null && !selectedEPs.isEmpty() ) {
// scrolledViewer.select((EditPart)selectedEPs.get(0));
// }
scrolledCanvas.getViewport().setViewLocation(viewportPt);
scrolledCanvas.getVerticalBar().setSelection(vValue);
scrolledCanvas.getHorizontalBar().setSelection(hValue);
scrolledCanvas.getViewport().getContents().setVisible(true);
}
});
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
*/
@Override
public void selectionChanged(IWorkbenchPart thePart, ISelection theSelection) {
super.selectionChanged(thePart, theSelection);
setEnabled(true);
}
}