new make ui plugins
7
build/org.eclipse.cdt.make.ui/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
1
build/org.eclipse.cdt.make.ui/.cvsignore
Normal file
|
@ -0,0 +1 @@
|
|||
bin
|
35
build/org.eclipse.cdt.make.ui/.project
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.cdt.make.ui</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
<project>org.eclipse.cdt.core</project>
|
||||
<project>org.eclipse.cdt.core.linux</project>
|
||||
<project>org.eclipse.cdt.core.qnx</project>
|
||||
<project>org.eclipse.cdt.core.solaris</project>
|
||||
<project>org.eclipse.cdt.core.win32</project>
|
||||
<project>org.eclipse.cdt.make.core</project>
|
||||
<project>org.eclipse.cdt.ui</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
30
build/org.eclipse.cdt.make.ui/about.html
Normal file
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>About</title>
|
||||
<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
|
||||
</head>
|
||||
<body lang="EN-US">
|
||||
<h2>About This Content</h2>
|
||||
|
||||
<p>10th July, 2002</p>
|
||||
<h3>License</h3>
|
||||
<p>Eclipse.org makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
|
||||
Common Public License Version 1.0 ("CPL"). A copy of the CPL is available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.
|
||||
For purposes of the CPL, "Program" will mean the Content.</p>
|
||||
|
||||
<h3>Contributions</h3>
|
||||
|
||||
<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
|
||||
made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
|
||||
Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
|
||||
|
||||
<p>If this Content is licensed to you under license terms and conditions other than the CPL ("Other License"), any modifications, enhancements and/or
|
||||
other code and/or documentation ("Modifications") uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
|
||||
host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
|
||||
to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
|
||||
providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
|
||||
the CPL.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
4
build/org.eclipse.cdt.make.ui/build.properties
Normal file
|
@ -0,0 +1,4 @@
|
|||
source.cdtmakeui.jar = src/
|
||||
bin.includes = plugin.xml,\
|
||||
*.jar,\
|
||||
cdtmakeui.jar
|
BIN
build/org.eclipse.cdt.make.ui/icons/actions/build_menu.gif
Normal file
After Width: | Height: | Size: 161 B |
BIN
build/org.eclipse.cdt.make.ui/icons/ctool16/convert-normal.gif
Normal file
After Width: | Height: | Size: 329 B |
BIN
build/org.eclipse.cdt.make.ui/icons/ctool16/make.gif
Normal file
After Width: | Height: | Size: 161 B |
BIN
build/org.eclipse.cdt.make.ui/icons/ctool16/newc_app.gif
Normal file
After Width: | Height: | Size: 582 B |
BIN
build/org.eclipse.cdt.make.ui/icons/ctool16/newcc_app.gif
Normal file
After Width: | Height: | Size: 585 B |
BIN
build/org.eclipse.cdt.make.ui/icons/cview16/make.gif
Normal file
After Width: | Height: | Size: 161 B |
BIN
build/org.eclipse.cdt.make.ui/icons/wizban/newcprj_wiz.gif
Normal file
After Width: | Height: | Size: 3.1 KiB |
30
build/org.eclipse.cdt.make.ui/plugin.properties
Normal file
|
@ -0,0 +1,30 @@
|
|||
pluginName=C/C++ Standard make Build UI
|
||||
providerName=Eclipse.org
|
||||
|
||||
WizardNewCMakeProject.name=Standard Make C Project
|
||||
WizardNewCMakeProject.description=Create a new C Project which uses a simple makefile.
|
||||
|
||||
WizardNewCCMakeProject.name=Standard Make C++ Project
|
||||
WizardNewCCMakeProject.description=Create a new C++ Project which uses a simple makefile.
|
||||
|
||||
WizardConvertMakeProject.name=Convert to Make Project
|
||||
WizardConvertMakeProject.description=Convert a C/C++ Project to use a simple makefile
|
||||
|
||||
MenuMakeNew.label=Make Builds
|
||||
|
||||
ActionMakeBuildCreate.label=Build/Create Make Target...
|
||||
ActionMakeAll.label=Make all
|
||||
ActionMakeClean.label=Make clean
|
||||
ActionMakeRebuild.label=Make rebuild
|
||||
ActionMakeUpdate.label=Update Old Make Project...
|
||||
|
||||
CommandMakeBuildCreate.name=Build/Create Make Target
|
||||
CommandMakeBuildCreate.description=Build or create a new make build target
|
||||
|
||||
PreferenceMake.name=New Make Projects
|
||||
PropertyMakeProject.name= C/C++ Make Project
|
||||
|
||||
ViewCatagoryMake.name=Make
|
||||
ViewMake.name=Make Targets
|
||||
|
||||
ActionSetMake.label=Make Action Set
|
229
build/org.eclipse.cdt.make.ui/plugin.xml
Normal file
|
@ -0,0 +1,229 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plugin
|
||||
id="org.eclipse.cdt.make.ui"
|
||||
name="%pluginName"
|
||||
version="1.0.0"
|
||||
provider-name="%providerName"
|
||||
class="org.eclipse.cdt.make.internal.ui.MakeUIPlugin">
|
||||
|
||||
<runtime>
|
||||
<library name="cdtmakeui.jar"/>
|
||||
</runtime>
|
||||
<requires>
|
||||
<import plugin="org.eclipse.core.resources"/>
|
||||
<import plugin="org.eclipse.ui"/>
|
||||
<import plugin="org.eclipse.cdt.core"/>
|
||||
<import plugin="org.eclipse.cdt.ui"/>
|
||||
<import plugin="org.eclipse.cdt.make.core"/>
|
||||
</requires>
|
||||
|
||||
|
||||
<extension
|
||||
point="org.eclipse.ui.newWizards">
|
||||
<wizard
|
||||
name="%WizardNewCMakeProject.name"
|
||||
icon="icons/ctool16/newc_app.gif"
|
||||
category="org.eclipse.cdt.ui.newCWizards"
|
||||
class="org.eclipse.cdt.make.ui.wizards.NewMakeCProjectWizard"
|
||||
project="true"
|
||||
finalPerspective="org.eclipse.cdt.ui.CPerspective"
|
||||
id="org.eclipse.cdt.ui.wizards.NewMakeCProjectWizard">
|
||||
<description>
|
||||
%WizardNewCMakeProject.description
|
||||
</description>
|
||||
</wizard>
|
||||
<wizard
|
||||
name="%WizardConvertMakeProject.name"
|
||||
icon="icons/ctool16/convert-normal.gif"
|
||||
category="org.eclipse.cdt.ui.newCWizards"
|
||||
class="org.eclipse.cdt.make.ui.wizards.ConvertToMakeProjectWizard"
|
||||
project="true"
|
||||
finalPerspective="org.eclipse.cdt.ui.CPerspective"
|
||||
id="org.eclipse.cdt.ui.wizards.ConvertToMakeWizard">
|
||||
<description>
|
||||
%MakeConversionWizard.description
|
||||
</description>
|
||||
</wizard>
|
||||
|
||||
<!-- For C++ Wizards -->
|
||||
<wizard
|
||||
name="%WizardNewCCMakeProject.name"
|
||||
icon="icons/ctool16/newcc_app.gif"
|
||||
category="org.eclipse.cdt.ui.newCCWizards"
|
||||
class="org.eclipse.cdt.make.ui.wizards.NewMakeCCProjectWizard"
|
||||
project="true"
|
||||
finalPerspective="org.eclipse.cdt.ui.CPerspective"
|
||||
id="org.eclipse.cdt.make.ui.wizards.NewMakeCCProjectWizard">
|
||||
<description>
|
||||
%WizardNewCCMakeProject.description
|
||||
</description>
|
||||
</wizard>
|
||||
<wizard
|
||||
name="%WizardConvertMakeWizard.name"
|
||||
icon="icons/ctool16/convert-normal.gif"
|
||||
category="org.eclipse.cdt.ui.newCCWizards"
|
||||
class="org.eclipse.cdt.make.ui.wizards.ConvertToMakeProjectWizard"
|
||||
project="true"
|
||||
finalPerspective="org.eclipse.cdt.ui.CPerspective"
|
||||
id="org.eclipse.cdt.ui.wizards.ConvertToMakeWizard">
|
||||
<description>
|
||||
%MakeConversionWizard.description
|
||||
</description>
|
||||
</wizard>
|
||||
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.popupMenus">
|
||||
<objectContribution
|
||||
objectClass="org.eclipse.core.resources.IProject"
|
||||
adaptable="true"
|
||||
id="org.eclipse.cdt.make.ui.popupMenu.BuildContribution">
|
||||
<menu
|
||||
label="%MenuMakeNew.label"
|
||||
path="additions"
|
||||
id="org.eclipse.cdt.make.ui.menu">
|
||||
<separator
|
||||
name="group1">
|
||||
</separator>
|
||||
<separator
|
||||
name="group2">
|
||||
</separator>
|
||||
</menu>
|
||||
<action
|
||||
label="%ActionMakeBuildCreate.label"
|
||||
class="org.eclipse.cdt.make.ui.actions.CreateBuildAction"
|
||||
menubarPath="org.eclipse.cdt.make.ui.menu/group1"
|
||||
enablesFor="1"
|
||||
id="org.eclipse.cdt.make.ui.createBuildAction">
|
||||
</action>
|
||||
<action
|
||||
label="%ActionMakeAll.label"
|
||||
icon="icons/ctool16/make.gif"
|
||||
class="org.eclipse.cdt.make.ui.actions.BuildAction"
|
||||
menubarPath="org.eclipse.cdt.make.ui.menu/group2"
|
||||
enablesFor="1"
|
||||
id="org.eclipse.cdt.make.ui.makeAction.all">
|
||||
</action>
|
||||
<action
|
||||
label="%ActionMakeClean.label"
|
||||
icon="icons/ctool16/make.gif"
|
||||
class="org.eclipse.cdt.make.ui.actions.BuildAction"
|
||||
menubarPath="org.eclipse.cdt.make.ui.menu/group2"
|
||||
enablesFor="1"
|
||||
id="org.eclipse.cdt.make.ui.makeAction.clean">
|
||||
</action>
|
||||
<action
|
||||
label="%ActionMakeRebuild.label"
|
||||
icon="icons/ctool16/make.gif"
|
||||
class="org.eclipse.cdt.make.ui.actions.BuildAction"
|
||||
menubarPath="org.eclipse.cdt.make.ui.menu/group2"
|
||||
enablesFor="1"
|
||||
id="org.eclipse.cdt.make.ui.makeAction.rebuild">
|
||||
</action>
|
||||
<filter
|
||||
name="nature"
|
||||
value="org.eclipse.cdt.make.core.StdMakeNature">
|
||||
</filter>
|
||||
</objectContribution>
|
||||
<objectContribution
|
||||
objectClass="org.eclipse.core.resources.IProject"
|
||||
adaptable="true"
|
||||
id="org.eclipse.cdt.make.ui.popupMenu.UpdateContribution">
|
||||
<visibility>
|
||||
<and>
|
||||
<not>
|
||||
<objectState
|
||||
name="nature"
|
||||
value="org.eclipse.cdt.make.core.StdMakeNature">
|
||||
</objectState>
|
||||
</not>
|
||||
<objectState
|
||||
name="nature"
|
||||
value="org.eclipse.cdt.core.cnature">
|
||||
</objectState>
|
||||
<or>
|
||||
<objectState
|
||||
name="projectPersistentProperty"
|
||||
value="org.eclipse.cdt.core.buildLocation">
|
||||
</objectState>
|
||||
<objectState
|
||||
name="projectPersistentProperty"
|
||||
value="org.eclipse.cdt.core.buildFullArguments">
|
||||
</objectState>
|
||||
<objectState
|
||||
name="projectPersistentProperty"
|
||||
value="org.eclipse.cdt.core.buildIncrementalArguments">
|
||||
</objectState>
|
||||
<objectState
|
||||
name="projectPersistentProperty"
|
||||
value="org.eclipse.cdt.make.goals">
|
||||
</objectState>
|
||||
</or>
|
||||
</and>
|
||||
</visibility>
|
||||
<action
|
||||
label="%ActionMakeUpdate.label"
|
||||
class="org.eclipse.cdt.make.internal.ui.wizards.UpdateMakeProjectAction"
|
||||
enablesFor="+"
|
||||
id="org.eclipse.cdt.make.ui.UpdateProjectMakeAction">
|
||||
</action>
|
||||
</objectContribution>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.commands">
|
||||
<command
|
||||
name="%CommandMakeBuildCreate.name"
|
||||
description="%CommandMakeBuildCreate.description"
|
||||
id="org.eclipse.cdt.make.ui.createBuildAction">
|
||||
</command>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.preferencePages">
|
||||
<page
|
||||
name="%PreferenceMake.name"
|
||||
category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
|
||||
class="org.eclipse.cdt.make.ui.preferences.MakePreferencePage"
|
||||
id="org.eclipse.cdt.make.ui.preferences.MakePreferencePage">
|
||||
</page>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.propertyPages">
|
||||
<page
|
||||
objectClass="org.eclipse.core.resources.IProject"
|
||||
adaptable="true"
|
||||
name="%PropertyMakeProject.name"
|
||||
class="org.eclipse.cdt.make.ui.properties.MakePropertyPage"
|
||||
id="org.eclipse.cdt.make.ui.properties.MakePropertyPage">
|
||||
<filter
|
||||
name="nature"
|
||||
value="org.eclipse.cdt.make.core.makeNature">
|
||||
</filter>
|
||||
</page>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.views">
|
||||
<category
|
||||
name="%ViewCatagoryMake.name"
|
||||
id="org.eclipse.cdt.make.ui">
|
||||
</category>
|
||||
<view
|
||||
name="%ViewMake.name"
|
||||
icon="icons/cview16/make.gif"
|
||||
category="org.eclipse.cdt.make.ui"
|
||||
class="org.eclipse.cdt.make.ui.views.MakeView"
|
||||
id="org.eclipse.cdt.make.ui.views.MakeView">
|
||||
</view>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.ui.actionSets">
|
||||
<actionSet
|
||||
label="%ActionSetMake.label"
|
||||
id="org.eclipse.cdt.make.ui.actionSet1">
|
||||
<action
|
||||
label="org.eclipse.cdt.make.ui.action1"
|
||||
id="org.eclipse.cdt.make.ui.action1">
|
||||
</action>
|
||||
</actionSet>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Created on 5-Aug-2003
|
||||
*
|
||||
* Copyright (c) 2002,2003 QNX Software Systems Ltd.
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
***********************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui;
|
||||
|
||||
import org.eclipse.cdt.make.core.MakeBuilder;
|
||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.ui.BuildPathInfoBlock;
|
||||
import org.eclipse.cdt.make.ui.SettingsBlock;
|
||||
import org.eclipse.cdt.ui.TabFolderOptionBlock;
|
||||
import org.eclipse.cdt.ui.BinaryParserBlock;
|
||||
import org.eclipse.cdt.ui.ICOptionContainer;
|
||||
import org.eclipse.swt.widgets.TabItem;
|
||||
|
||||
public class MakeProjectOptionBlock extends TabFolderOptionBlock {
|
||||
|
||||
public MakeProjectOptionBlock(ICOptionContainer parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
protected TabItem addTabs() {
|
||||
TabItem item = addTab(new SettingsBlock(MakeCorePlugin.getDefault().getPluginPreferences(), MakeBuilder.BUILDER_ID));
|
||||
addTab(new BinaryParserBlock(MakeCorePlugin.getDefault().getPluginPreferences()));
|
||||
addTab(new BuildPathInfoBlock());
|
||||
return item;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
|
||||
|
||||
|
||||
MakeCWizard.title=C/Make Project
|
||||
MakeCWizard.description=Create a New C Project using 'make' to build it
|
||||
MakeCWizard.task_name=Creating C project with Make builder...
|
||||
|
||||
MakeCCWizard.title=C++/Make Project
|
||||
MakeCCWizard.description=Create a New C++ Project using 'make' to build it
|
||||
MakeCCWizard.task_name=Creating C++ project with Make builder...
|
||||
|
||||
MakeCWizardSettings.title=C/Make Project Settings
|
||||
MakeCWizardSettings.description=Define the project and 'make' builder settings
|
||||
|
||||
MakeCCWizardSettings.title=C++/Make Project Settings
|
||||
MakeCCWizardSettings.description=Define the project and 'make' builder settings
|
||||
|
||||
WizardCheckboxTablePart.WizardCheckboxTablePart.selectAll=Select All
|
||||
WizardCheckboxTablePart.WizardCheckboxTablePart.deselectAll=Deselect All
|
||||
WizardCheckboxTablePart.WizardCheckboxTablePart.counter={0} of {1} Selected
|
||||
|
||||
SettingsBlock.label=Make Builder
|
||||
SettingsBlock.message=Make builder settings.
|
||||
SettingsBlock.makeSetting.group_label=Build Setting
|
||||
SettingsBlock.makeSetting.keepOnGoing=Keep Going On Error
|
||||
SettingsBlock.makeSetting.stopOnError=Stop On Error
|
||||
SettingsBlock.makeCmd.group_label=Build Command
|
||||
SettingsBlock.makeCmd.use_default=Use Default
|
||||
SettingsBlock.makeCmd.label=Build Command:
|
||||
SettingsBlock.makeDir.group_label=Build Directory
|
||||
SettingsBlock.makeDir.label=Build directory:
|
||||
SettingsBlock.makeDir.browse=Browse...
|
||||
SettingsBlock.makeWorkbench.group_label=Workbench Build Behavior
|
||||
SettingsBlock.makeWorkbench.type=Workbench build type:
|
||||
SettingsBlock.makeWorkbench.target=Make build target:
|
||||
SettingsBlock.makeWorkbench.auto=Build on resource save (Auto Build)
|
||||
SettingsBlock.makeWorkbench.incremental=Build (Incremental Build)
|
||||
SettingsBlock.makeWorkbench.full=Rebuild (Full Build)
|
||||
|
||||
# String constants for the build include path and preprocessor symbols
|
||||
BuildPathInfoBlock.label=Paths and Symbols
|
||||
BuildPathInfoBlock.paths=Include paths:
|
||||
BuildPathInfoBlock.symbols=Defined symbols:
|
||||
BuildPathInfoBlock.browse.path=New Include Path
|
||||
BuildPathInfoBlock.browse.path.label=Path:
|
||||
BuildPathInfoBlock.browse.symbol=New Defined Symbol
|
||||
BuildPathInfoBlock.browse.symbol.label=Symbol:
|
||||
|
||||
BuildPropertyCommon.label.title=Enter Value
|
||||
BuildPropertyCommon.label.new=New...
|
||||
BuildPropertyCommon.label.remove=Remove
|
||||
BuildPropertyCommon.label.up=Move Up
|
||||
BuildPropertyCommon.label.down=Move Down
|
||||
BuildPropertyCommon.label.editVar=Edit
|
||||
BuildPropertyCommon.label.addVar=Add
|
||||
BuildPropertyCommon.label.message=Value:
|
||||
BuildPropertyCommon.label.browse=Browse...
|
||||
BuildPropertyCommon.label.configs=Defined configurations:
|
|
@ -0,0 +1,155 @@
|
|||
package org.eclipse.cdt.make.internal.ui;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import org.eclipse.core.resources.IWorkspace;
|
||||
import org.eclipse.core.resources.ResourcesPlugin;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPluginDescriptor;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.jface.dialogs.ErrorDialog;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.IWorkbenchWindow;
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
|
||||
/**
|
||||
* The main plugin class to be used in the desktop.
|
||||
*/
|
||||
public class MakeUIPlugin extends AbstractUIPlugin {
|
||||
//The shared instance.
|
||||
private static MakeUIPlugin plugin;
|
||||
//Resource bundle.
|
||||
private ResourceBundle resourceBundle;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*/
|
||||
public MakeUIPlugin(IPluginDescriptor descriptor) {
|
||||
super(descriptor);
|
||||
plugin = this;
|
||||
try {
|
||||
resourceBundle = ResourceBundle.getBundle("org.eclipse.cdt.make.internal.ui.MakeResources"); //$NON-NLS-1$
|
||||
} catch (MissingResourceException x) {
|
||||
resourceBundle = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance.
|
||||
*/
|
||||
public static MakeUIPlugin getDefault() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the workspace instance.
|
||||
*/
|
||||
public static IWorkspace getWorkspace() {
|
||||
return ResourcesPlugin.getWorkspace();
|
||||
}
|
||||
|
||||
public static Shell getActiveWorkbenchShell() {
|
||||
IWorkbenchWindow window = getActiveWorkbenchWindow();
|
||||
if (window != null) {
|
||||
return window.getShell();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static IWorkbenchWindow getActiveWorkbenchWindow() {
|
||||
return getDefault().getWorkbench().getActiveWorkbenchWindow();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the string from the plugin's resource bundle,
|
||||
* or 'key' if not found.
|
||||
*/
|
||||
public static String getResourceString(String key) {
|
||||
ResourceBundle bundle = MakeUIPlugin.getDefault().getResourceBundle();
|
||||
try {
|
||||
return bundle.getString(key);
|
||||
} catch (MissingResourceException e) {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's resource bundle,
|
||||
*/
|
||||
public ResourceBundle getResourceBundle() {
|
||||
return resourceBundle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method which returns the unique identifier of this plugin.
|
||||
*/
|
||||
public static String getUniqueIdentifier() {
|
||||
if (getDefault() == null) {
|
||||
// If the default instance is not yet initialized,
|
||||
// return a static identifier. This identifier must
|
||||
// match the plugin id defined in plugin.xml
|
||||
return "org.eclipse.cdt.make.ui"; //$NON-NLS-1$
|
||||
}
|
||||
return getDefault().getDescriptor().getUniqueIdentifier();
|
||||
}
|
||||
|
||||
public static void log(IStatus status) {
|
||||
ResourcesPlugin.getPlugin().getLog().log(status);
|
||||
}
|
||||
|
||||
public static void logErrorMessage(String message) {
|
||||
log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, message, null));
|
||||
}
|
||||
|
||||
public static void logException(Throwable e, final String title, String message) {
|
||||
if (e instanceof InvocationTargetException) {
|
||||
e = ((InvocationTargetException) e).getTargetException();
|
||||
}
|
||||
IStatus status = null;
|
||||
if (e instanceof CoreException)
|
||||
status = ((CoreException) e).getStatus();
|
||||
else {
|
||||
if (message == null)
|
||||
message = e.getMessage();
|
||||
if (message == null)
|
||||
message = e.toString();
|
||||
status = new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.OK, message, e);
|
||||
}
|
||||
ResourcesPlugin.getPlugin().getLog().log(status);
|
||||
Display display;
|
||||
display = Display.getCurrent();
|
||||
if (display == null)
|
||||
display = Display.getDefault();
|
||||
final IStatus fstatus = status;
|
||||
display.asyncExec(new Runnable() {
|
||||
public void run() {
|
||||
ErrorDialog.openError(null, title, null, fstatus);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void logException(Throwable e) {
|
||||
logException(e, null, null);
|
||||
}
|
||||
|
||||
public static void log(Throwable e) {
|
||||
if (e instanceof InvocationTargetException)
|
||||
e = ((InvocationTargetException) e).getTargetException();
|
||||
IStatus status = null;
|
||||
if (e instanceof CoreException)
|
||||
status = ((CoreException) e).getStatus();
|
||||
else
|
||||
status = new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.OK, e.getMessage(), e);
|
||||
log(status);
|
||||
}
|
||||
|
||||
protected void initializeDefaultPreferences(IPreferenceStore store) {
|
||||
// dinglis-TODO initializeDefaultPreferences
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2001 Rational Software Corp. and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v0.5
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v05.html
|
||||
*
|
||||
* Contributors:
|
||||
* Rational Software - initial implementation
|
||||
******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui;
|
||||
|
||||
import org.eclipse.swt.graphics.FontMetrics;
|
||||
import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
|
||||
public class PixelConverter {
|
||||
|
||||
private FontMetrics fFontMetrics;
|
||||
|
||||
public PixelConverter(Control control) {
|
||||
GC gc = new GC(control);
|
||||
gc.setFont(control.getFont());
|
||||
fFontMetrics= gc.getFontMetrics();
|
||||
gc.dispose();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.dialogs.DialogPage#convertHeightInCharsToPixels(int)
|
||||
*/
|
||||
public int convertHeightInCharsToPixels(int chars) {
|
||||
return Dialog.convertHeightInCharsToPixels(fFontMetrics, chars);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.dialogs.DialogPage#convertHorizontalDLUsToPixels(int)
|
||||
*/
|
||||
public int convertHorizontalDLUsToPixels(int dlus) {
|
||||
return Dialog.convertHorizontalDLUsToPixels(fFontMetrics, dlus);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.dialogs.DialogPage#convertVerticalDLUsToPixels(int)
|
||||
*/
|
||||
public int convertVerticalDLUsToPixels(int dlus) {
|
||||
return Dialog.convertVerticalDLUsToPixels(fFontMetrics, dlus);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.jface.dialogs.DialogPage#convertWidthInCharsToPixels(int)
|
||||
*/
|
||||
public int convertWidthInCharsToPixels(int chars) {
|
||||
return Dialog.convertWidthInCharsToPixels(fFontMetrics, chars);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,122 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui;
|
||||
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.dnd.DragSource;
|
||||
import org.eclipse.swt.dnd.DropTarget;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Caret;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.swt.widgets.ScrollBar;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Table;
|
||||
import org.eclipse.swt.widgets.Widget;
|
||||
|
||||
import org.eclipse.jface.dialogs.IDialogConstants;
|
||||
import org.eclipse.jface.resource.JFaceResources;
|
||||
import org.eclipse.jface.util.Assert;
|
||||
|
||||
/**
|
||||
* Utility class to simplify access to some SWT resources.
|
||||
*/
|
||||
public class SWTUtil {
|
||||
|
||||
/**
|
||||
* Returns the standard display to be used. The method first checks, if
|
||||
* the thread calling this method has an associated disaply. If so, this
|
||||
* display is returned. Otherwise the method returns the default display.
|
||||
*/
|
||||
public static Display getStandardDisplay() {
|
||||
Display display;
|
||||
display= Display.getCurrent();
|
||||
if (display == null)
|
||||
display= Display.getDefault();
|
||||
return display;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shell for the given widget. If the widget doesn't represent
|
||||
* a SWT object that manage a shell, <code>null</code> is returned.
|
||||
*
|
||||
* @return the shell for the given widget
|
||||
*/
|
||||
public static Shell getShell(Widget widget) {
|
||||
if (widget instanceof Control)
|
||||
return ((Control)widget).getShell();
|
||||
if (widget instanceof Caret)
|
||||
return ((Caret)widget).getParent().getShell();
|
||||
if (widget instanceof DragSource)
|
||||
return ((DragSource)widget).getControl().getShell();
|
||||
if (widget instanceof DropTarget)
|
||||
return ((DropTarget)widget).getControl().getShell();
|
||||
if (widget instanceof Menu)
|
||||
return ((Menu)widget).getParent().getShell();
|
||||
if (widget instanceof ScrollBar)
|
||||
return ((ScrollBar)widget).getParent().getShell();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a width hint for a button control.
|
||||
*/
|
||||
public static int getButtonWidthHint(Button button) {
|
||||
if (button.getFont().equals(JFaceResources.getDefaultFont()))
|
||||
button.setFont(JFaceResources.getDialogFont());
|
||||
PixelConverter converter= new PixelConverter(button);
|
||||
int widthHint= converter.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
|
||||
return Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a height hint for a button control.
|
||||
*/
|
||||
public static int getButtonHeigthHint(Button button) {
|
||||
if (button.getFont().equals(JFaceResources.getDefaultFont()))
|
||||
button.setFont(JFaceResources.getDialogFont());
|
||||
PixelConverter converter= new PixelConverter(button);
|
||||
return converter.convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets width and height hint for the button control.
|
||||
* <b>Note:</b> This is a NOP if the button's layout data is not
|
||||
* an instance of <code>GridData</code>.
|
||||
*
|
||||
* @param the button for which to set the dimension hint
|
||||
*/
|
||||
public static void setButtonDimensionHint(Button button) {
|
||||
Assert.isNotNull(button);
|
||||
Object gd= button.getLayoutData();
|
||||
if (gd instanceof GridData) {
|
||||
((GridData)gd).heightHint= getButtonHeigthHint(button);
|
||||
((GridData)gd).widthHint= getButtonWidthHint(button);
|
||||
}
|
||||
}
|
||||
|
||||
public static int getTableHeightHint(Table table, int rows) {
|
||||
if (table.getFont().equals(JFaceResources.getDefaultFont()))
|
||||
table.setFont(JFaceResources.getDialogFont());
|
||||
int result= table.getItemHeight() * rows + table.getHeaderHeight();
|
||||
if (table.getLinesVisible())
|
||||
result+= table.getGridLineWidth() * (rows - 1);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.part;
|
||||
|
||||
import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
||||
import org.eclipse.jface.viewers.CheckboxTableViewer;
|
||||
import org.eclipse.jface.viewers.ICheckStateListener;
|
||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @author
|
||||
*/
|
||||
public class CheckboxTablePart extends StructuredViewerPart {
|
||||
public CheckboxTablePart(String[] buttonLabels) {
|
||||
super(buttonLabels);
|
||||
}
|
||||
|
||||
/*
|
||||
* @see StructuredViewerPart#createStructuredViewer(Composite, FormWidgetFactory)
|
||||
*/
|
||||
protected StructuredViewer createStructuredViewer(Composite parent, int style) {
|
||||
style |= SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
|
||||
CheckboxTableViewer tableViewer = CheckboxTableViewer.newCheckList(parent, style);
|
||||
tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
||||
public void selectionChanged(SelectionChangedEvent e) {
|
||||
CheckboxTablePart.this.selectionChanged((IStructuredSelection) e.getSelection());
|
||||
}
|
||||
});
|
||||
tableViewer.addCheckStateListener(new ICheckStateListener() {
|
||||
public void checkStateChanged(CheckStateChangedEvent event) {
|
||||
elementChecked(event.getElement(), event.getChecked());
|
||||
}
|
||||
});
|
||||
return tableViewer;
|
||||
}
|
||||
|
||||
public CheckboxTableViewer getTableViewer() {
|
||||
return (CheckboxTableViewer) getViewer();
|
||||
}
|
||||
|
||||
/*
|
||||
* @see SharedPartWithButtons#buttonSelected(int)
|
||||
*/
|
||||
protected void buttonSelected(Button button, int index) {
|
||||
}
|
||||
|
||||
protected void elementChecked(Object element, boolean checked) {
|
||||
}
|
||||
protected void selectionChanged(IStructuredSelection selection) {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.part;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @author
|
||||
*/
|
||||
public abstract class SharedPart {
|
||||
private boolean enabled = true;
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
if (enabled != this.enabled) {
|
||||
this.enabled = enabled;
|
||||
updateEnabledState();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void createControl(Composite parent, int style, int span);
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
protected void updateEnabledState() {
|
||||
}
|
||||
|
||||
protected Composite createComposite(Composite parent) {
|
||||
return new Composite(parent, SWT.NULL);
|
||||
}
|
||||
|
||||
protected Label createEmptySpace(Composite parent, int span) {
|
||||
Label label = new Label(parent, SWT.NULL);
|
||||
GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
|
||||
gd.horizontalSpan = span;
|
||||
gd.widthHint = 0;
|
||||
gd.heightHint = 0;
|
||||
label.setLayoutData(gd);
|
||||
return label;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.part;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.events.SelectionListener;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @author
|
||||
*/
|
||||
public abstract class SharedPartWithButtons extends SharedPart {
|
||||
private String[] buttonLabels;
|
||||
private Control[] controls;
|
||||
private Composite buttonContainer;
|
||||
|
||||
private class SelectionHandler implements SelectionListener {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
buttonSelected(e);
|
||||
}
|
||||
public void widgetDefaultSelected(SelectionEvent e) {
|
||||
buttonSelected(e);
|
||||
}
|
||||
private void buttonSelected(SelectionEvent e) {
|
||||
Integer index = (Integer) e.widget.getData();
|
||||
SharedPartWithButtons.this.buttonSelected((Button) e.widget, index.intValue());
|
||||
}
|
||||
}
|
||||
|
||||
public SharedPartWithButtons(String[] buttonLabels) {
|
||||
this.buttonLabels = buttonLabels;
|
||||
}
|
||||
|
||||
public void setButtonEnabled(int index, boolean enabled) {
|
||||
if (controls != null && index >= 0 && controls.length > index) {
|
||||
Control c = controls[index];
|
||||
if (c instanceof Button)
|
||||
c.setEnabled(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void createMainControl(Composite parent, int style, int span);
|
||||
protected abstract void buttonSelected(Button button, int index);
|
||||
|
||||
/*
|
||||
* @see SharedPart#createControl(Composite, FormWidgetFactory)
|
||||
*/
|
||||
public void createControl(Composite parent, int style, int span) {
|
||||
createMainLabel(parent, span);
|
||||
createMainControl(parent, style, span - 1);
|
||||
if (buttonLabels != null && buttonLabels.length > 0) {
|
||||
buttonContainer = createComposite(parent);
|
||||
GridData gd = new GridData(GridData.FILL_VERTICAL);
|
||||
buttonContainer.setLayoutData(gd);
|
||||
buttonContainer.setLayout(createButtonsLayout());
|
||||
|
||||
controls = new Control[buttonLabels.length];
|
||||
SelectionHandler listener = new SelectionHandler();
|
||||
for (int i = 0; i < buttonLabels.length; i++) {
|
||||
String label = buttonLabels[i];
|
||||
if (label != null) {
|
||||
Button button = createButton(buttonContainer, label, i);
|
||||
button.addSelectionListener(listener);
|
||||
controls[i] = button;
|
||||
} else {
|
||||
createEmptySpace(buttonContainer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected GridLayout createButtonsLayout() {
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginWidth = layout.marginHeight = 0;
|
||||
return layout;
|
||||
}
|
||||
|
||||
protected Button createButton(Composite parent, String label, int index) {
|
||||
Button button = new Button(parent, SWT.PUSH);
|
||||
button.setText(label);
|
||||
GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
|
||||
button.setLayoutData(gd);
|
||||
button.setData(new Integer(index));
|
||||
return button;
|
||||
}
|
||||
|
||||
protected void updateEnabledState() {
|
||||
for (int i = 0; i < controls.length; i++) {
|
||||
Control c = controls[i];
|
||||
if (c instanceof Button)
|
||||
c.setEnabled(isEnabled());
|
||||
}
|
||||
}
|
||||
|
||||
protected void createMainLabel(Composite parent, int span) {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.part;
|
||||
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
import org.eclipse.swt.graphics.Point;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
/**
|
||||
* @version 1.0
|
||||
* @author
|
||||
*/
|
||||
public abstract class StructuredViewerPart extends SharedPartWithButtons {
|
||||
private StructuredViewer viewer;
|
||||
private Point minSize = null;
|
||||
|
||||
public StructuredViewerPart(String[] buttonLabels) {
|
||||
super(buttonLabels);
|
||||
}
|
||||
|
||||
public StructuredViewer getViewer() {
|
||||
return viewer;
|
||||
}
|
||||
|
||||
public Control getControl() {
|
||||
return viewer.getControl();
|
||||
}
|
||||
|
||||
/*
|
||||
* @see SharedPartWithButtons#createMainControl(Composite, int, FormWidgetFactory)
|
||||
*/
|
||||
protected void createMainControl(Composite parent, int style, int span) {
|
||||
viewer = createStructuredViewer(parent, style);
|
||||
Control control = viewer.getControl();
|
||||
GridData gd = new GridData(GridData.FILL_BOTH);
|
||||
gd.horizontalSpan = span;
|
||||
control.setLayoutData(gd);
|
||||
applyMinimumSize();
|
||||
}
|
||||
|
||||
public void setMinimumSize(int width, int height) {
|
||||
minSize = new Point(width, height);
|
||||
if (viewer != null)
|
||||
applyMinimumSize();
|
||||
}
|
||||
private void applyMinimumSize() {
|
||||
if (minSize != null) {
|
||||
GridData gd = (GridData) viewer.getControl().getLayoutData();
|
||||
gd.widthHint = minSize.x;
|
||||
gd.heightHint = minSize.y;
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateEnabledState() {
|
||||
getControl().setEnabled(isEnabled());
|
||||
super.updateEnabledState();
|
||||
}
|
||||
|
||||
protected abstract StructuredViewer createStructuredViewer(Composite parent, int style);
|
||||
}
|
|
@ -0,0 +1,151 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.part;
|
||||
import java.text.MessageFormat;
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.jface.viewers.CheckboxTableViewer;
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
/**
|
||||
* @version 1.0
|
||||
* @author
|
||||
*/
|
||||
public class WizardCheckboxTablePart extends CheckboxTablePart {
|
||||
public static final String KEY_SELECT_ALL = MakeUIPlugin.getResourceString("WizardCheckboxTablePart.WizardCheckboxTablePart.selectAll"); //$NON-NLS-1$
|
||||
public static final String KEY_DESELECT_ALL = MakeUIPlugin.getResourceString("WizardCheckboxTablePart.WizardCheckboxTablePart.deselectAll"); //$NON-NLS-1$
|
||||
public static final String KEY_COUNTER = MakeUIPlugin.getResourceString("WizardCheckboxTablePart.WizardCheckboxTablePart.counter"); //$NON-NLS-1$
|
||||
|
||||
private final String EMPTY_STRING = ""; //$NON-NLS-1$
|
||||
private int selectAllIndex = -1;
|
||||
private int deselectAllIndex = -1;
|
||||
private String tableName;
|
||||
private int counter;
|
||||
private Label counterLabel;
|
||||
|
||||
/**
|
||||
* Constructor for WizardCheckboxTablePart.
|
||||
* @param buttonLabels
|
||||
*/
|
||||
public WizardCheckboxTablePart(String tableName, String[] buttonLabels) {
|
||||
super(buttonLabels);
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public WizardCheckboxTablePart(String mainLabel) {
|
||||
this(
|
||||
mainLabel,
|
||||
new String[] { MakeUIPlugin.getResourceString(KEY_SELECT_ALL), MakeUIPlugin.getResourceString(KEY_DESELECT_ALL)});
|
||||
setSelectAllIndex(0);
|
||||
setDeselectAllIndex(1);
|
||||
}
|
||||
|
||||
public void setSelectAllIndex(int index) {
|
||||
this.selectAllIndex = index;
|
||||
}
|
||||
public void setDeselectAllIndex(int index) {
|
||||
this.deselectAllIndex = index;
|
||||
}
|
||||
|
||||
protected void buttonSelected(Button button, int index) {
|
||||
if (index == selectAllIndex) {
|
||||
handleSelectAll(true);
|
||||
}
|
||||
if (index == deselectAllIndex) {
|
||||
handleSelectAll(false);
|
||||
}
|
||||
}
|
||||
|
||||
public Object[] getSelection() {
|
||||
CheckboxTableViewer viewer = getTableViewer();
|
||||
return viewer.getCheckedElements();
|
||||
}
|
||||
|
||||
public void setSelection(Object[] selected) {
|
||||
CheckboxTableViewer viewer = getTableViewer();
|
||||
viewer.setCheckedElements(selected);
|
||||
updateCounter(selected.length);
|
||||
}
|
||||
|
||||
public void createControl(Composite parent) {
|
||||
createControl(parent, SWT.NULL, 2);
|
||||
counterLabel = new Label(parent, SWT.NULL);
|
||||
GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_FILL);
|
||||
gd.horizontalSpan = 2;
|
||||
counterLabel.setLayoutData(gd);
|
||||
updateCounter(0);
|
||||
}
|
||||
|
||||
protected Button createButton(Composite parent, String label, int index) {
|
||||
Button button = super.createButton(parent, label, index);
|
||||
return button;
|
||||
}
|
||||
|
||||
protected StructuredViewer createStructuredViewer(Composite parent, int style) {
|
||||
StructuredViewer viewer = super.createStructuredViewer(parent, style);
|
||||
return viewer;
|
||||
}
|
||||
|
||||
protected void createMainLabel(Composite parent, int span) {
|
||||
if (tableName == null)
|
||||
return;
|
||||
Label label = new Label(parent, SWT.NULL);
|
||||
label.setText(tableName);
|
||||
GridData gd = new GridData();
|
||||
gd.horizontalSpan = span;
|
||||
label.setLayoutData(gd);
|
||||
}
|
||||
|
||||
protected void updateCounter(int amount) {
|
||||
counter = amount;
|
||||
updateCounterLabel();
|
||||
}
|
||||
|
||||
protected void updateCounterLabel() {
|
||||
String number = EMPTY_STRING + getSelectionCount();
|
||||
String totalNumber = EMPTY_STRING + getTotalCount();
|
||||
String message = MessageFormat.format(MakeUIPlugin.getResourceString(KEY_COUNTER), new String[] { number, totalNumber });
|
||||
counterLabel.setText(message);
|
||||
}
|
||||
|
||||
public int getSelectionCount() {
|
||||
return counter;
|
||||
}
|
||||
|
||||
public void selectAll(boolean select) {
|
||||
handleSelectAll(select);
|
||||
}
|
||||
|
||||
private int getTotalCount() {
|
||||
CheckboxTableViewer viewer = getTableViewer();
|
||||
return viewer.getTable().getItemCount();
|
||||
}
|
||||
|
||||
protected void handleSelectAll(boolean select) {
|
||||
CheckboxTableViewer viewer = getTableViewer();
|
||||
viewer.setAllChecked(select);
|
||||
int selected;
|
||||
if (!select) {
|
||||
selected = 0;
|
||||
} else {
|
||||
selected = getTotalCount();
|
||||
}
|
||||
updateCounter(selected);
|
||||
}
|
||||
protected void elementChecked(Object element, boolean checked) {
|
||||
int count = getSelectionCount();
|
||||
updateCounter(checked ? count + 1 : count - 1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.wizards;
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.jface.dialogs.DialogPage;
|
||||
import org.eclipse.jface.wizard.WizardPage;
|
||||
|
||||
public abstract class StatusWizardPage extends WizardPage {
|
||||
|
||||
private IStatus fCurrStatus;
|
||||
|
||||
private boolean fPageVisible;
|
||||
private boolean fNoErrorOnStartup;
|
||||
|
||||
public StatusWizardPage(String name, boolean noErrorOnStartup) {
|
||||
super(name);
|
||||
fPageVisible= false;
|
||||
fCurrStatus= createStatus(IStatus.OK, "");
|
||||
fNoErrorOnStartup= noErrorOnStartup;
|
||||
}
|
||||
|
||||
// ---- WizardPage ----------------
|
||||
|
||||
/*
|
||||
* @see WizardPage#becomesVisible
|
||||
*/
|
||||
public void setVisible(boolean visible) {
|
||||
super.setVisible(visible);
|
||||
fPageVisible= visible;
|
||||
// policy: wizards are not allowed to come up with an error message
|
||||
if (visible && fNoErrorOnStartup && fCurrStatus.matches(IStatus.ERROR)) {
|
||||
// keep the error state, but remove the message
|
||||
fCurrStatus= createStatus(IStatus.ERROR, "");
|
||||
}
|
||||
updateStatus(fCurrStatus);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the status line and the ok button depending on the status
|
||||
*/
|
||||
protected void updateStatus(IStatus status) {
|
||||
fCurrStatus= status;
|
||||
setPageComplete(!status.matches(IStatus.ERROR));
|
||||
if (fPageVisible) {
|
||||
applyToStatusLine(this, status);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies the status to a dialog page
|
||||
*/
|
||||
public static void applyToStatusLine(DialogPage page, IStatus status) {
|
||||
String errorMessage= null;
|
||||
String warningMessage= null;
|
||||
String statusMessage= status.getMessage();
|
||||
if (statusMessage.length() > 0) {
|
||||
if (status.matches(IStatus.ERROR)) {
|
||||
errorMessage= statusMessage;
|
||||
} else if (!status.isOK()) {
|
||||
warningMessage= statusMessage;
|
||||
}
|
||||
}
|
||||
page.setErrorMessage(errorMessage);
|
||||
page.setMessage(warningMessage,status.getSeverity());
|
||||
}
|
||||
|
||||
public static IStatus getMoreSevere(IStatus s1, IStatus s2) {
|
||||
if (s1.getSeverity() >= s2.getSeverity()) {
|
||||
return s1;
|
||||
} else {
|
||||
return s2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static IStatus createStatus(int severity, String message) {
|
||||
return new Status(severity, MakeUIPlugin.getUniqueIdentifier(), severity, message, null);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* Created on 25-Jul-2003
|
||||
*
|
||||
* Copyright (c) 2002,2003 QNX Software Systems Ltd.
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
***********************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.wizards;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.eclipse.cdt.core.model.ICProject;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IWorkspaceRunnable;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.OperationCanceledException;
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
||||
import org.eclipse.jface.operation.IRunnableContext;
|
||||
import org.eclipse.jface.operation.IRunnableWithProgress;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.wizard.WizardDialog;
|
||||
import org.eclipse.ui.IWorkbenchWindow;
|
||||
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
|
||||
|
||||
public class UpdateMakeProjectAction implements IWorkbenchWindowActionDelegate {
|
||||
|
||||
private ISelection fSelection;
|
||||
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
public void init(IWorkbenchWindow window) {
|
||||
}
|
||||
|
||||
public void run(IAction action) {
|
||||
if (fSelection instanceof IStructuredSelection) {
|
||||
Object[] elems = ((IStructuredSelection) fSelection).toArray();
|
||||
ArrayList projects = new ArrayList(elems.length);
|
||||
|
||||
for (int i = 0; i < elems.length; i++) {
|
||||
Object elem = elems[i];
|
||||
IProject project = null;
|
||||
|
||||
if (elem instanceof IFile) {
|
||||
IFile file = (IFile) elem;
|
||||
project = file.getProject();
|
||||
} else if (elem instanceof IProject) {
|
||||
project = (IProject) elem;
|
||||
} else if (elem instanceof ICProject) {
|
||||
project = ((ICProject) elem).getProject();
|
||||
}
|
||||
if (project != null) {
|
||||
}
|
||||
}
|
||||
|
||||
final IProject[] projectArray = (IProject[]) projects.toArray(new IProject[projects.size()]);
|
||||
|
||||
ProgressMonitorDialog pd = new ProgressMonitorDialog(MakeUIPlugin.getActiveWorkbenchShell());
|
||||
run(true, pd, projectArray);
|
||||
UpdateMakeProjectWizard wizard = new UpdateMakeProjectWizard(projectArray);
|
||||
WizardDialog dialog = new WizardDialog(MakeUIPlugin.getActiveWorkbenchShell(), wizard);
|
||||
dialog.open();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static public void run(boolean fork, IRunnableContext context, final IProject[] projects) {
|
||||
try {
|
||||
context.run(fork, true, new IRunnableWithProgress() {
|
||||
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
|
||||
try {
|
||||
IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
|
||||
public void run(IProgressMonitor monitor) throws CoreException {
|
||||
doMakeProjectUpdate(monitor, projects);
|
||||
}
|
||||
};
|
||||
MakeUIPlugin.getWorkspace().run(runnable, monitor);
|
||||
} catch (CoreException e) {
|
||||
throw new InvocationTargetException(e);
|
||||
} catch (OperationCanceledException e) {
|
||||
throw new InterruptedException(e.getMessage());
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (InterruptedException e) {
|
||||
return;
|
||||
} catch (InvocationTargetException e) {
|
||||
MakeUIPlugin.logException(e, "Error", "Error updateing Make Projects");
|
||||
}
|
||||
}
|
||||
|
||||
public static void doMakeProjectUpdate(IProgressMonitor monitor, IProject[] projects) throws CoreException {
|
||||
// dinglis-TODO : Implement Make project updating.
|
||||
monitor.beginTask("Updating make Projects...", projects.length);
|
||||
try {
|
||||
for (int i = 0; i < projects.length; i++) {
|
||||
// IProgressMonitor subMonitor = new SubProgressMonitor(monitor, 1);
|
||||
|
||||
if (monitor.isCanceled())
|
||||
break;
|
||||
}
|
||||
} finally {
|
||||
monitor.done();
|
||||
}
|
||||
}
|
||||
|
||||
public void selectionChanged(IAction action, ISelection selection) {
|
||||
fSelection = selection;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Created on 28-Jul-2003
|
||||
*
|
||||
* Copyright (c) 2002,2003 QNX Software Systems Ltd.
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
***********************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.wizards;
|
||||
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.jface.wizard.Wizard;
|
||||
|
||||
public class UpdateMakeProjectWizard extends Wizard {
|
||||
|
||||
private UpdateMakeProjectWizardPage page1;
|
||||
private IProject[] selected;
|
||||
|
||||
public UpdateMakeProjectWizard(IProject[] selected) {
|
||||
setDefaultPageImageDescriptor(null);
|
||||
setWindowTitle("Update Makefile Projects");
|
||||
setNeedsProgressMonitor(true);
|
||||
this.selected = selected;
|
||||
}
|
||||
|
||||
public boolean performFinish() {
|
||||
Object[] finalSelected = page1.getSelected();
|
||||
|
||||
IProject[] projectArray = new IProject[finalSelected.length];
|
||||
System.arraycopy(finalSelected, 0, projectArray, 0, finalSelected.length);
|
||||
UpdateMakeProjectAction.run(true, getContainer(), projectArray);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void addPages() {
|
||||
page1 = new UpdateMakeProjectWizardPage(selected);
|
||||
addPage(page1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* Created on 28-Jul-2003
|
||||
*
|
||||
* Copyright (c) 2002,2003 QNX Software Systems Ltd.
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
***********************************************************************/
|
||||
package org.eclipse.cdt.make.internal.ui.wizards;
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.make.internal.ui.part.WizardCheckboxTablePart;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.jface.dialogs.Dialog;
|
||||
import org.eclipse.jface.viewers.CheckboxTableViewer;
|
||||
import org.eclipse.jface.viewers.IStructuredContentProvider;
|
||||
import org.eclipse.jface.viewers.StructuredViewer;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.ui.model.WorkbenchLabelProvider;
|
||||
|
||||
public class UpdateMakeProjectWizardPage extends StatusWizardPage {
|
||||
|
||||
private IProject[] selected;
|
||||
private CheckboxTableViewer makeProjectListViewer;
|
||||
private TablePart tablePart;
|
||||
|
||||
public class BuildpathContentProvider implements IStructuredContentProvider {
|
||||
public Object[] getElements(Object parent) {
|
||||
return getProjects();
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||
}
|
||||
}
|
||||
|
||||
class TablePart extends WizardCheckboxTablePart {
|
||||
public TablePart(String mainLabel) {
|
||||
super(mainLabel);
|
||||
}
|
||||
public void updateCounter(int count) {
|
||||
super.updateCounter(count);
|
||||
dialogChanged();
|
||||
}
|
||||
protected StructuredViewer createStructuredViewer(Composite parent, int style) {
|
||||
StructuredViewer viewer = super.createStructuredViewer(parent, style);
|
||||
return viewer;
|
||||
}
|
||||
}
|
||||
|
||||
public UpdateMakeProjectWizardPage(IProject[] selected) {
|
||||
super("UpdateMakeProjectWizardPage", true);
|
||||
setTitle("Make update title");
|
||||
setDescription("Make update description");
|
||||
this.selected = selected;
|
||||
tablePart = new TablePart("project list");
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
public void createControl(Composite parent) {
|
||||
Composite container = new Composite(parent, SWT.NONE);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.numColumns = 2;
|
||||
layout.marginHeight = 0;
|
||||
layout.marginWidth = 5;
|
||||
container.setLayout(layout);
|
||||
|
||||
tablePart.createControl(container);
|
||||
makeProjectListViewer = tablePart.getTableViewer();
|
||||
makeProjectListViewer.setContentProvider(new BuildpathContentProvider());
|
||||
makeProjectListViewer.setLabelProvider(new WorkbenchLabelProvider());
|
||||
|
||||
GridData gd = (GridData) tablePart.getControl().getLayoutData();
|
||||
gd.heightHint = 300;
|
||||
gd.widthHint = 300;
|
||||
|
||||
makeProjectListViewer.setInput(MakeUIPlugin.getWorkspace().getRoot());
|
||||
tablePart.setSelection(selected);
|
||||
setControl(container);
|
||||
Dialog.applyDialogFont(container);
|
||||
}
|
||||
|
||||
public void storeSettings() {
|
||||
}
|
||||
|
||||
public Object[] getSelected() {
|
||||
return tablePart.getSelection();
|
||||
}
|
||||
|
||||
private void dialogChanged() {
|
||||
IStatus genStatus = validatePlugins();
|
||||
updateStatus(genStatus);
|
||||
}
|
||||
|
||||
private IProject[] getProjects() {
|
||||
return MakeUIPlugin.getWorkspace().getRoot().getProjects();
|
||||
// Vector result = new Vector();
|
||||
// try {
|
||||
//
|
||||
// } catch (CoreException e) {
|
||||
//// MakeUIPlugin.logException(e);
|
||||
// }
|
||||
|
||||
// return (IProject[])result.toArray(new IProject[result.size()]);
|
||||
}
|
||||
|
||||
private IStatus validatePlugins() {
|
||||
Object[] allModels = getProjects();
|
||||
if (allModels == null || allModels.length == 0) {
|
||||
return createStatus(IStatus.ERROR, "No projects to update");
|
||||
}
|
||||
if (tablePart.getSelectionCount() == 0) {
|
||||
return createStatus(IStatus.ERROR, "No projects selected");
|
||||
}
|
||||
return createStatus(IStatus.OK, "");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,607 @@
|
|||
package org.eclipse.cdt.make.ui;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.util.SWTUtil;
|
||||
import org.eclipse.cdt.make.core.IMakeBuilderInfo;
|
||||
import org.eclipse.cdt.make.core.MakeBuildManager;
|
||||
import org.eclipse.cdt.ui.AbstractCOptionPage;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.jface.dialogs.InputDialog;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.MouseEvent;
|
||||
import org.eclipse.swt.events.MouseListener;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.graphics.Font;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.List;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
/**********************************************************************
|
||||
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v0.5
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v05.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Rational Software - Initial API and implementation
|
||||
***********************************************************************/
|
||||
|
||||
public class BuildPathInfoBlock extends AbstractCOptionPage {
|
||||
|
||||
private static final String PREFIX = "BuildPathInfoBlock"; //$NON-NLS-1$
|
||||
private static final String LABEL = PREFIX + ".label"; //$NON-NLS-1$
|
||||
private static final String PATHS = PREFIX + ".paths"; //$NON-NLS-1$
|
||||
private static final String SYMBOLS = PREFIX + ".symbols"; //$NON-NLS-1$
|
||||
private static final String BROWSE = PREFIX + ".browse"; //$NON-NLS-1$
|
||||
private static final String PATH_TITLE = BROWSE + ".path"; //$NON-NLS-1$
|
||||
private static final String PATH_LABEL = BROWSE + ".path.label"; //$NON-NLS-1$
|
||||
private static final String SYMBOL_TITLE = BROWSE + ".symbol"; //$NON-NLS-1$
|
||||
private static final String SYMBOL_LABEL = BROWSE + ".symbol.label"; //$NON-NLS-1$
|
||||
private static final String NEW = "BuildPropertyCommon.label.new"; //$NON-NLS-1$
|
||||
private static final String REMOVE = "BuildPropertyCommon.label.remove"; //$NON-NLS-1$
|
||||
private static final String UP = "BuildPropertyCommon.label.up"; //$NON-NLS-1$
|
||||
private static final String DOWN = "BuildPropertyCommon.label.down"; //$NON-NLS-1$
|
||||
|
||||
private List pathList;
|
||||
private List symbolList;
|
||||
private Composite pathButtonComp;
|
||||
private Button addPath;
|
||||
private Button removePath;
|
||||
private Button pathUp;
|
||||
private Button pathDown;
|
||||
private Composite symbolButtonComp;
|
||||
private Button addSymbol;
|
||||
private Button removeSymbol;
|
||||
private Button symbolUp;
|
||||
private Button symbolDown;
|
||||
private Shell shell;
|
||||
|
||||
/**
|
||||
* @param valid
|
||||
*/
|
||||
public BuildPathInfoBlock() {
|
||||
super(CUIPlugin.getResourceString(LABEL));
|
||||
setDescription("Set the include paths and preprocessor symbols for this project");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param composite
|
||||
*/
|
||||
private void createPathListButtons(Composite parent) {
|
||||
// Create a composite for the buttons
|
||||
pathButtonComp = ControlFactory.createComposite(parent, 1);
|
||||
pathButtonComp.setFont(parent.getFont());
|
||||
|
||||
// Add the buttons
|
||||
addPath = ControlFactory.createPushButton(pathButtonComp, CUIPlugin.getResourceString(NEW));
|
||||
addPath.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handleAddPath();
|
||||
}
|
||||
});
|
||||
addPath.setEnabled(true);
|
||||
addPath.setFont(parent.getFont());
|
||||
addPath.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(addPath);
|
||||
|
||||
removePath = ControlFactory.createPushButton(pathButtonComp, CUIPlugin.getResourceString(REMOVE));
|
||||
removePath.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handleRemovePath();
|
||||
}
|
||||
});
|
||||
removePath.setFont(parent.getFont());
|
||||
removePath.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(removePath);
|
||||
|
||||
pathUp = ControlFactory.createPushButton(pathButtonComp, CUIPlugin.getResourceString(UP));
|
||||
pathUp.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handlePathUp();
|
||||
}
|
||||
});
|
||||
pathUp.setFont(parent.getFont());
|
||||
pathUp.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(pathUp);
|
||||
|
||||
pathDown = ControlFactory.createPushButton(pathButtonComp, CUIPlugin.getResourceString(DOWN));
|
||||
pathDown.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handlePathDown();
|
||||
}
|
||||
});
|
||||
pathDown.setFont(parent.getFont());
|
||||
pathDown.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(pathDown);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param composite
|
||||
*/
|
||||
private void createPathListControl(Composite parent, int numColumns) {
|
||||
// Create the list
|
||||
pathList = new List(parent, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
pathList.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
enablePathButtons();
|
||||
}
|
||||
});
|
||||
pathList.addMouseListener(new MouseListener() {
|
||||
|
||||
public void mouseDoubleClick(MouseEvent e) {
|
||||
editPathListItem();
|
||||
}
|
||||
|
||||
public void mouseDown(MouseEvent e) {
|
||||
// Handled by the selection listener
|
||||
}
|
||||
|
||||
public void mouseUp(MouseEvent e) {
|
||||
// Handled by the selection listener
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Make it occupy the first 2 columns
|
||||
GridData gd = new GridData(GridData.FILL_BOTH);
|
||||
gd.horizontalSpan = numColumns - 1;
|
||||
pathList.setLayoutData(gd);
|
||||
pathList.setFont(parent.getFont());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param composite
|
||||
*/
|
||||
private void createSymbolListButtons(Composite parent) {
|
||||
// Create a composite for the buttons
|
||||
symbolButtonComp = ControlFactory.createComposite(parent, 1);
|
||||
symbolButtonComp.setFont(parent.getFont());
|
||||
|
||||
// Add the buttons
|
||||
addSymbol = ControlFactory.createPushButton(symbolButtonComp, CUIPlugin.getResourceString(NEW));
|
||||
addSymbol.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handleAddSymbol();
|
||||
}
|
||||
});
|
||||
addSymbol.setEnabled(true);
|
||||
addSymbol.setFont(parent.getFont());
|
||||
addSymbol.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(addSymbol);
|
||||
|
||||
removeSymbol = ControlFactory.createPushButton(symbolButtonComp, CUIPlugin.getResourceString(REMOVE));
|
||||
removeSymbol.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handleRemoveSymbol();
|
||||
}
|
||||
});
|
||||
removeSymbol.setFont(parent.getFont());
|
||||
removeSymbol.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(removeSymbol);
|
||||
|
||||
symbolUp = ControlFactory.createPushButton(symbolButtonComp, CUIPlugin.getResourceString(UP));
|
||||
symbolUp.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handleSymbolUp();
|
||||
}
|
||||
});
|
||||
symbolUp.setFont(parent.getFont());
|
||||
symbolUp.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(symbolUp);
|
||||
|
||||
symbolDown = ControlFactory.createPushButton(symbolButtonComp, CUIPlugin.getResourceString(DOWN));
|
||||
symbolDown.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
handleSymbolDown();
|
||||
}
|
||||
});
|
||||
symbolDown.setFont(parent.getFont());
|
||||
symbolDown.setLayoutData(new GridData());
|
||||
SWTUtil.setButtonDimensionHint(symbolDown);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param composite
|
||||
*/
|
||||
private void createSymbolListControl(Composite parent, int numColumns) {
|
||||
// Create the list
|
||||
symbolList = new List(parent, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
symbolList.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
enableSymbolButtons();
|
||||
}
|
||||
});
|
||||
symbolList.addMouseListener(new MouseListener() {
|
||||
|
||||
public void mouseDoubleClick(MouseEvent e) {
|
||||
editSymbolListItem();
|
||||
}
|
||||
|
||||
public void mouseDown(MouseEvent e) {
|
||||
// Handled by the selection event
|
||||
}
|
||||
|
||||
public void mouseUp(MouseEvent e) {
|
||||
// Handled by the selection event
|
||||
}
|
||||
});
|
||||
|
||||
// Make it occupy the first n-1 columns
|
||||
GridData gd = new GridData(GridData.FILL_BOTH);
|
||||
gd.horizontalSpan = numColumns - 1;
|
||||
symbolList.setLayoutData(gd);
|
||||
symbolList.setFont(parent.getFont());
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.wizards.IWizardTab#doRun(org.eclipse.core.resources.IProject, org.eclipse.core.runtime.IProgressMonitor)
|
||||
*/
|
||||
public void performApply(IProgressMonitor monitor) throws CoreException {
|
||||
if (monitor == null) {
|
||||
monitor = new NullProgressMonitor();
|
||||
}
|
||||
if (getContainer().getProject() != null) {
|
||||
// Store the paths and symbols
|
||||
monitor.beginTask("Setting Include Paths", 1);
|
||||
MakeBuildManager.setIncludePaths(getContainer().getProject(), getPathListContents());
|
||||
|
||||
monitor.beginTask("Setting Defined Symbols", 1);
|
||||
MakeBuildManager.setPreprocessorSymbols(getContainer().getProject(), getSymbolListContents());
|
||||
|
||||
MakeBuildManager.saveBuildInfo(getContainer().getProject());
|
||||
}
|
||||
}
|
||||
|
||||
public void performDefaults() {
|
||||
pathList.removeAll();
|
||||
symbolList.removeAll();
|
||||
if (getContainer().getProject() != null) {
|
||||
// dinglis-TODO: set list to preference settings
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Double-click handler to allow edit of path information
|
||||
*/
|
||||
protected void editPathListItem() {
|
||||
// Edit the selection index
|
||||
int index = pathList.getSelectionIndex();
|
||||
if (index != -1) {
|
||||
String selItem = pathList.getItem(index);
|
||||
if (selItem != null) {
|
||||
InputDialog dialog =
|
||||
new InputDialog(
|
||||
shell,
|
||||
CUIPlugin.getResourceString(PATH_TITLE),
|
||||
CUIPlugin.getResourceString(PATH_LABEL),
|
||||
selItem,
|
||||
null);
|
||||
String newItem = null;
|
||||
if (dialog.open() == InputDialog.OK) {
|
||||
newItem = dialog.getValue();
|
||||
if (newItem != null && !newItem.equals(selItem)) {
|
||||
pathList.setItem(index, newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Double-click handler to allow edit of symbol information
|
||||
*/
|
||||
protected void editSymbolListItem() {
|
||||
// Edit the selection index
|
||||
int index = symbolList.getSelectionIndex();
|
||||
if (index != -1) {
|
||||
String selItem = symbolList.getItem(index);
|
||||
if (selItem != null) {
|
||||
InputDialog dialog =
|
||||
new InputDialog(
|
||||
shell,
|
||||
CUIPlugin.getResourceString(SYMBOL_TITLE),
|
||||
CUIPlugin.getResourceString(SYMBOL_LABEL),
|
||||
selItem,
|
||||
null);
|
||||
String newItem = null;
|
||||
if (dialog.open() == InputDialog.OK) {
|
||||
newItem = dialog.getValue();
|
||||
if (newItem != null && !newItem.equals(selItem)) {
|
||||
symbolList.setItem(index, newItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Enables the buttons on the path control if the right conditions are met
|
||||
*/
|
||||
private void enablePathButtons() {
|
||||
// Enable the remove button if there is at least 1 item in the list
|
||||
int items = pathList.getItemCount();
|
||||
if (items > 0) {
|
||||
removePath.setEnabled(true);
|
||||
// Enable the up/down buttons depending on what item is selected
|
||||
int index = pathList.getSelectionIndex();
|
||||
pathUp.setEnabled(items > 1 && index > 0);
|
||||
pathDown.setEnabled(items > 1 && index < (items - 1));
|
||||
} else {
|
||||
removePath.setEnabled(false);
|
||||
pathUp.setEnabled(false);
|
||||
pathDown.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void enableSymbolButtons() {
|
||||
// Enable the remove button if there is at least 1 item in the list
|
||||
int items = symbolList.getItemCount();
|
||||
if (items > 0) {
|
||||
removeSymbol.setEnabled(true);
|
||||
// Enable the up/down buttons depending on what item is selected
|
||||
int index = symbolList.getSelectionIndex();
|
||||
symbolUp.setEnabled(items > 1 && index > 0);
|
||||
symbolDown.setEnabled(items > 1 && index < (items - 1));
|
||||
} else {
|
||||
removeSymbol.setEnabled(false);
|
||||
symbolUp.setEnabled(false);
|
||||
symbolDown.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.wizards.IWizardTab#getControl(org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
public void createControl(Composite parent) {
|
||||
this.shell = parent.getShell();
|
||||
|
||||
// Create the composite control for the tab
|
||||
int tabColumns = 3;
|
||||
Font font = parent.getFont();
|
||||
Composite composite = ControlFactory.createComposite(parent, tabColumns);
|
||||
composite.setFont(font);
|
||||
GridData gd;
|
||||
|
||||
// Create a label for the include paths control
|
||||
Label paths = ControlFactory.createLabel(composite, CUIPlugin.getResourceString(PATHS));
|
||||
gd = new GridData(GridData.FILL_HORIZONTAL);
|
||||
gd.horizontalSpan = tabColumns;
|
||||
paths.setLayoutData(gd);
|
||||
paths.setFont(font);
|
||||
|
||||
//Create the list and button controls
|
||||
createPathListControl(composite, tabColumns);
|
||||
createPathListButtons(composite);
|
||||
enablePathButtons();
|
||||
|
||||
// Create a label for the symbols control
|
||||
Label symbols = ControlFactory.createLabel(composite, CUIPlugin.getResourceString(SYMBOLS));
|
||||
gd = new GridData(GridData.FILL_HORIZONTAL);
|
||||
gd.horizontalSpan = tabColumns;
|
||||
symbols.setLayoutData(gd);
|
||||
symbols.setFont(font);
|
||||
|
||||
// Create list and button controls for symbols
|
||||
createSymbolListControl(composite, tabColumns);
|
||||
createSymbolListButtons(composite);
|
||||
enableSymbolButtons();
|
||||
|
||||
setPathListContents();
|
||||
pathList.select(0);
|
||||
enablePathButtons();
|
||||
setSymbolListContents();
|
||||
symbolList.select(0);
|
||||
enableSymbolButtons();
|
||||
setControl(composite);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
private String[] getPathListContents() {
|
||||
return pathList.getItems();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
private String[] getSymbolListContents() {
|
||||
return symbolList.getItems();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handleAddPath() {
|
||||
// Popup an entry dialog
|
||||
InputDialog dialog =
|
||||
new InputDialog(shell, CUIPlugin.getResourceString(PATH_TITLE), CUIPlugin.getResourceString(PATH_LABEL), "", null);
|
||||
String path = null;
|
||||
if (dialog.open() == InputDialog.OK) {
|
||||
path = dialog.getValue();
|
||||
}
|
||||
if (path != null && path.length() > 0) {
|
||||
pathList.add(path);
|
||||
pathList.select(pathList.getItemCount() - 1);
|
||||
enablePathButtons();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handleAddSymbol() {
|
||||
// Popup an entry dialog
|
||||
InputDialog dialog =
|
||||
new InputDialog(shell, CUIPlugin.getResourceString(SYMBOL_TITLE), CUIPlugin.getResourceString(SYMBOL_LABEL), "", null);
|
||||
String symbol = null;
|
||||
if (dialog.open() == InputDialog.OK) {
|
||||
symbol = dialog.getValue();
|
||||
}
|
||||
if (symbol != null && symbol.length() > 0) {
|
||||
symbolList.add(symbol);
|
||||
symbolList.select(symbolList.getItemCount() - 1);
|
||||
enableSymbolButtons();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handlePathDown() {
|
||||
// Get the selection index
|
||||
int index = pathList.getSelectionIndex();
|
||||
int items = pathList.getItemCount();
|
||||
if (index == -1 || index == items - 1) {
|
||||
return;
|
||||
}
|
||||
// Swap the items in the list
|
||||
String selItem = pathList.getItem(index);
|
||||
pathList.remove(index);
|
||||
if (index + 1 == items) {
|
||||
pathList.add(selItem);
|
||||
} else {
|
||||
pathList.add(selItem, ++index);
|
||||
}
|
||||
|
||||
// Keep the swapped item selected
|
||||
pathList.select(index);
|
||||
enablePathButtons();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handlePathUp() {
|
||||
// Get the selection index
|
||||
int index = pathList.getSelectionIndex();
|
||||
if (index == -1 || index == 0) {
|
||||
return;
|
||||
}
|
||||
// Swap the items in the list
|
||||
String selItem = pathList.getItem(index);
|
||||
pathList.remove(index);
|
||||
pathList.add(selItem, --index);
|
||||
|
||||
// Keep the index selected
|
||||
pathList.select(index);
|
||||
enablePathButtons();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handleRemovePath() {
|
||||
// Get the selection index
|
||||
int index = pathList.getSelectionIndex();
|
||||
if (index == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove the element at that index
|
||||
pathList.remove(index);
|
||||
index = index - 1 < 0 ? 0 : index - 1;
|
||||
pathList.select(index);
|
||||
|
||||
// Check if the buttons should still be enabled
|
||||
enablePathButtons();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handleRemoveSymbol() {
|
||||
// Get the selection index
|
||||
int index = symbolList.getSelectionIndex();
|
||||
if (index == -1) {
|
||||
return;
|
||||
}
|
||||
// Remove the item at that index
|
||||
symbolList.remove(index);
|
||||
index = index - 1 < 0 ? 0 : index - 1;
|
||||
symbolList.select(index);
|
||||
// Check if the button state should be toggled
|
||||
enableSymbolButtons();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handleSymbolDown() {
|
||||
// Get the selection index
|
||||
int index = symbolList.getSelectionIndex();
|
||||
int items = symbolList.getItemCount();
|
||||
if (index == -1 || index == items - 1) {
|
||||
return;
|
||||
}
|
||||
// Swap the items in the list
|
||||
String selItem = symbolList.getItem(index);
|
||||
symbolList.remove(index);
|
||||
if (index + 1 == items) {
|
||||
symbolList.add(selItem);
|
||||
} else {
|
||||
symbolList.add(selItem, ++index);
|
||||
}
|
||||
|
||||
// Keep the swapped item selected
|
||||
symbolList.select(index);
|
||||
enableSymbolButtons();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected void handleSymbolUp() {
|
||||
// Get the selection index
|
||||
int index = symbolList.getSelectionIndex();
|
||||
if (index == -1 || index == 0) {
|
||||
return;
|
||||
}
|
||||
// Swap the items in the list
|
||||
String selItem = symbolList.getItem(index);
|
||||
symbolList.remove(index);
|
||||
symbolList.add(selItem, --index);
|
||||
|
||||
// Keep the index selected
|
||||
symbolList.select(index);
|
||||
enableSymbolButtons();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.wizards.IWizardTab#isValid()
|
||||
*/
|
||||
public boolean isValid() {
|
||||
// Info on this page is not critical
|
||||
return true;
|
||||
}
|
||||
|
||||
private void setPathListContents() {
|
||||
if (getContainer().getProject() != null) {
|
||||
try {
|
||||
IMakeBuilderInfo info = MakeBuildManager.getBuildInfo(getContainer().getProject());
|
||||
pathList.setItems(info.getIncludePaths());
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setSymbolListContents() {
|
||||
if (getContainer().getProject() != null) {
|
||||
try {
|
||||
IMakeBuilderInfo info = MakeBuildManager.getBuildInfo(getContainer().getProject());
|
||||
symbolList.setItems(info.getPreprocessorSymbols());
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,331 @@
|
|||
package org.eclipse.cdt.make.ui;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.core.BuildInfoFactory;
|
||||
import org.eclipse.cdt.make.core.IMakeBuilderInfo;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.ui.AbstractCOptionPage;
|
||||
import org.eclipse.cdt.ui.ICOptionContainer;
|
||||
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
|
||||
import org.eclipse.cdt.utils.ui.controls.RadioButtonsArea;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Preferences;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.events.SelectionListener;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Event;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
public class SettingsBlock extends AbstractCOptionPage {
|
||||
|
||||
private static final String PREFIX = "SettingsBlock"; //$NON-NLS-1$
|
||||
private static final String MAKE_LABEL = PREFIX + ".label"; //$NON-NLS-1$
|
||||
private static final String MAKE_MESSAGE = PREFIX + ".message"; //$NON-NLS-1$
|
||||
|
||||
private static final String MAKE_SETTING_GROUP = PREFIX + ".makeSetting.group_label"; //$NON-NLS-1$
|
||||
private static final String MAKE_SETTING_KEEP_GOING = PREFIX + ".makeSetting.keepOnGoing"; //$NON-NLS-1$
|
||||
private static final String MAKE_SETTING_STOP_ERROR = PREFIX + ".makeSetting.stopOnError"; //$NON-NLS-1$
|
||||
|
||||
private static final String MAKE_CMD_GROUP = PREFIX + ".makeCmd.group_label"; //$NON-NLS-1$
|
||||
private static final String MAKE_CMD_USE_DEFAULT = PREFIX + ".makeCmd.use_default"; //$NON-NLS-1$
|
||||
private static final String MAKE_CMD_LABEL = PREFIX + ".makeCmd.label";
|
||||
|
||||
private static final String MAKE_WORKBENCH_BUILD_GROUP = PREFIX + ".makeWorkbench.group_label";
|
||||
private static final String MAKE_WORKBENCH_BUILD_TYPE = PREFIX + ".makeWorkbench.type";
|
||||
private static final String MAKE_WORKBENCH_BUILD_TARGET = PREFIX + ".makeWorkbench.target";
|
||||
private static final String MAKE_WORKBENCH_BUILD_AUTO = PREFIX + ".makeWorkbench.auto";
|
||||
private static final String MAKE_WORKBENCH_BUILD_INCR = PREFIX + ".makeWorkbench.incremental";
|
||||
private static final String MAKE_WORKBENCH_BUILD_FULL = PREFIX + ".makeWorkbench.full";
|
||||
|
||||
private static final String MAKE_BUILD_DIR_GROUP = PREFIX + ".makeDir.group_label";
|
||||
private static final String MAKE_BUILD_DIR_LABEL = PREFIX + ".makeDir.label";
|
||||
private static final String MAKE_BUILD_DIR_BROWSE = PREFIX + ".makeDir.browse";
|
||||
|
||||
private static final String KEEP_ARG = "keep"; //$NON-NLS-1$
|
||||
private static final String STOP_ARG = "stop"; //$NON-NLS-1$
|
||||
|
||||
protected RadioButtonsArea stopRadioButtons;
|
||||
protected Button defButton;
|
||||
protected Text cmdText;
|
||||
protected Text makeDirText;
|
||||
|
||||
private Text targetFull;
|
||||
private Text targetIncr;
|
||||
private Text targetAuto;
|
||||
private Button fFullButton;
|
||||
private Button fIncrButton;
|
||||
private Button fAutoButton;
|
||||
|
||||
private IMakeBuilderInfo fBuildInfo;
|
||||
private Preferences fPrefs;
|
||||
private String fBuilderID;
|
||||
|
||||
public SettingsBlock(Preferences prefs, String builderID) {
|
||||
super(MakeUIPlugin.getResourceString(MAKE_LABEL));
|
||||
setDescription(MakeUIPlugin.getResourceString(MAKE_MESSAGE));
|
||||
fPrefs = prefs;
|
||||
fBuilderID = builderID;
|
||||
}
|
||||
|
||||
protected void createSettingControls(Composite parent) {
|
||||
String[][] radios = new String[][] { { MakeUIPlugin.getResourceString(MAKE_SETTING_STOP_ERROR), STOP_ARG }, {
|
||||
MakeUIPlugin.getResourceString(MAKE_SETTING_KEEP_GOING), KEEP_ARG }
|
||||
};
|
||||
stopRadioButtons = new RadioButtonsArea(parent, MakeUIPlugin.getResourceString(MAKE_SETTING_GROUP), 1, radios);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.marginHeight = 0;
|
||||
layout.marginWidth = 0;
|
||||
stopRadioButtons.setLayout(layout);
|
||||
if (fBuildInfo.isStopOnError())
|
||||
stopRadioButtons.setSelectValue(STOP_ARG);
|
||||
else
|
||||
stopRadioButtons.setSelectValue(KEEP_ARG);
|
||||
}
|
||||
|
||||
protected void createBuildCmdControls(Composite parent) {
|
||||
Group group = ControlFactory.createGroup(parent, MakeUIPlugin.getResourceString(MAKE_CMD_GROUP), 1);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.numColumns = 2;
|
||||
layout.makeColumnsEqualWidth = false;
|
||||
layout.horizontalSpacing = 0;
|
||||
group.setLayout(layout);
|
||||
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||
defButton = ControlFactory.createCheckBox(group, MakeUIPlugin.getResourceString(MAKE_CMD_USE_DEFAULT));
|
||||
defButton.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
if (defButton.getSelection() == true) {
|
||||
cmdText.setEnabled(false);
|
||||
stopRadioButtons.setEnabled(true);
|
||||
getContainer().updateContainer();
|
||||
} else {
|
||||
cmdText.setEnabled(true);
|
||||
stopRadioButtons.setEnabled(false);
|
||||
getContainer().updateContainer();
|
||||
}
|
||||
}
|
||||
});
|
||||
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
|
||||
gd.horizontalSpan = 2;
|
||||
defButton.setLayoutData(gd);
|
||||
Label label = ControlFactory.createLabel(group, MakeUIPlugin.getResourceString(MAKE_CMD_LABEL));
|
||||
((GridData) (label.getLayoutData())).horizontalAlignment = GridData.BEGINNING;
|
||||
((GridData) (label.getLayoutData())).grabExcessHorizontalSpace = false;
|
||||
cmdText = ControlFactory.createTextField(group, SWT.SINGLE | SWT.BORDER);
|
||||
((GridData) (cmdText.getLayoutData())).horizontalAlignment = GridData.FILL;
|
||||
((GridData) (cmdText.getLayoutData())).grabExcessHorizontalSpace = true;
|
||||
cmdText.addListener(SWT.Modify, new Listener() {
|
||||
public void handleEvent(Event e) {
|
||||
getContainer().updateContainer();
|
||||
}
|
||||
});
|
||||
if (fBuildInfo.getBuildCommand() != null) {
|
||||
StringBuffer cmd = new StringBuffer(fBuildInfo.getBuildCommand().toOSString());
|
||||
String args = fBuildInfo.getBuildArguments();
|
||||
if ( args != null && !args.equals("")) {
|
||||
cmd.append(" ");
|
||||
cmd.append(args);
|
||||
}
|
||||
cmdText.setText(cmd.toString());
|
||||
}
|
||||
if (fBuildInfo.isDefaultBuildCmd()) {
|
||||
cmdText.setEnabled(false);
|
||||
} else {
|
||||
stopRadioButtons.setEnabled(false);
|
||||
}
|
||||
defButton.setSelection(fBuildInfo.isDefaultBuildCmd());
|
||||
}
|
||||
|
||||
protected void createWorkBenchBuildControls(Composite parent) {
|
||||
SelectionAdapter selectionAdapter = new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
targetAuto.setEnabled(fAutoButton.getSelection());
|
||||
targetFull.setEnabled(fFullButton.getSelection());
|
||||
targetIncr.setEnabled(fIncrButton.getSelection());
|
||||
getContainer().updateContainer();
|
||||
}
|
||||
|
||||
};
|
||||
Group group = ControlFactory.createGroup(parent, MakeUIPlugin.getResourceString(MAKE_WORKBENCH_BUILD_GROUP), 1);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.numColumns = 2;
|
||||
layout.makeColumnsEqualWidth = false;
|
||||
group.setLayout(layout);
|
||||
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||
Label label = new Label(group, SWT.NONE);
|
||||
label.setText(MakeUIPlugin.getResourceString(MAKE_WORKBENCH_BUILD_TYPE));
|
||||
label = new Label(group, SWT.NONE);
|
||||
label.setText(MakeUIPlugin.getResourceString(MAKE_WORKBENCH_BUILD_TARGET));
|
||||
fAutoButton = ControlFactory.createCheckBox(group, MakeUIPlugin.getResourceString(MAKE_WORKBENCH_BUILD_AUTO));
|
||||
fAutoButton.addSelectionListener(selectionAdapter);
|
||||
fAutoButton.setSelection(fBuildInfo.isAutoBuildEnable());
|
||||
targetAuto = ControlFactory.createTextField(group, SWT.SINGLE | SWT.BORDER);
|
||||
targetAuto.setText(fBuildInfo.getAutoBuildTarget());
|
||||
((GridData) (targetAuto.getLayoutData())).horizontalAlignment = GridData.FILL;
|
||||
((GridData) (targetAuto.getLayoutData())).grabExcessHorizontalSpace = true;
|
||||
fIncrButton = ControlFactory.createCheckBox(group, MakeUIPlugin.getResourceString(MAKE_WORKBENCH_BUILD_INCR));
|
||||
fIncrButton.addSelectionListener(selectionAdapter);
|
||||
fIncrButton.setSelection(fBuildInfo.isIncrementalBuildEnabled());
|
||||
targetIncr = ControlFactory.createTextField(group, SWT.SINGLE | SWT.BORDER);
|
||||
targetIncr.setText(fBuildInfo.getIncrementalBuildTarget());
|
||||
((GridData) (targetIncr.getLayoutData())).horizontalAlignment = GridData.FILL;
|
||||
((GridData) (targetIncr.getLayoutData())).grabExcessHorizontalSpace = true;
|
||||
fFullButton = ControlFactory.createCheckBox(group, MakeUIPlugin.getResourceString(MAKE_WORKBENCH_BUILD_FULL));
|
||||
fFullButton.addSelectionListener(selectionAdapter);
|
||||
fFullButton.setSelection(fBuildInfo.isFullBuildEnabled());
|
||||
targetFull = ControlFactory.createTextField(group, SWT.SINGLE | SWT.BORDER);
|
||||
targetFull.setText(fBuildInfo.getFullBuildTarget());
|
||||
((GridData) (targetFull.getLayoutData())).horizontalAlignment = GridData.FILL;
|
||||
((GridData) (targetFull.getLayoutData())).grabExcessHorizontalSpace = true;
|
||||
selectionAdapter.widgetSelected(null);
|
||||
}
|
||||
|
||||
protected void createBuilderWorkingDirControls(Composite parent) {
|
||||
Group group = ControlFactory.createGroup(parent, MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_GROUP), 1);
|
||||
GridLayout layout = new GridLayout();
|
||||
layout.numColumns = 3;
|
||||
layout.makeColumnsEqualWidth = false;
|
||||
group.setLayout(layout);
|
||||
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||
Label label = ControlFactory.createLabel(group, MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_LABEL));
|
||||
((GridData) (label.getLayoutData())).horizontalAlignment = GridData.BEGINNING;
|
||||
((GridData) (label.getLayoutData())).grabExcessHorizontalSpace = false;
|
||||
makeDirText = ControlFactory.createTextField(group, SWT.SINGLE | SWT.BORDER);
|
||||
((GridData) (makeDirText.getLayoutData())).horizontalAlignment = GridData.FILL;
|
||||
((GridData) (makeDirText.getLayoutData())).grabExcessHorizontalSpace = true;
|
||||
makeDirText.addListener(SWT.Modify, new Listener() {
|
||||
public void handleEvent(Event e) {
|
||||
getContainer().updateContainer();
|
||||
}
|
||||
});
|
||||
Button browse = new Button(group, SWT.NONE);
|
||||
browse.setText(MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_BROWSE));
|
||||
browse.addSelectionListener(new SelectionListener() {
|
||||
public void widgetDefaultSelected(SelectionEvent e) {
|
||||
}
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
}
|
||||
});
|
||||
makeDirText.setText(fBuildInfo.getBuildLocation().toOSString());
|
||||
}
|
||||
|
||||
public void createControl(Composite parent) {
|
||||
Composite composite = ControlFactory.createComposite(parent, 1);
|
||||
|
||||
createSettingControls(composite);
|
||||
createBuildCmdControls(composite);
|
||||
createWorkBenchBuildControls(composite);
|
||||
|
||||
if (getContainer().getProject() != null) {
|
||||
createBuilderWorkingDirControls(composite);
|
||||
}
|
||||
|
||||
setControl(composite);
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
if (defButton.getSelection() != true) {
|
||||
String cmd = getBuildLine();
|
||||
if (cmd == null || cmd.length() == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void performApply(IProgressMonitor monitor) throws CoreException {
|
||||
if (monitor == null) {
|
||||
monitor = new NullProgressMonitor();
|
||||
}
|
||||
monitor.beginTask("Settings", 1);
|
||||
IMakeBuilderInfo info;
|
||||
if (getContainer().getProject() != null) {
|
||||
info = BuildInfoFactory.create(getContainer().getProject(), fBuilderID);
|
||||
} else {
|
||||
info = BuildInfoFactory.create(fPrefs, fBuilderID);
|
||||
}
|
||||
info.setStopOnError(isStopOnError());
|
||||
info.setUseDefaultBuildCmd(useDefaultBuildCmd());
|
||||
if (!useDefaultBuildCmd()) {
|
||||
String bldLine = getBuildLine();
|
||||
int start = 0;
|
||||
int end = -1;
|
||||
if (!bldLine.startsWith("\"")) {
|
||||
end = bldLine.indexOf(' ');
|
||||
} else {
|
||||
start = 1;
|
||||
end = bldLine.indexOf('"', 1);
|
||||
}
|
||||
IPath path;
|
||||
if (end == -1) {
|
||||
path = new Path(bldLine);
|
||||
} else {
|
||||
path = new Path(bldLine.substring(start, end));
|
||||
}
|
||||
info.setBuildCommand(path);
|
||||
String args = "";
|
||||
if (end != -1) {
|
||||
args = bldLine.substring(end + 1);
|
||||
}
|
||||
info.setBuildArguments(args);
|
||||
}
|
||||
}
|
||||
|
||||
public void performDefaults() {
|
||||
if (getContainer().getProject() != null) {
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isStopOnError() {
|
||||
return stopRadioButtons.getSelectedValue().equals(STOP_ARG);
|
||||
}
|
||||
|
||||
private boolean useDefaultBuildCmd() {
|
||||
return defButton.getSelection();
|
||||
}
|
||||
|
||||
private String getBuildLine() {
|
||||
if (cmdText != null) {
|
||||
String cmd = cmdText.getText();
|
||||
if (cmd != null)
|
||||
return cmd.trim();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setContainer(ICOptionContainer container) {
|
||||
super.setContainer(container);
|
||||
if (getContainer().getProject() != null) {
|
||||
fBuildInfo = BuildInfoFactory.create(getContainer().getProject(), fBuilderID);
|
||||
} else {
|
||||
fBuildInfo = BuildInfoFactory.create(fPrefs, fBuilderID);
|
||||
}
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
if (defButton.getSelection() != true) {
|
||||
String cmd = getBuildLine();
|
||||
if (cmd == null || cmd.length() == 0) {
|
||||
return "Must enter a build command";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* Created on 25-Jul-2003
|
||||
*
|
||||
* Copyright (c) 2002,2003 QNX Software Systems Ltd.
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
***********************************************************************/
|
||||
package org.eclipse.cdt.make.ui.actions;
|
||||
|
||||
public class CreateBuildAction extends MakeAction {
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.ui.actions;
|
||||
|
||||
import org.eclipse.cdt.make.ui.views.MakeTarget;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.ui.IObjectActionDelegate;
|
||||
import org.eclipse.ui.IWorkbenchPart;
|
||||
import org.eclipse.ui.actions.ActionDelegate;
|
||||
|
||||
public class MakeAction extends ActionDelegate implements IObjectActionDelegate {
|
||||
ISelection fSelection;
|
||||
IWorkbenchPart part;
|
||||
|
||||
/**
|
||||
* @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
|
||||
*/
|
||||
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
|
||||
part = targetPart;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IActionDelegate#run(IAction)
|
||||
*/
|
||||
public void run(IAction action) {
|
||||
if (fSelection instanceof IStructuredSelection
|
||||
&& ((IStructuredSelection) fSelection).getFirstElement() instanceof IProject) {
|
||||
IProject project = (IProject) ((IStructuredSelection) fSelection).getFirstElement();
|
||||
MakeBuildAction build = null;
|
||||
if (action.getId().equals("org.eclipse.cdt.make.ui.makeAction.all")) {
|
||||
build = new MakeBuildAction(new org.eclipse.cdt.make.ui.views.MakeTarget[] { new MakeTarget(project, "all")}, part.getSite().getShell(), "all");
|
||||
} else if (action.getId().equals("org.eclipse.cdt.make.ui.makeAction.clean")) {
|
||||
build = new MakeBuildAction(new MakeTarget[] { new MakeTarget(project, "all")}, part.getSite().getShell(), "all");
|
||||
} else if (action.getId().equals("org.eclipse.cdt.make.ui.makeAction.rebuild")) {
|
||||
build = new MakeBuildAction(new MakeTarget[] { new MakeTarget(project, "all")}, part.getSite().getShell(), "all");
|
||||
}
|
||||
if ( build != null ) {
|
||||
build.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @see IActionDelegate#selectionChanged(IAction, ISelection)
|
||||
*/
|
||||
public void selectionChanged(IAction action, ISelection selection) {
|
||||
fSelection = selection;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
package org.eclipse.cdt.make.ui.actions;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
||||
import org.eclipse.cdt.make.ui.views.MakeTarget;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
||||
import org.eclipse.jface.operation.IRunnableWithProgress;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.IEditorInput;
|
||||
import org.eclipse.ui.IEditorPart;
|
||||
import org.eclipse.ui.IEditorReference;
|
||||
import org.eclipse.ui.IFileEditorInput;
|
||||
import org.eclipse.ui.IWorkbenchPage;
|
||||
import org.eclipse.ui.IWorkbenchWindow;
|
||||
import org.eclipse.ui.PlatformUI;
|
||||
import org.eclipse.ui.actions.BuildAction;
|
||||
|
||||
|
||||
public class MakeBuildAction extends Action {
|
||||
static final String PREFIX = "BuildAction.";
|
||||
|
||||
MakeTarget[] targets;
|
||||
Shell shell;
|
||||
|
||||
public MakeBuildAction (MakeTarget[] targets, Shell shell, String s) {
|
||||
super (s);
|
||||
this.shell = shell;
|
||||
this.targets = targets;
|
||||
|
||||
setToolTipText(PREFIX);
|
||||
setImageDescriptor(CPluginImages.DESC_BUILD_MENU);
|
||||
}
|
||||
|
||||
/**
|
||||
* Causes all editors to save any modified resources depending on the user's
|
||||
* preference.
|
||||
*/
|
||||
void saveAllResources() {
|
||||
|
||||
if (!BuildAction.isSaveAllSet())
|
||||
return;
|
||||
|
||||
List projects = new ArrayList();
|
||||
for (int i = 0; i < targets.length; ++i ) {
|
||||
MakeTarget target = targets[i];
|
||||
projects.add(target.getResource().getProject());
|
||||
}
|
||||
|
||||
IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
|
||||
for (int i = 0; i < windows.length; i++) {
|
||||
IWorkbenchPage [] pages = windows[i].getPages();
|
||||
for (int j = 0; j < pages.length; j++) {
|
||||
IWorkbenchPage page = pages[j];
|
||||
IEditorReference[] editorReferences = page.getEditorReferences();
|
||||
for (int k = 0; k < editorReferences.length; k++) {
|
||||
IEditorPart editor = editorReferences[k].getEditor(false);
|
||||
if (editor != null && editor.isDirty()) {
|
||||
IEditorInput input = editor.getEditorInput();
|
||||
if (input instanceof IFileEditorInput) {
|
||||
IFile inputFile = ((IFileEditorInput)input).getFile();
|
||||
if (projects.contains(inputFile.getProject())) {
|
||||
page.saveEditor(editor, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
saveAllResources();
|
||||
IRunnableWithProgress op = new IRunnableWithProgress () {
|
||||
public void run(IProgressMonitor monitor)
|
||||
throws InvocationTargetException, InterruptedException {
|
||||
for (int i = 0; i < targets.length; ++i ) {
|
||||
// MakeTarget target = targets[i];
|
||||
// IResource res = target.getResource();
|
||||
// IProject project = res.getProject();
|
||||
|
||||
// try {
|
||||
// if (! project.equals(res) || target.isLeaf()) {
|
||||
// String dir = res.getLocation().toOSString();
|
||||
// }
|
||||
// project.build (IncrementalProjectBuilder.FULL_BUILD, MakeBuilder.BUILDER_ID, monitor);
|
||||
// } catch (CoreException e) {
|
||||
// }
|
||||
}
|
||||
}
|
||||
};
|
||||
new ProgressMonitorDialog(shell).run(true, true, op);
|
||||
} catch (InvocationTargetException e) {
|
||||
// handle exception
|
||||
} catch (InterruptedException e) {
|
||||
// handle cancelation
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.ui.preferences;
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeProjectOptionBlock;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICOptionContainer;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.jface.preference.PreferencePage;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
|
||||
/**
|
||||
* This class represents a preference page that
|
||||
* is contributed to the Preferences dialog. By
|
||||
* subclassing <samp>FieldEditorPreferencePage</samp>, we
|
||||
* can use the field support built into JFace that allows
|
||||
* us to create a page that is small and knows how to
|
||||
* save, restore and apply itself.
|
||||
* <p>
|
||||
* This page is used to modify preferences only. They
|
||||
* are stored in the preference store that belongs to
|
||||
* the main plug-in class. That way, preferences can
|
||||
* be accessed directly via the preference store.
|
||||
*/
|
||||
|
||||
public class MakePreferencePage extends PreferencePage implements IWorkbenchPreferencePage, ICOptionContainer {
|
||||
|
||||
private MakeProjectOptionBlock fOptionBlock;
|
||||
|
||||
public MakePreferencePage() {
|
||||
setPreferenceStore(MakeUIPlugin.getDefault().getPreferenceStore());
|
||||
setDescription("Make Project Preferences");
|
||||
fOptionBlock = new MakeProjectOptionBlock(this);
|
||||
}
|
||||
|
||||
/*
|
||||
* @see PreferencePage#createControl(Composite)
|
||||
*/
|
||||
public void createControl(Composite parent) {
|
||||
super.createControl(parent);
|
||||
// WorkbenchHelp.setHelp(parent, ICMakeHelpContextIds.PROJECT_PROPERTY_PAGE);
|
||||
}
|
||||
|
||||
protected Control createContents(Composite parent) {
|
||||
return fOptionBlock.createContents(parent);
|
||||
}
|
||||
|
||||
|
||||
public void init(IWorkbench workbench) {
|
||||
}
|
||||
|
||||
public boolean performOk() {
|
||||
return fOptionBlock.performOk(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see DialogPage#setVisible(boolean)
|
||||
*/
|
||||
public void setVisible(boolean visible) {
|
||||
super.setVisible(visible);
|
||||
fOptionBlock.setVisible(visible);
|
||||
}
|
||||
|
||||
public void updateContainer() {
|
||||
fOptionBlock.update();
|
||||
boolean ok = fOptionBlock.isValid();
|
||||
if (!ok) {
|
||||
setErrorMessage(fOptionBlock.getErrorMessage());
|
||||
}
|
||||
if (ok) {
|
||||
setErrorMessage(null);
|
||||
}
|
||||
setValid(ok);
|
||||
}
|
||||
|
||||
public IProject getProject() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
updateContainer();
|
||||
return super.isValid();
|
||||
}
|
||||
|
||||
protected void performDefaults() {
|
||||
fOptionBlock.performDefaults();
|
||||
super.performDefaults();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,125 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2003 IBM Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Corporation - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.make.ui.properties;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeProjectOptionBlock;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICOptionContainer;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
|
||||
import org.eclipse.jface.operation.IRunnableWithProgress;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.FillLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation;
|
||||
import org.eclipse.ui.dialogs.PropertyPage;
|
||||
|
||||
public class MakePropertyPage extends PropertyPage implements ICOptionContainer {
|
||||
|
||||
private MakeProjectOptionBlock fOptionBlock;
|
||||
|
||||
private static final String MSG_CLOSEDPROJECT = "MakeProjectPropertyPage.closedproject";
|
||||
|
||||
public MakePropertyPage() {
|
||||
super();
|
||||
fOptionBlock = new MakeProjectOptionBlock(this);
|
||||
}
|
||||
|
||||
|
||||
protected Control createContents(Composite parent) {
|
||||
Composite composite = new Composite(parent, SWT.NONE);
|
||||
composite.setLayout(new FillLayout());
|
||||
|
||||
IProject project = getProject();
|
||||
if (!project.isOpen()) {
|
||||
contentForClosedProject(composite);
|
||||
} else {
|
||||
contentForCProject(composite);
|
||||
}
|
||||
|
||||
return composite;
|
||||
}
|
||||
|
||||
private void contentForCProject(Composite parent) {
|
||||
fOptionBlock.createContents(parent);
|
||||
// WorkbenchHelp.setHelp(parent, ICMakeHelpContextIds.PROJECT_PROPERTY_PAGE);
|
||||
}
|
||||
|
||||
private void contentForClosedProject(Composite parent) {
|
||||
Label label = new Label(parent, SWT.LEFT);
|
||||
label.setText(MakeUIPlugin.getResourceString(MSG_CLOSEDPROJECT));
|
||||
label.setFont(parent.getFont());
|
||||
|
||||
noDefaultAndApplyButton();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see PreferencePage#performOk
|
||||
*/
|
||||
public boolean performOk() {
|
||||
Shell shell = getControl().getShell();
|
||||
IRunnableWithProgress runnable = new IRunnableWithProgress() {
|
||||
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
|
||||
fOptionBlock.performOk(monitor);
|
||||
}
|
||||
};
|
||||
IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(runnable);
|
||||
try {
|
||||
new ProgressMonitorDialog(shell).run(false, true, op);
|
||||
} catch (InvocationTargetException e) {
|
||||
// dinglis-TODO show/log errors
|
||||
return false;
|
||||
} catch (InterruptedException e) {
|
||||
// cancelled
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public IProject getProject() {
|
||||
Object element = getElement();
|
||||
if (element instanceof IProject) {
|
||||
return (IProject) element;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see DialogPage#setVisible(boolean)
|
||||
*/
|
||||
public void setVisible(boolean visible) {
|
||||
super.setVisible(visible);
|
||||
fOptionBlock.setVisible(visible);
|
||||
}
|
||||
|
||||
public void updateContainer() {
|
||||
fOptionBlock.update();
|
||||
setValid(fOptionBlock.isValid());
|
||||
setErrorMessage(fOptionBlock.getErrorMessage());
|
||||
}
|
||||
|
||||
protected void performDefaults() {
|
||||
fOptionBlock.performDefaults();
|
||||
super.performDefaults();
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
updateContainer();
|
||||
return super.isValid();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,168 @@
|
|||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.resources.IResourceChangeEvent;
|
||||
import org.eclipse.core.resources.IResourceChangeListener;
|
||||
import org.eclipse.core.resources.IResourceDelta;
|
||||
import org.eclipse.core.resources.IWorkspace;
|
||||
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||
import org.eclipse.jface.viewers.ITreeContentProvider;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
|
||||
public class MakeContentProvider implements ITreeContentProvider, IResourceChangeListener {
|
||||
|
||||
protected Viewer viewer;
|
||||
|
||||
/**
|
||||
* Constructor for MakeContentProvider
|
||||
*/
|
||||
public MakeContentProvider() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ITreeContentProvider#getChildren(Object)
|
||||
*/
|
||||
public Object[] getChildren(Object obj) {
|
||||
if (obj instanceof MakeTarget) {
|
||||
MakeTarget md = (MakeTarget)obj;
|
||||
return (Object[])md.getChildren();
|
||||
}
|
||||
return new Object[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ITreeContentProvider#getParent(Object)
|
||||
*/
|
||||
public Object getParent(Object obj) {
|
||||
if (obj instanceof MakeTarget) {
|
||||
MakeTarget directives = (MakeTarget)obj;
|
||||
return directives.getParent();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ITreeContentProvider#hasChildren(Object)
|
||||
*/
|
||||
public boolean hasChildren(Object obj) {
|
||||
return getChildren(obj).length > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IStructuredContentProvider#getElements(Object)
|
||||
*/
|
||||
public Object[] getElements(Object obj) {
|
||||
return getChildren(obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IContentProvider#dispose()
|
||||
*/
|
||||
public void dispose() {
|
||||
if (viewer != null) {
|
||||
Object obj = viewer.getInput();
|
||||
if (obj instanceof MakeTarget) {
|
||||
MakeTarget target = (MakeTarget)obj;
|
||||
IWorkspace workspace = target.getResource().getWorkspace();
|
||||
workspace.removeResourceChangeListener(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IContentProvider#inputChanged(Viewer, Object, Object)
|
||||
*/
|
||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||
this.viewer = viewer;
|
||||
if (oldInput != null) {
|
||||
if (oldInput instanceof MakeTarget) {
|
||||
IResource res = ((MakeTarget)oldInput).getResource();
|
||||
if (res instanceof IWorkspaceRoot) {
|
||||
IWorkspace workspace = res.getWorkspace();
|
||||
workspace.removeResourceChangeListener(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (newInput != null) {
|
||||
if (newInput instanceof MakeTarget) {
|
||||
IResource res = ((MakeTarget)newInput).getResource();
|
||||
if (res instanceof IWorkspaceRoot) {
|
||||
IWorkspace workspace = res.getWorkspace();
|
||||
workspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void resourceChanged (final IResourceChangeEvent event) {
|
||||
final IResourceDelta deltas = event.getDelta();
|
||||
Control ctrl = viewer.getControl();
|
||||
if (ctrl != null && !ctrl.isDisposed()) {
|
||||
// Get the affected resource
|
||||
ctrl.getDisplay().syncExec(new Runnable() {
|
||||
public void run() {
|
||||
processDelta (deltas);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void processDelta (IResourceDelta delta) {
|
||||
// Bail out if the widget was disposed.
|
||||
Control ctrl = viewer.getControl();
|
||||
if (ctrl == null || ctrl.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (delta == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
int changeFlags = delta.getFlags();
|
||||
|
||||
IResourceDelta[] affectedChildren =
|
||||
delta.getAffectedChildren(IResourceDelta.CHANGED);
|
||||
|
||||
// Not interested in Content changes.
|
||||
for (int i = 0; i < affectedChildren.length; i++) {
|
||||
if ((affectedChildren[i].getFlags() & IResourceDelta.TYPE) != 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// handle open and closing.
|
||||
if ((changeFlags & (IResourceDelta.OPEN | IResourceDelta.SYNC)) != 0) {
|
||||
ctrl.setRedraw(false);
|
||||
viewer.refresh();
|
||||
ctrl.setRedraw(true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Handle changed children recursively.
|
||||
for (int i = 0; i < affectedChildren.length; i++) {
|
||||
processDelta(affectedChildren[i]);
|
||||
}
|
||||
|
||||
// We are only interested in creation and deletion of folders.
|
||||
affectedChildren = delta.getAffectedChildren(IResourceDelta.REMOVED | IResourceDelta.ADDED);
|
||||
if (affectedChildren.length > 0) {
|
||||
for (int i = 0; i < affectedChildren.length; i++) {
|
||||
IResource r = affectedChildren[i].getResource();
|
||||
if (r instanceof IContainer) {
|
||||
ctrl.setRedraw(false);
|
||||
viewer.refresh();
|
||||
ctrl.setRedraw(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import java.util.Hashtable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.ILabelProvider;
|
||||
import org.eclipse.jface.viewers.ILabelProviderListener;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
|
||||
public class MakeLabelProvider implements ILabelProvider {
|
||||
|
||||
/**
|
||||
* The cache of images that have been dispensed by this provider.
|
||||
* Maps ImageDescriptor->Image.
|
||||
*/
|
||||
private Map imageTable = null;
|
||||
|
||||
/**
|
||||
* @see ILabelProvider#getImage(Object)
|
||||
*/
|
||||
public Image getImage(Object obj) {
|
||||
Image image = null;
|
||||
//obtain the cached image corresponding to the descriptor
|
||||
if (imageTable == null) {
|
||||
imageTable = new Hashtable(4);
|
||||
}
|
||||
if (obj instanceof MakeTarget) {
|
||||
ImageDescriptor descriptor = ((MakeTarget)obj).getImageDescriptor();
|
||||
image = (Image) imageTable.get(descriptor);
|
||||
if (image == null) {
|
||||
image = descriptor.createImage();
|
||||
imageTable.put(descriptor, image);
|
||||
}
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ILabelProvider#getText(Object)
|
||||
*/
|
||||
public String getText(Object obj) {
|
||||
if (obj instanceof MakeTarget) {
|
||||
return ((MakeTarget)obj).toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IBaseLabelProvider#addListener(ILabelProviderListener)
|
||||
*/
|
||||
public void addListener(ILabelProviderListener arg0) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IBaseLabelProvider#dispose()
|
||||
*/
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IBaseLabelProvider#isLabelProperty(Object, String)
|
||||
*/
|
||||
public boolean isLabelProperty(Object arg0, String arg1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IBaseLabelProvider#removeListener(ILabelProviderListener)
|
||||
*/
|
||||
public void removeListener(ILabelProviderListener arg0) {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,139 @@
|
|||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.eclipse.cdt.core.CProjectNature;
|
||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
||||
import org.eclipse.core.resources.IContainer;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.resources.IWorkspaceRoot;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.ui.model.IWorkbenchAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* A leaf is a IResource with a Make Directive.
|
||||
* We use the term Directive instead of Make Targets
|
||||
* to not confuse with remote targets.
|
||||
*/
|
||||
|
||||
public class MakeTarget implements IAdaptable {
|
||||
|
||||
private static final MakeTarget[] emptyArray= new MakeTarget[0];
|
||||
private IResource resource;
|
||||
private String target;
|
||||
|
||||
public MakeTarget(IResource res) {
|
||||
this(res, "");
|
||||
}
|
||||
|
||||
public MakeTarget(IResource res, String goals) {
|
||||
resource = res;
|
||||
target = (goals == null) ? "" : goals;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IAdaptable#getAdapter(Object)
|
||||
*/
|
||||
public Object getAdapter(Class adapter) {
|
||||
if (adapter == IResource.class) {
|
||||
return resource;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public MakeTarget[] getChildren() {
|
||||
if (resource != null && target.length() == 0) {
|
||||
ArrayList list = new ArrayList();
|
||||
if (resource instanceof IWorkspaceRoot) {
|
||||
IWorkspaceRoot root = (IWorkspaceRoot)resource;
|
||||
IProject [] projects = root.getProjects();
|
||||
for (int i = 0; i < projects.length; i++) {
|
||||
if (projects[i].isOpen()) {
|
||||
try {
|
||||
if (projects[i].hasNature(CProjectNature.C_NATURE_ID)) {
|
||||
list.add (new MakeTarget(projects[i]));
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (resource instanceof IContainer) {
|
||||
IContainer container = (IContainer)resource;
|
||||
try {
|
||||
IResource[] resources = container.members();
|
||||
for (int i = 0; i < resources.length; i++) {
|
||||
if (resources[i] instanceof IContainer) {
|
||||
list.add (new MakeTarget(resources[i]));
|
||||
}
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
// String [] targets = MakeUtil.getPersistentTargets(resource);
|
||||
// for (int i = 0; i < targets.length; i++) {
|
||||
// if (targets[i] == null)
|
||||
// targets[i] = "";
|
||||
// list.add (new MakeTarget(resource, targets[i]));
|
||||
// }
|
||||
}
|
||||
return (MakeTarget[])list.toArray(emptyArray);
|
||||
}
|
||||
return emptyArray;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public MakeTarget getParent() {
|
||||
if (target.length() == 0)
|
||||
return new MakeTarget(resource.getParent());
|
||||
return new MakeTarget(resource);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
if (target.length() == 0)
|
||||
return resource.getName();
|
||||
return target;
|
||||
}
|
||||
|
||||
public ImageDescriptor getImageDescriptor() {
|
||||
if (isLeaf()) {
|
||||
return CPluginImages.DESC_BUILD_MENU;
|
||||
}
|
||||
IWorkbenchAdapter adapter = (IWorkbenchAdapter)((IAdaptable)resource).getAdapter(IWorkbenchAdapter.class);
|
||||
if (adapter == null)
|
||||
return null;
|
||||
return adapter.getImageDescriptor(resource);
|
||||
}
|
||||
|
||||
public IResource getResource () {
|
||||
return resource;
|
||||
}
|
||||
|
||||
public boolean isLeaf () {
|
||||
return (target.length() != 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Object#equals(Object)
|
||||
*/
|
||||
public boolean equals(Object obj) {
|
||||
if (null == obj)
|
||||
return false;
|
||||
|
||||
if (!(obj instanceof MakeTarget))
|
||||
return false;
|
||||
|
||||
MakeTarget other = (MakeTarget)obj;
|
||||
return (resource.equals(other.resource) && target.equals(other.target));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.jface.dialogs.InputDialog;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
|
||||
public class MakeTargetAction extends Action {
|
||||
|
||||
Shell shell;
|
||||
IResource resource;
|
||||
|
||||
public MakeTargetAction (Shell shell) {
|
||||
super("Add Make Targets");
|
||||
this.shell = shell;
|
||||
|
||||
setToolTipText("BuildAction");
|
||||
setImageDescriptor(CPluginImages.DESC_BUILD_MENU);
|
||||
}
|
||||
|
||||
public void run() {
|
||||
InputDialog dialog = new InputDialog(shell, "Target Dialog: ", "Enter Target(s): ", null, null);
|
||||
dialog.open();
|
||||
//String value = dialog.getValue();
|
||||
// if (value != null && value.length() > 0) {
|
||||
// if (resource != null)
|
||||
// MakeUtil.addPersistentTarget(resource, value);
|
||||
// }
|
||||
}
|
||||
|
||||
public void selectionChanged(IStructuredSelection selection) {
|
||||
Object obj = (IAdaptable)selection.getFirstElement();
|
||||
if (obj instanceof IAdaptable) {
|
||||
IAdaptable element = (IAdaptable)obj;
|
||||
resource = (IResource)element.getAdapter(IResource.class);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,182 @@
|
|||
package org.eclipse.cdt.make.ui.views;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.ui.actions.MakeBuildAction;
|
||||
import org.eclipse.core.resources.ResourcesPlugin;
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.jface.action.IMenuListener;
|
||||
import org.eclipse.jface.action.IMenuManager;
|
||||
import org.eclipse.jface.action.IToolBarManager;
|
||||
import org.eclipse.jface.action.MenuManager;
|
||||
import org.eclipse.jface.dialogs.InputDialog;
|
||||
import org.eclipse.jface.viewers.DoubleClickEvent;
|
||||
import org.eclipse.jface.viewers.IDoubleClickListener;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.viewers.TreeViewer;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.ui.IActionBars;
|
||||
import org.eclipse.ui.part.ViewPart;
|
||||
|
||||
public class MakeView extends ViewPart {
|
||||
|
||||
TreeViewer viewer;
|
||||
|
||||
public MakeView() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see IWorkbenchPart#setFocus()
|
||||
*/
|
||||
public void setFocus() {
|
||||
viewer.getTree().setFocus();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles double clicks in viewer.
|
||||
* Opens editor if file double-clicked.
|
||||
*/
|
||||
protected void handleDoubleClick(DoubleClickEvent event) {
|
||||
IStructuredSelection s = (IStructuredSelection) event.getSelection();
|
||||
Object element = s.getFirstElement();
|
||||
//System.out.println ("Double click on " + element);
|
||||
if (element instanceof MakeTarget) {
|
||||
MakeTarget ta = (MakeTarget) element;
|
||||
Action build = new MakeBuildAction(new MakeTarget[] { ta }, getViewSite().getShell(), "Build");
|
||||
build.run();
|
||||
}
|
||||
//if (viewer.isExpandable(element)) {
|
||||
// viewer.setExpandedState(element, !viewer.getExpandedState(element));
|
||||
//}
|
||||
}
|
||||
|
||||
/**
|
||||
* called to create the context menu of the outline
|
||||
*/
|
||||
protected void contextMenuAboutToShow(IMenuManager menu) {
|
||||
IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
|
||||
Object element = selection.getFirstElement();
|
||||
if (element instanceof MakeTarget) {
|
||||
final MakeTarget ta = (MakeTarget) element;
|
||||
Action add = new Action("Add...") {
|
||||
public void run() {
|
||||
InputDialog dialog =
|
||||
new InputDialog(getViewSite().getShell(), "Target Dialog: ", "Enter Target(s): ", null, null);
|
||||
dialog.open();
|
||||
String value = dialog.getValue();
|
||||
if (value != null && value.length() > 0) {
|
||||
// IResource res = ta.getResource();
|
||||
// MakeUtil.addPersistentTarget(res, value);
|
||||
viewer.getControl().setRedraw(false);
|
||||
viewer.refresh();
|
||||
viewer.getControl().setRedraw(true);
|
||||
viewer.expandToLevel(ta, 2);
|
||||
}
|
||||
}
|
||||
};
|
||||
Action edit = new Action("Edit...") {
|
||||
public void run() {
|
||||
String oldtarget = ta.toString();
|
||||
InputDialog dialog =
|
||||
new InputDialog(getViewSite().getShell(), "Target Dialog: ", "Enter Target(s): ", oldtarget, null);
|
||||
dialog.open();
|
||||
String value = dialog.getValue();
|
||||
if (value != null && value.length() > 0 && !value.equals(oldtarget)) {
|
||||
// IResource res = ta.getResource();
|
||||
// MakeUtil.replacePersistentTarget(res, oldtarget, value);
|
||||
viewer.getControl().setRedraw(false);
|
||||
viewer.refresh();
|
||||
viewer.getControl().setRedraw(true);
|
||||
viewer.expandToLevel(ta, 2);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Action del = new Action("Delete") {
|
||||
public void run() {
|
||||
String target = ta.toString();
|
||||
if (target != null) {
|
||||
// IResource res = ta.getResource();
|
||||
// MakeUtil.removePersistentTarget(res, target);
|
||||
viewer.getControl().setRedraw(false);
|
||||
viewer.refresh();
|
||||
viewer.getControl().setRedraw(true);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Action build = new MakeBuildAction(new MakeTarget[] { ta }, getViewSite().getShell(), "Build");
|
||||
|
||||
menu.add(add);
|
||||
menu.add(edit);
|
||||
menu.add(del);
|
||||
//menu.add (new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
|
||||
menu.add(build);
|
||||
if (ta.isLeaf()) {
|
||||
add.setEnabled(false);
|
||||
} else {
|
||||
edit.setEnabled(false);
|
||||
del.setEnabled(false);
|
||||
}
|
||||
}
|
||||
//menu.add (new Separator(IWorkbenchActionConstants.MB_ADDITIONS+"-end"));
|
||||
}
|
||||
|
||||
private void contributeToActionBars() {
|
||||
IActionBars bars = getViewSite().getActionBars();
|
||||
// fillLocalPullDown(bars.getMenuManager());
|
||||
fillLocalToolBar(bars.getToolBarManager());
|
||||
}
|
||||
|
||||
private void fillLocalToolBar(IToolBarManager toolBar) {
|
||||
Action refreshAllAction = new Action("Refresh") {
|
||||
public void run() {
|
||||
viewer.refresh();
|
||||
}
|
||||
|
||||
};
|
||||
toolBar.add(refreshAllAction);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ContentOutlinePage#createControl
|
||||
*/
|
||||
public void createPartControl(Composite parent) {
|
||||
|
||||
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
viewer.setUseHashlookup(true);
|
||||
viewer.setContentProvider(new MakeContentProvider());
|
||||
viewer.setLabelProvider(new MakeLabelProvider());
|
||||
|
||||
MenuManager manager = new MenuManager("#PopUp");
|
||||
manager.setRemoveAllWhenShown(true);
|
||||
manager.addMenuListener(new IMenuListener() {
|
||||
public void menuAboutToShow(IMenuManager manager) {
|
||||
contextMenuAboutToShow(manager);
|
||||
}
|
||||
});
|
||||
|
||||
Control control = viewer.getControl();
|
||||
Menu menu = manager.createContextMenu(control);
|
||||
control.setMenu(menu);
|
||||
|
||||
viewer.setInput(new MakeTarget(ResourcesPlugin.getWorkspace().getRoot()));
|
||||
|
||||
viewer.addDoubleClickListener(new IDoubleClickListener() {
|
||||
public void doubleClick(DoubleClickEvent event) {
|
||||
handleDoubleClick(event);
|
||||
}
|
||||
});
|
||||
|
||||
contributeToActionBars();
|
||||
|
||||
getSite().setSelectionProvider(viewer);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
package org.eclipse.cdt.make.ui.wizards;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.ui.wizards.conversion.ConversionWizard;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||
|
||||
/**
|
||||
* This wizard provides a method by which the user can
|
||||
* add a C nature to a project that previously had no nature associated with it.
|
||||
*/
|
||||
public class ConvertToMakeProjectWizard extends ConversionWizard {
|
||||
|
||||
private MakeProjectWizardOptionPage optionsPage;
|
||||
private static final String WZ_TITLE = "WizardMakeProjectConversion.title"; //$NON-NLS-1$
|
||||
private static final String WZ_DESC = "WizardMakeProjectConversion.description"; //$NON-NLS-1$
|
||||
private static final String PREFIX = "WizardMakeConversion"; //$NON-NLS-1$
|
||||
private static final String WINDOW_TITLE = "WizardMakeConversion.windowTitle"; //$NON-NLS-1$
|
||||
|
||||
private static final String WZ_SETTINGS_TITLE = "WizardMakeProjectConversionSettings.title"; //$NON-NLS-1$
|
||||
private static final String WZ_SETTINGS_DESC = "WizardMakeProjectConversionSettings.description"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* ConvertToStdMakeConversionWizard Wizard constructor
|
||||
*/
|
||||
public ConvertToMakeProjectWizard() {
|
||||
this(getWindowTitleResource(), getWzDescriptionResource());
|
||||
}
|
||||
/**
|
||||
* ConvertToStdMakeConversionWizard Wizard constructor
|
||||
*
|
||||
* @param title
|
||||
* @param desc
|
||||
*/
|
||||
public ConvertToMakeProjectWizard(String title, String desc) {
|
||||
super(title, desc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getWzDescriptionResource, allows Wizard description label value
|
||||
* to be changed by subclasses
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
protected static String getWzDescriptionResource() {
|
||||
return MakeUIPlugin.getResourceString(WZ_DESC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getWzTitleResource, allows Wizard description label value
|
||||
* to be changed by subclasses
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
protected static String getWzTitleResource() {
|
||||
return MakeUIPlugin.getResourceString(WZ_TITLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getWindowTitleResource, allows Wizard Title label value to be
|
||||
* changed by subclasses
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
protected static String getWindowTitleResource() {
|
||||
return MakeUIPlugin.getResourceString(WINDOW_TITLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getPrefix, allows prefix value to be changed by subclasses
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
protected static String getPrefix() {
|
||||
return PREFIX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method addPages adds our Simple to C conversion Wizard page.
|
||||
*
|
||||
* @see Wizard#createPages
|
||||
*/
|
||||
public void addPages() {
|
||||
addPage(mainPage = new ConvertToMakeProjectWizardPage(getPrefix()));
|
||||
addPage(optionsPage = new MakeProjectWizardOptionPage(MakeUIPlugin.getResourceString(WZ_SETTINGS_TITLE), MakeUIPlugin.getResourceString(WZ_SETTINGS_DESC)));
|
||||
}
|
||||
|
||||
public String getProjectID() {
|
||||
return MakeCorePlugin.getUniqueIdentifier() + ".make"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
protected void doRun(IProgressMonitor monitor) throws CoreException {
|
||||
monitor.beginTask("Converting to Make Project", 2);
|
||||
super.doRun(new SubProgressMonitor(monitor, 1));
|
||||
optionsPage.performApply(new SubProgressMonitor(monitor, 1));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package org.eclipse.cdt.make.ui.wizards;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.ui.wizards.conversion.ConvertProjectWizardPage;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
|
||||
/**
|
||||
*
|
||||
* ConvertToStdMakeProjectWizardPage
|
||||
* Standard main page for a wizard that adds a C project Nature to a project with no nature associated with it.
|
||||
* This conversion is one way in that the project cannot be converted back (i.e have the nature removed).
|
||||
*
|
||||
* @author Judy N. Green
|
||||
* @since Aug 6, 2002
|
||||
*<p>
|
||||
* Example useage:
|
||||
* <pre>
|
||||
* mainPage = new ConvertToStdMakeProjectWizardPage("ConvertProjectPage");
|
||||
* mainPage.setTitle("Project Conversion");
|
||||
* mainPage.setDescription("Add C or C++ a Nature to a project.");
|
||||
* </pre>
|
||||
* </p>
|
||||
*/
|
||||
public class ConvertToMakeProjectWizardPage extends ConvertProjectWizardPage {
|
||||
|
||||
private static final String WZ_TITLE = "WizardMakeProjectConversion.title"; //$NON-NLS-1$
|
||||
private static final String WZ_DESC = "WizardMakeProjectConversion.description"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Constructor for ConvertToStdMakeProjectWizardPage.
|
||||
* @param pageName
|
||||
*/
|
||||
public ConvertToMakeProjectWizardPage(String pageName) {
|
||||
super(pageName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getWzTitleResource returns the correct Title Label for this class
|
||||
* overriding the default in the superclass.
|
||||
*/
|
||||
protected String getWzTitleResource(){
|
||||
return MakeUIPlugin.getResourceString(WZ_TITLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getWzDescriptionResource returns the correct description
|
||||
* Label for this class overriding the default in the superclass.
|
||||
*/
|
||||
protected String getWzDescriptionResource(){
|
||||
return MakeUIPlugin.getResourceString(WZ_DESC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method isCandidate returns true for all projects.
|
||||
*
|
||||
* @param project
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean isCandidate(IProject project) {
|
||||
return true; // all
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package org.eclipse.cdt.make.ui.wizards;
|
||||
|
||||
/*
|
||||
* (c) Copyright IBM Corp. 2000, 2001.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeProjectOptionBlock;
|
||||
import org.eclipse.cdt.ui.TabFolderOptionBlock;
|
||||
import org.eclipse.cdt.ui.ICOptionContainer;
|
||||
import org.eclipse.cdt.ui.ReferenceBlock;
|
||||
import org.eclipse.cdt.ui.wizards.CProjectWizard;
|
||||
import org.eclipse.cdt.ui.wizards.CProjectWizardOptionPage;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.swt.widgets.TabItem;
|
||||
|
||||
/**
|
||||
* Standard main page for a wizard that is creates a project resource.
|
||||
* <p>
|
||||
* This page may be used by clients as-is; it may be also be subclassed to suit.
|
||||
* </p>
|
||||
* <p>
|
||||
* Example useage:
|
||||
* <pre>
|
||||
* mainPage = new CProjectWizardPage("basicCProjectPage");
|
||||
* mainPage.setTitle("Project");
|
||||
* mainPage.setDescription("Create a new project resource.");
|
||||
* </pre>
|
||||
* </p>
|
||||
*/
|
||||
public class MakeProjectWizardOptionPage extends CProjectWizardOptionPage {
|
||||
|
||||
public class WizardOptionBlock extends MakeProjectOptionBlock {
|
||||
|
||||
public WizardOptionBlock(ICOptionContainer parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
protected TabItem addTabs() {
|
||||
TabItem item = addTab(new ReferenceBlock());
|
||||
super.addTabs();
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
||||
public MakeProjectWizardOptionPage(String title, String description) {
|
||||
super("MakeProjectSettingsPage");
|
||||
setTitle(title);
|
||||
setDescription(description);
|
||||
}
|
||||
|
||||
protected TabFolderOptionBlock createOptionBlock() {
|
||||
return new WizardOptionBlock(this);
|
||||
}
|
||||
|
||||
public IProject getProject() {
|
||||
return ((CProjectWizard)getWizard()).getNewProject();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package org.eclipse.cdt.make.ui.wizards;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class NewMakeCCProjectWizard extends NewMakeProjectWizard {
|
||||
|
||||
private static final String WZ_TITLE = "MakeCCWizard.title"; //$NON-NLS-1$
|
||||
private static final String WZ_DESC = "MakeCCWizard.description"; //$NON-NLS-1$
|
||||
|
||||
private static final String WZ_SETTINGS_TITLE = "MakeCCWizard.title"; //$NON-NLS-1$
|
||||
private static final String WZ_SETTINGS_DESC = "MakeCCWizard.description"; //$NON-NLS-1$
|
||||
|
||||
public NewMakeCCProjectWizard() {
|
||||
super(MakeUIPlugin.getResourceString(WZ_TITLE), MakeUIPlugin.getResourceString(WZ_DESC));
|
||||
}
|
||||
|
||||
public void addPages() {
|
||||
super.addPages();
|
||||
addPage(
|
||||
fOptionPage =
|
||||
new MakeProjectWizardOptionPage(
|
||||
MakeUIPlugin.getResourceString(WZ_SETTINGS_TITLE),
|
||||
MakeUIPlugin.getResourceString(WZ_SETTINGS_DESC)));
|
||||
}
|
||||
|
||||
protected void doRun(IProgressMonitor monitor) throws CoreException {
|
||||
if (monitor == null) {
|
||||
monitor = new NullProgressMonitor();
|
||||
}
|
||||
monitor.beginTask(MakeUIPlugin.getResourceString("MakeCCWizard.task_name"), 10); //$NON-NLS-1$
|
||||
super.doRun(new SubProgressMonitor(monitor, 9));
|
||||
// Add C++ Nature.
|
||||
if (newProject != null) {
|
||||
// Add C++ Nature to the newly created project.
|
||||
CCorePlugin.getDefault().convertProjectFromCtoCC(newProject, new SubProgressMonitor(monitor, 1));
|
||||
}
|
||||
monitor.done();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package org.eclipse.cdt.make.ui.wizards;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class NewMakeCProjectWizard extends NewMakeProjectWizard {
|
||||
|
||||
private static final String WZ_TITLE = "MakeCWizard.title"; //$NON-NLS-1$
|
||||
private static final String WZ_DESC = "MakeCWizard.description"; //$NON-NLS-1$'
|
||||
|
||||
private static final String WZ_SETTINGS_TITLE = "MakeCWizardSettings.title"; //$NON-NLS-1$
|
||||
private static final String WZ_SETTINGS_DESC = "MakeCWizardSettings.description"; //$NON-NLS-1$'
|
||||
|
||||
public NewMakeCProjectWizard() {
|
||||
super(MakeUIPlugin.getResourceString(WZ_TITLE), MakeUIPlugin.getResourceString(WZ_DESC));
|
||||
}
|
||||
|
||||
public void addPages() {
|
||||
super.addPages();
|
||||
addPage(
|
||||
fOptionPage =
|
||||
new MakeProjectWizardOptionPage(
|
||||
MakeUIPlugin.getResourceString(WZ_SETTINGS_TITLE),
|
||||
MakeUIPlugin.getResourceString(WZ_SETTINGS_DESC)));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package org.eclipse.cdt.make.ui.wizards;
|
||||
|
||||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.core.MakeProjectNature;
|
||||
import org.eclipse.cdt.make.internal.ui.MakeUIPlugin;
|
||||
import org.eclipse.cdt.ui.wizards.CProjectWizard;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||
|
||||
/**
|
||||
*/
|
||||
public abstract class NewMakeProjectWizard extends CProjectWizard {
|
||||
|
||||
protected MakeProjectWizardOptionPage fOptionPage;
|
||||
|
||||
public NewMakeProjectWizard(String title, String desc) {
|
||||
super(title, desc);
|
||||
}
|
||||
|
||||
protected void doRunPrologue(IProgressMonitor monitor) {
|
||||
}
|
||||
|
||||
protected void doRunEpilogue(IProgressMonitor monitor) {
|
||||
}
|
||||
|
||||
protected void doRun(IProgressMonitor monitor) throws CoreException {
|
||||
if (monitor == null) {
|
||||
monitor = new NullProgressMonitor();
|
||||
}
|
||||
monitor.beginTask(MakeUIPlugin.getResourceString("MakeCWizard.task_name"), 10); //$NON-NLS-1$
|
||||
|
||||
// super.doRun() just creates the project and does not assign a builder to it.
|
||||
super.doRun(new SubProgressMonitor(monitor, 5));
|
||||
|
||||
MakeProjectNature.addNature(getProjectHandle(), new SubProgressMonitor(monitor, 1));
|
||||
|
||||
// Modify the project based on what the user has selected
|
||||
if (newProject != null) {
|
||||
fOptionPage.performApply(new SubProgressMonitor(monitor, 4));
|
||||
monitor.done();
|
||||
}
|
||||
}
|
||||
|
||||
public String getProjectID() {
|
||||
return MakeCorePlugin.getUniqueIdentifier() + ".make";
|
||||
}
|
||||
}
|