blob: 1dd80180d1593895fe9bb14c096b6ff1ab477aa7 [file] [log] [blame]
package org.eclipse.ant.internal.ui;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import java.net.*;
import java.util.*;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.*;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.ui.plugin.AbstractUIPlugin;
/**
* The plug-in runtime class for the AntUI plug-in.
*/
public final class AntUIPlugin extends AbstractUIPlugin{
/**
* Unique identifier constant (value <code>"org.eclipse.ant.ui"</code>)
* for the Ant UI plug-in.
*/
public static final String PI_ANTUI= "org.eclipse.ant.ui";
public static final String PROPERTIES_MESSAGES = "org.eclipse.ant.internal.ui.messages";
public static final String IMG_ANT_SCRIPT= "icons/full/eview16/ant_view.gif";
public static final String IMG_BUILDER= "icons/full/eview16/build_exec.gif";
private static final String SETTINGS_COMMAND_HISTORY = "CommandHistory";
private static final int MAX_COMMAND_HISTORY = 15;
/**
* The single instance of this plug-in runtime class.
*/
private static AntUIPlugin plugin;
private final static int MAX_HISTORY_SIZE= 5;
/**
* The most recent debug launches
*/
private IFile[] antHistory = new IFile[MAX_HISTORY_SIZE];
public AntUIPlugin(IPluginDescriptor desc) {
super(desc);
plugin= this;
}
public static AntUIPlugin getPlugin() {
return plugin;
}
public static ResourceBundle getResourceBundle() {
try {
return ResourceBundle.getBundle(PROPERTIES_MESSAGES);
} catch (MissingResourceException e) {
ErrorDialog.openError(
plugin.getWorkbench().getActiveWorkbenchWindow().getShell(),
Policy.bind("exception.missingResourceBundle"),
Policy.bind("exception.missingResourceBundle.message"),
new Status(IStatus.ERROR,PI_ANTUI,0,Policy.bind("exception.missingResourceBundle.message"),e));
return null;
}
}
/**
* Adds the given command to the command history.
* - if the command doesn't exist: put it at the first place
* - if it exists and is already at the first place: does nothing
* - if it exists and is not at the first place: move it to the first place
*/
public void addToCommandHistory(String command) {
IDialogSettings settings = getDialogSettings();
String[] oldHistory = settings.getArray(SETTINGS_COMMAND_HISTORY);
if (oldHistory == null || oldHistory.length == 0) {
settings.put(SETTINGS_COMMAND_HISTORY, new String[] {command});
return;
}
if (command.equals(oldHistory[0])) {
return;
}
//search for existing command and move to top if found
int index;
for (index=1; index<oldHistory.length; index++)
if (command.equals(oldHistory[index]))
break;
if (index < oldHistory.length) {
//it was found, so replace it
for (int i=index; i>0; i--)
oldHistory[i] = oldHistory[i-1];
oldHistory[0] = command;
settings.put(SETTINGS_COMMAND_HISTORY, oldHistory);
}
//not found -- add it to the history
String[] newHistory;
if (oldHistory.length == MAX_COMMAND_HISTORY) {
//shift other commands down and add new one
System.arraycopy(oldHistory, 0, oldHistory, 1, oldHistory.length-1);
oldHistory[0] = command;
newHistory = oldHistory;
} else {
// grow the history array
newHistory = new String[oldHistory.length+1];
System.arraycopy(oldHistory, 0, newHistory, 1, oldHistory.length);
newHistory[0] = command;
}
settings.put(SETTINGS_COMMAND_HISTORY, newHistory);
}
/**
* Adds the given file to the history:
* - if the file doesn't exist: put it at the first place
* - if it exists and is already at the first place: does nothing
* - if it exists and is not at the first place: move it to the first place
*
* @param the file
*/
public void addToHistory(IFile file) {
if (file.equals(antHistory[0]))
return;
int index;
for (index=1; index<MAX_HISTORY_SIZE; index++)
if (file.equals(antHistory[index]))
break;
if (index == MAX_HISTORY_SIZE)
index--;
for (int i=index; i>0; i--)
antHistory[i] = antHistory[i-1];
antHistory[0] = file;
}
/**
* Returns the history of tool script command that have been run.
*/
public String[] getCommandHistory() {
return getDialogSettings().getArray(SETTINGS_COMMAND_HISTORY);
}
/**
* Returns the history of the AntPlugin, i.e. the files that were executed previously
*
* @return an array containing the files
*/
public IFile[] getHistory() {
return antHistory;
}
/**
* Returns the ImageDescriptor for the icon with the given path
*
* @return the ImageDescriptor object
*/
public ImageDescriptor getImageDescriptor(String path) {
try {
URL installURL = getDescriptor().getInstallURL();
URL url = new URL(installURL,path);
return ImageDescriptor.createFromURL(url);
} catch (MalformedURLException e) {
return null;
}
}
/**
* @see AbstractUIPlugin#initializeDefaultPreferences
*/
protected void initializeDefaultPreferences(IPreferenceStore prefs) {
prefs.setDefault(IAntPreferenceConstants.AUTO_SAVE, false);
prefs.setDefault(IAntPreferenceConstants.INFO_LEVEL, true);
prefs.setDefault(IAntPreferenceConstants.VERBOSE_LEVEL, false);
prefs.setDefault(IAntPreferenceConstants.DEBUG_LEVEL, false);
PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_ERROR_RGB, new RGB(255, 0, 0)); // red - exactly the same as debug Consol
PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_WARNING_RGB, new RGB(255, 100, 0)); // orange
PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_INFO_RGB, new RGB(0, 0, 255)); // blue
PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_VERBOSE_RGB, new RGB(0, 200, 125)); // green
PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_DEBUG_RGB, new RGB(0, 0, 0)); // black
}
}