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.core.util.CoreUtil; import com.liferay.ide.server.ui.LiferayServerUI; import com.liferay.ide.server.ui.navigator.PropertiesFile; import com.liferay.ide.server.ui.util.ServerUIUtil; import java.io.IOException; import java.util.Iterator; import org.eclipse.core.runtime.Path; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.actions.SelectionProviderAction; /** * @author Terry Jia */ public class OpenLiferayHomeFolderAction extends SelectionProviderAction { private Shell shell; public OpenLiferayHomeFolderAction(ISelectionProvider sp) { super(sp, "Open Liferay Home Folder"); } public OpenLiferayHomeFolderAction(ISelectionProvider selectionProvider, String text) { this(null, selectionProvider, text); } public OpenLiferayHomeFolderAction(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 String path = workflowEntry.getPath(); try { ServerUIUtil.openFileInSystemExplorer(new Path(path)); } catch (IOException e) { LiferayServerUI.logError("Error opening portal home folder.", 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; final String path = node.getPath(); try { if (!CoreUtil.isNullOrEmpty(ServerUIUtil.getSystemExplorerCommand(new Path(path).toFile())) && accept(node)) { enabled = true; } } catch (IOException e) { } } else { setEnabled(false); return; } } setEnabled(enabled); } }