Java tutorial
/** * Copyright (c) 2014 Liferay, Inc. All rights reserved. * * The contents of this file are subject to the terms of the End User License * Agreement for Liferay Developer Studio ("License"). You may not use this file * except in compliance with the License. You can obtain a copy of the License * by contacting Liferay, Inc. See the License for the specific language * governing permissions and limitations under the License, including but not * limited to distribution rights of the Software. */ package com.liferay.ide.server.ui.action; import com.liferay.ide.server.ui.LiferayServerUI; import com.liferay.ide.server.ui.navigator.PropertiesFile; import com.liferay.ide.ui.editor.LiferayPropertiesEditor; import java.util.Iterator; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.SelectionProviderAction; import org.eclipse.ui.ide.FileStoreEditorInput; /** * "Edit" menu action. * * @author Gregory Amerson */ public class EditPropertiesFileAction extends SelectionProviderAction { protected Shell shell; public EditPropertiesFileAction(ISelectionProvider sp) { super(sp, "Edit Properties File"); } public EditPropertiesFileAction(ISelectionProvider selectionProvider, String text) { this(null, selectionProvider, text); } public EditPropertiesFileAction(Shell shell, ISelectionProvider selectionProvider, String text) { super(selectionProvider, text); this.shell = shell; setEnabled(false); } public boolean accept(Object node) { return node instanceof PropertiesFile; } public Shell getShell() { return this.shell; } public void perform(Object entry) { if (entry instanceof PropertiesFile) { final PropertiesFile workflowEntry = (PropertiesFile) entry; final FileStoreEditorInput editorInput = new FileStoreEditorInput(workflowEntry.getFileStore()); final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); try { page.openEditor(editorInput, LiferayPropertiesEditor.ID); } catch (PartInitException e) { LiferayServerUI.logError("Error opening properties editor.", e); } } } @SuppressWarnings("rawtypes") public void run() { Iterator iterator = getStructuredSelection().iterator(); if (!iterator.hasNext()) return; Object obj = iterator.next(); if (accept(obj)) { perform(obj); } selectionChanged(getStructuredSelection()); } /** * Update the enabled state. * * @param sel * a selection */ @SuppressWarnings("rawtypes") public void selectionChanged(IStructuredSelection sel) { if (sel.isEmpty()) { setEnabled(false); return; } boolean enabled = false; Iterator iterator = sel.iterator(); while (iterator.hasNext()) { Object obj = iterator.next(); if (obj instanceof PropertiesFile) { final PropertiesFile node = (PropertiesFile) obj; if (accept(node)) { enabled = true; } } else { setEnabled(false); return; } } setEnabled(enabled); } }