package com.aptana.ide.pathtools;
import java.io.File;
import java.net.URL;
import java.text.MessageFormat;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
import com.aptana.ide.pathtools.handlers.Utilities;
import com.aptana.ide.pathtools.preferences.PathtoolsPreferences;
public class ExplorePlacesActions implements IWorkbenchWindowPulldownDelegate2 {
private Menu explorePlacesMenu;
public void dispose() {
if (explorePlacesMenu != null) {
explorePlacesMenu.dispose();
}
}
public void init(IWorkbenchWindow window) {}
public void run(IAction action) {}
public void selectionChanged(IAction action, ISelection selection) {}
public Menu getMenu(Control parent) {
return null;
}
public Menu getMenu(Menu parent) {
if (explorePlacesMenu != null) {
explorePlacesMenu.dispose();
}
explorePlacesMenu = new Menu(parent);
final IPath workspaceLocation = ResourcesPlugin.getWorkspace().getRoot().getLocation();
MenuItem gotoWorkspace = new MenuItem(explorePlacesMenu, SWT.PUSH);
gotoWorkspace.setText(MessageFormat.format(Messages.ExplorePlacesActions_TXT_WorkspaceFolder, workspaceLocation.toFile().getAbsolutePath()));
gotoWorkspace.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openFolder(workspaceLocation.toFile());
}
});
MenuItem gotoWorkspaceMetadata = new MenuItem(explorePlacesMenu, SWT.PUSH);
gotoWorkspaceMetadata.setText(MessageFormat.format(Messages.ExplorePlacesActions_TXT_WorkspaceMetadata,
workspaceLocation.toFile().getAbsolutePath(), File.separator));
gotoWorkspaceMetadata.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openFolder(new File(workspaceLocation.toFile(), ".metadata")); //$NON-NLS-1$
}
});
Location configurationLocation = Platform.getConfigurationLocation();
if (configurationLocation != null) {
final URL url = configurationLocation.getURL();
if (url != null && new File(url.getFile()).exists()) {
MenuItem gotoConfigurationFolder = new MenuItem(explorePlacesMenu, SWT.PUSH);
gotoConfigurationFolder.setText(MessageFormat.format(Messages.ExplorePlacesActions_TXT_ConfigFolder, url.getFile()));
gotoConfigurationFolder.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openFolder(new File(url.getFile()));
}
});
}
}
Location userDataLocation = Platform.getUserLocation();
if (userDataLocation != null) {
final URL url = userDataLocation.getURL();
if (url != null && new File(url.getFile()).exists()) {
MenuItem gotoUserFolder = new MenuItem(explorePlacesMenu, SWT.PUSH);
gotoUserFolder.setText(MessageFormat.format(Messages.ExplorePlacesActions_TXT_UserDataFolder, url.getFile()));
gotoUserFolder.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openFolder(new File(url.getFile()));
}
});
}
}
Location installLocation = Platform.getInstallLocation();
if (installLocation != null) {
final URL url = installLocation.getURL();
if (url != null && new File(url.getFile()).exists()) {
MenuItem gotoInstallFolder = new MenuItem(explorePlacesMenu, SWT.PUSH);
gotoInstallFolder.setText(MessageFormat.format(Messages.ExplorePlacesActions_TXT_InstallFolder, url.getFile()));
gotoInstallFolder.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openFolder(new File(url.getFile()));
}
});
}
}
return explorePlacesMenu;
}
private static void openFolder(File file) {
if (file != null && file.exists() && file.isDirectory()) {
Utilities.launch(
Activator.getDefault().getPreferenceStore().getString(
PathtoolsPreferences.FOLDER_EXPLORE_COMMAND_KEY), file);
}
}
}