/***************************************************************************** * Copyright (c) 2011 CEA LIST. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation *****************************************************************************/ package org.eclipse.papyrus.customization.properties.editor.actions; import org.eclipse.core.commands.State; import org.eclipse.papyrus.customization.properties.editor.preview.Preview; import org.eclipse.ui.IPartListener; import org.eclipse.ui.IWindowListener; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; /** * A State to determine if the Preview view is opened in the current perspective * The State should listen on the workbench an update itself when the perspective * changes, or when the preview is opened or closed * * @FIXME : the state is not correctly retrieved * @author Camille Letavernier */ public class TogglePreviewState extends State implements IWindowListener, IPartListener { private boolean isPreviewOpen; public TogglePreviewState() { // System.out.println("Building ToggleState"); // // IWorkbench workbench = PlatformUI.getWorkbench(); // // workbench.addWindowListener(this); // for(IWorkbenchWindow window : workbench.getWorkbenchWindows()) { // System.out.println("Listening on " + window); // window.getPartService().addPartListener(this); // } // refreshState(); } private void refreshState() { // isPreviewOpen = false; // System.out.println("Refresh state"); // // IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); // if(window != null) { // IWorkbenchPage page = window.getActivePage(); // // if(page != null) { // for(IViewReference reference : page.getViewReferences()) { // if(reference.getId().equals(Activator.PREVIEW_ID)) { // isPreviewOpen = true; // break; // } // } // } // } // // System.out.println("IsOpen : " + isPreviewOpen); // // setValue(isPreviewOpen); } @Override public Object getValue() { return isPreviewOpen; } //IWindowListener public void windowOpened(IWorkbenchWindow window) { //System.out.println("Listening on " + window); window.getPartService().addPartListener(this); refreshState(); } public void windowClosed(IWorkbenchWindow window) { //window.removePageListener(this); window.getPartService().removePartListener(this); } //IPageListener // // public void pageOpened(IWorkbenchPage page) { // page.addPartListener(this); // } // // public void pageClosed(IWorkbenchPage page) { // page.removePartListener(this); // } //IPartListener public void partOpened(IWorkbenchPart part) { if(part instanceof Preview) { //System.out.println("Closing preview"); refreshState(); } } public void partClosed(IWorkbenchPart part) { if(part instanceof Preview) { //System.out.println("Closing preview"); refreshState(); } } //Ignored methods public void partActivated(IWorkbenchPart part) { // System.out.println("Part activated"); // refreshState(); } public void partBroughtToTop(IWorkbenchPart part) { //Nothing } public void partDeactivated(IWorkbenchPart part) { // System.out.println("Part activated"); // refreshState(); } public void windowActivated(IWorkbenchWindow window) { //Nothing } public void windowDeactivated(IWorkbenchWindow window) { //Nothing } public void pageActivated(IWorkbenchPage page) { //Nothing } }