Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Schaefer2017-09-28 00:27:40 +0000
committerDoug Schaefer2017-09-28 17:42:58 +0000
commit5228d193004a8001632385127f5b45a3a5243f7e (patch)
tree58b418f969732f94b12054aa58bba475e579bbd2 /core/org.eclipse.cdt.ui/src/org/eclipse/cdt
parent80dc8d9c2517e738be2e16a6f98375266259bd0d (diff)
downloadorg.eclipse.cdt-5228d193004a8001632385127f5b45a3a5243f7e.tar.gz
org.eclipse.cdt-5228d193004a8001632385127f5b45a3a5243f7e.tar.xz
org.eclipse.cdt-5228d193004a8001632385127f5b45a3a5243f7e.zip
UI for adding toolchains for Core Build. New Generic Target Wizard.
Provide a way to add new toolchains. Also start of UI to allow for reordering them to help with toolchain selection for targets. New Generic Target Wizard for the new wizard2 extension point for the Launch Bar Target UI. Change-Id: I60635ab27dad5b69df72c339337473183dcf711a
Diffstat (limited to 'core/org.eclipse.cdt.ui/src/org/eclipse/cdt')
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.java22
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.properties21
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizard.java33
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizardSelectionPage.java144
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorHoverConfigurationBlock.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/project/NewCDTProjectWizard.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java10
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java310
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainWizard.java31
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java14
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/EnvDialog.java3
11 files changed, 587 insertions, 10 deletions
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.java
index f3de9a8f1c6..706eec2282f 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.java
@@ -65,6 +65,22 @@ public final class CUIMessages extends NLS {
public static String TextEditorDropAdapter_error_message;
public static String TextEditorDropAdapter_unreadableFile;
public static String TextEditorDropAdapter_noFile;
+ public static String ToolChainPreferencePage_Add;
+ public static String ToolChainPreferencePage_Arch;
+ public static String ToolChainPreferencePage_AreYouSure;
+ public static String ToolChainPreferencePage_AvailableToolchains;
+ public static String ToolChainPreferencePage_Down;
+ public static String ToolChainPreferencePage_Edit;
+ public static String ToolChainPreferencePage_EditDot;
+ public static String ToolChainPreferencePage_Name;
+ public static String ToolChainPreferencePage_NoEditor;
+ public static String ToolChainPreferencePage_OS;
+ public static String ToolChainPreferencePage_Remove;
+ public static String ToolChainPreferencePage_Remove1;
+ public static String ToolChainPreferencePage_RemoveToolchain;
+ public static String ToolChainPreferencePage_Toolchains;
+ public static String ToolChainPreferencePage_Up;
+ public static String ToolChainPreferencePage_UserDefinedToolchains;
public static String OptionalMessageDialog_dontShowAgain;
public static String OptionalMessageDialog_rememberDecision;
public static String CStructureCreatorVisitor_translationUnitName;
@@ -72,6 +88,12 @@ public final class CUIMessages extends NLS {
public static String FileTransferDragAdapter_problem;
public static String FileTransferDragAdapter_problemTitle;
public static String CUIPlugin_initPrefs;
+ public static String NewCDTProjectWizard_PageTitle;
+ public static String NewCDTProjectWizard_Title;
+ public static String NewToolChainWizard_Title;
+
+ public static String NewToolChainWizardSelectionPage_Description;
+ public static String NewToolChainWizardSelectionPage_Title;
static {
NLS.initializeMessages(BUNDLE_NAME, CUIMessages.class);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.properties
index 35f54d2a079..523f0e5c221 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CUIMessages.properties
@@ -65,6 +65,22 @@ TextEditorDropAdapter_error_title=Drag and Drop
TextEditorDropAdapter_error_message=A problem occurred during drag and drop.
TextEditorDropAdapter_unreadableFile=Unreadable file: ''{0}''
TextEditorDropAdapter_noFile=Not a file: ''{0}''
+ToolChainPreferencePage_Add=Add...
+ToolChainPreferencePage_Arch=Arch
+ToolChainPreferencePage_AreYouSure=Are you sure you'd like to remove the selected toolchain?
+ToolChainPreferencePage_AvailableToolchains=Available Toolchains
+ToolChainPreferencePage_Down=Down
+ToolChainPreferencePage_Edit=Edit
+ToolChainPreferencePage_EditDot=Edit...
+ToolChainPreferencePage_Name=Name
+ToolChainPreferencePage_NoEditor=No editor found for this toolchain
+ToolChainPreferencePage_OS=OS
+ToolChainPreferencePage_Remove=Remove
+ToolChainPreferencePage_Remove1=Remove
+ToolChainPreferencePage_RemoveToolchain=Remove Toolchain
+ToolChainPreferencePage_Toolchains=Toolchains
+ToolChainPreferencePage_Up=Up
+ToolChainPreferencePage_UserDefinedToolchains=User Defined Toolchains
OptionalMessageDialog_dontShowAgain= Do not show this &message again
OptionalMessageDialog_rememberDecision=Re&member my decision
@@ -75,3 +91,8 @@ FileTransferDragAdapter_problem=Problem while moving or copying files.
FileTransferDragAdapter_problemTitle=Drag & Drop
CUIPlugin_initPrefs=Initialize C/C++ UI Preferences
+NewCDTProjectWizard_PageTitle=Templates for New C/C++ Project
+NewCDTProjectWizard_Title=New C/C++ Project
+NewToolChainWizard_Title=New Toolchain
+NewToolChainWizardSelectionPage_Description=Select the type of toolchain to add.
+NewToolChainWizardSelectionPage_Title=Toolchain Type
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizard.java
new file mode 100644
index 00000000000..01a279bd506
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizard.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.build;
+
+import org.eclipse.jface.wizard.Wizard;
+
+import org.eclipse.cdt.internal.ui.CUIMessages;
+
+public class NewToolChainWizard extends Wizard {
+
+ public NewToolChainWizard() {
+ setForcePreviousAndNextButtons(true);
+ }
+
+ @Override
+ public void addPages() {
+ super.addPages();
+ addPage(new NewToolChainWizardSelectionPage());
+ setWindowTitle(CUIMessages.NewToolChainWizard_Title);
+ }
+
+ @Override
+ public boolean performFinish() {
+ // Downstream wizards do finish
+ return false;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizardSelectionPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizardSelectionPage.java
new file mode 100644
index 00000000000..a9a3ee7bd3b
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/build/NewToolChainWizardSelectionPage.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.build;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+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.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.build.ToolChainWizard;
+
+import org.eclipse.cdt.internal.ui.CUIMessages;
+
+public class NewToolChainWizardSelectionPage extends WizardPage {
+
+ private Table table;
+
+ public NewToolChainWizardSelectionPage() {
+ super(NewToolChainWizardSelectionPage.class.getName());
+
+ setTitle(CUIMessages.NewToolChainWizardSelectionPage_Title);
+ setDescription(CUIMessages.NewToolChainWizardSelectionPage_Description);
+ setPageComplete(false);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(new GridLayout());
+
+ table = new Table(comp, SWT.BORDER | SWT.SINGLE);
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ IExtensionPoint point = Platform.getExtensionRegistry()
+ .getExtensionPoint(CUIPlugin.PLUGIN_ID + ".newToolChainWizards"); //$NON-NLS-1$
+ for (IExtension extension : point.getExtensions()) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ String name = element.getAttribute("name"); //$NON-NLS-1$
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(name);
+
+ String iconFile = element.getAttribute("icon"); //$NON-NLS-1$
+ if (iconFile != null) {
+ ImageDescriptor desc = CUIPlugin
+ .imageDescriptorFromPlugin(element.getNamespaceIdentifier(), iconFile);
+ if (desc != null) {
+ item.setImage(desc.createImage());
+ }
+ }
+
+ item.setData(element);
+ }
+ }
+
+ table.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ getContainer().updateButtons();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ if (canFlipToNextPage()) {
+ getContainer().showPage(getNextPage());
+ }
+ }
+ });
+
+ setControl(comp);
+ }
+
+ @Override
+ public void dispose() {
+ for (TableItem item : table.getItems()) {
+ Object obj = item.getData();
+ if (obj instanceof Wizard) {
+ ((Wizard) obj).dispose();
+ }
+ }
+ super.dispose();
+ }
+
+ public ImageDescriptor getDescriptionImage(IConfigurationElement element) {
+ String descImage = element.getAttribute("icon"); //$NON-NLS-1$
+ if (descImage == null) {
+ return null;
+ }
+ return AbstractUIPlugin.imageDescriptorFromPlugin(element.getNamespaceIdentifier(),
+ descImage);
+ }
+
+ @Override
+ public boolean canFlipToNextPage() {
+ return table.getSelectionIndex() >= 0;
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ int i = table.getSelectionIndex();
+ if (i >= 0) {
+ TableItem item = table.getItem(i);
+ Object obj = item.getData();
+ ToolChainWizard nextWizard;
+ if (obj instanceof IConfigurationElement) {
+ IConfigurationElement element = (IConfigurationElement) obj;
+ try {
+ nextWizard = (ToolChainWizard) element.createExecutableExtension("class"); //$NON-NLS-1$
+ nextWizard.addPages();
+ item.setData(nextWizard);
+ } catch (CoreException e) {
+ CUIPlugin.log(e);
+ return null;
+ }
+ } else {
+ nextWizard = (ToolChainWizard) obj;
+ }
+
+ return nextWizard.getStartingPage();
+ }
+ return super.getNextPage();
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorHoverConfigurationBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorHoverConfigurationBlock.java
index a844a0a3952..a21044cb8f1 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorHoverConfigurationBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorHoverConfigurationBlock.java
@@ -54,6 +54,7 @@ import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
+
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants;
@@ -221,7 +222,7 @@ public class CEditorHoverConfigurationBlock implements IPreferenceConfigurationB
hoverComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
String rollOverLabel= PreferencesMessages.CEditorHoverConfigurationBlock_annotationRollover;
- addCheckBox(hoverComposite, rollOverLabel, PreferenceConstants.EDITOR_ANNOTATION_ROLL_OVER, 0); //$NON-NLS-1$
+ addCheckBox(hoverComposite, rollOverLabel, PreferenceConstants.EDITOR_ANNOTATION_ROLL_OVER, 0);
//addFiller(hoverComposite);
Label label= new Label(hoverComposite, SWT.NONE);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/project/NewCDTProjectWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/project/NewCDTProjectWizard.java
index 17c23314c69..ac12720d1a6 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/project/NewCDTProjectWizard.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/project/NewCDTProjectWizard.java
@@ -9,14 +9,16 @@ package org.eclipse.cdt.internal.ui.wizards.project;
import org.eclipse.tools.templates.ui.NewWizard;
+import org.eclipse.cdt.internal.ui.CUIMessages;
+
public class NewCDTProjectWizard extends NewWizard {
private static final String cdtTag = "org.eclipse.cdt.ui.cdtTag"; //$NON-NLS-1$
public NewCDTProjectWizard() {
super(cdtTag);
- setWindowTitle("New C/C++ Project");
- setTemplateSelectionPageTitle("Templates for New C/C++ Project");
+ setWindowTitle(CUIMessages.NewCDTProjectWizard_Title);
+ setTemplateSelectionPageTitle(CUIMessages.NewCDTProjectWizard_PageTitle);
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java
index 4073e4a4ce2..a02051c7bc2 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CUIPlugin.java
@@ -73,6 +73,7 @@ import org.eclipse.ui.themes.IThemeManager;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
+import org.osgi.framework.ServiceReference;
import com.ibm.icu.text.MessageFormat;
@@ -1090,4 +1091,13 @@ public class CUIPlugin extends AbstractUIPlugin {
IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows();
return windows[0].getShell();
}
+
+ /**
+ * @since 6.3
+ */
+ public static <T> T getService(Class<T> service) {
+ BundleContext context = fgCPlugin.getBundle().getBundleContext();
+ ServiceReference<T> ref = context.getServiceReference(service);
+ return ref != null ? context.getService(ref) : null;
+ }
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java
new file mode 100644
index 00000000000..b0ed4f1a1ab
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainPreferencePage.java
@@ -0,0 +1,310 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.cdt.ui.build;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+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;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import org.eclipse.cdt.core.build.IToolChain;
+import org.eclipse.cdt.core.build.IToolChainManager;
+import org.eclipse.cdt.core.build.IUserToolChainProvider;
+import org.eclipse.cdt.ui.CUIPlugin;
+
+import org.eclipse.cdt.internal.ui.CUIMessages;
+import org.eclipse.cdt.internal.ui.build.NewToolChainWizard;
+
+/**
+ * Preference page to manage Toolchains for Core Build.
+ *
+ * @since 6.3
+ */
+public class ToolChainPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+ private TableViewer availTable;
+ private Button availUp;
+ private Button availDown;
+
+ private TableViewer userTable;
+ private Button userEdit;
+ private Button userRemove;
+
+ private IToolChainManager manager = CUIPlugin.getService(IToolChainManager.class);
+
+ private ISafeRunnable tcListener = () -> Display.getDefault().asyncExec(() -> {
+ availTable.refresh();
+ userTable.refresh();
+ });
+
+ public ToolChainPreferencePage() {
+ super(CUIMessages.ToolChainPreferencePage_Toolchains);
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ }
+
+ private static class TableLabelProvider extends LabelProvider implements ITableLabelProvider {
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ IToolChain toolChain = (IToolChain) element;
+ switch (columnIndex) {
+ case 0:
+ return toolChain.getName();
+ case 1:
+ return toolChain.getProperty(IToolChain.ATTR_OS);
+ case 2:
+ return toolChain.getProperty(IToolChain.ATTR_ARCH);
+ }
+ return null;
+ }
+
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ initializeDialogUnits(parent);
+
+ Composite control = new Composite(parent, SWT.NONE);
+ control.setLayout(new GridLayout());
+
+ Group availGroup = new Group(control, SWT.NONE);
+ availGroup.setText(CUIMessages.ToolChainPreferencePage_AvailableToolchains);
+ availGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ availGroup.setLayout(new GridLayout(2, false));
+
+ availTable = createToolChainTable(availGroup);
+ availTable.getTable().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateButtons();
+ }
+ });
+ availTable.setLabelProvider(new TableLabelProvider());
+ availTable.setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public Object[] getElements(Object inputElement) {
+ try {
+ return manager.getAllToolChains().toArray();
+ } catch (CoreException e) {
+ CUIPlugin.log(e.getStatus());
+ return new Object[0];
+ }
+ }
+ });
+
+
+ Composite availButtonComp = new Composite(availGroup, SWT.NONE);
+ availButtonComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
+ availButtonComp.setLayout(new GridLayout());
+
+ availUp = new Button(availButtonComp, SWT.PUSH);
+ availUp.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false));
+ availUp.setText(CUIMessages.ToolChainPreferencePage_Up);
+
+ availDown = new Button(availButtonComp, SWT.PUSH);
+ availDown.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false));
+ availDown.setText(CUIMessages.ToolChainPreferencePage_Down);
+
+ Group userGroup = new Group(control, SWT.NONE);
+ userGroup.setText(CUIMessages.ToolChainPreferencePage_UserDefinedToolchains);
+ userGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ userGroup.setLayout(new GridLayout(2, false));
+
+ userTable = createToolChainTable(userGroup);
+ userTable.getTable().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateButtons();
+ }
+ });
+ userTable.setLabelProvider(new TableLabelProvider());
+ userTable.setContentProvider(new IStructuredContentProvider() {
+ @Override
+ public Object[] getElements(Object inputElement) {
+ List<IToolChain> tcs = new ArrayList<>();
+ try {
+ for (IToolChain tc : manager.getAllToolChains()) {
+ if (tc.getProvider() instanceof IUserToolChainProvider) {
+ tcs.add(tc);
+ }
+ }
+ } catch (CoreException e) {
+ CUIPlugin.log(e);
+ }
+ return tcs.toArray();
+ }
+ });
+
+ Composite userButtonComp = new Composite(userGroup, SWT.NONE);
+ userButtonComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
+ userButtonComp.setLayout(new GridLayout());
+
+ Button userAdd = new Button(userButtonComp, SWT.PUSH);
+ userAdd.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false));
+ userAdd.setText(CUIMessages.ToolChainPreferencePage_Add);
+ userAdd.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Wizard wizard = new NewToolChainWizard();
+ WizardDialog dialog = new WizardDialog(getShell(), wizard);
+ dialog.open();
+ }
+ });
+
+ userEdit = new Button(userButtonComp, SWT.PUSH);
+ userEdit.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+ userEdit.setText(CUIMessages.ToolChainPreferencePage_EditDot);
+ userEdit.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ IToolChain tc = (IToolChain) userTable.getStructuredSelection().getFirstElement();
+ String providerId = tc.getProvider().getId();
+
+ ToolChainWizard wizard = null;
+ IExtensionPoint point = Platform.getExtensionRegistry()
+ .getExtensionPoint(CUIPlugin.PLUGIN_ID + ".newToolChainWizards"); //$NON-NLS-1$
+ loop: for (IExtension extension : point.getExtensions()) {
+ for (IConfigurationElement element : extension.getConfigurationElements()) {
+ if (providerId.equals(element.getAttribute("providerId"))) { //$NON-NLS-1$
+ try {
+ wizard = (ToolChainWizard) element.createExecutableExtension("class"); //$NON-NLS-1$
+ break loop;
+ } catch (CoreException e1) {
+ CUIPlugin.log(e1.getStatus());
+ }
+ }
+ }
+ }
+
+ if (wizard != null) {
+ wizard.setToolChain(tc);
+ WizardDialog dialog = new WizardDialog(getShell(), wizard);
+ dialog.open();
+ } else {
+ MessageDialog.openInformation(getShell(), CUIMessages.ToolChainPreferencePage_Edit, CUIMessages.ToolChainPreferencePage_NoEditor);
+ }
+ }
+ });
+
+ userRemove = new Button(userButtonComp, SWT.PUSH);
+ userRemove.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false));
+ userRemove.setText(CUIMessages.ToolChainPreferencePage_Remove);
+ userRemove.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (MessageDialog.openConfirm(getShell(), CUIMessages.ToolChainPreferencePage_Remove1,
+ CUIMessages.ToolChainPreferencePage_AreYouSure)) {
+ IToolChain tc = (IToolChain) userTable.getStructuredSelection().getFirstElement();
+ IUserToolChainProvider provider = (IUserToolChainProvider) tc.getProvider();
+ new Job(CUIMessages.ToolChainPreferencePage_RemoveToolchain) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ provider.removeToolChain(tc);
+ return Status.OK_STATUS;
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+ }.schedule();
+ }
+ }
+ });
+
+ availTable.setInput(manager);
+ userTable.setInput(manager);
+ updateButtons();
+ manager.addToolChainListener(tcListener);
+ return control;
+ }
+
+ @Override
+ public void dispose() {
+ manager.removeToolChainListener(tcListener);
+ super.dispose();
+ }
+
+ private TableViewer createToolChainTable(Composite parent) {
+ Composite tableComp = new Composite(parent, SWT.NONE);
+ tableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Table table = new Table(tableComp, SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ TableColumnLayout tableLayout = new TableColumnLayout();
+
+ TableColumn tableNameColumn = new TableColumn(table, SWT.LEAD);
+ tableNameColumn.setText(CUIMessages.ToolChainPreferencePage_Name);
+ tableLayout.setColumnData(tableNameColumn, new ColumnWeightData(6));
+
+ TableColumn tableOSColumn = new TableColumn(table, SWT.LEAD);
+ tableOSColumn.setText(CUIMessages.ToolChainPreferencePage_OS);
+ tableLayout.setColumnData(tableOSColumn, new ColumnWeightData(2));
+
+ TableColumn tableArchColumn = new TableColumn(table, SWT.LEAD);
+ tableArchColumn.setText(CUIMessages.ToolChainPreferencePage_Arch);
+ tableLayout.setColumnData(tableArchColumn, new ColumnWeightData(2));
+
+ tableComp.setLayout(tableLayout);
+
+ return new TableViewer(table);
+ }
+
+ private void updateButtons() {
+ boolean availSelected = availTable.getTable().getSelectionCount() > 0;
+ availUp.setEnabled(availSelected);
+ availDown.setEnabled(availSelected);
+
+ boolean userSelected = userTable.getTable().getSelectionCount() > 0;
+ userEdit.setEnabled(userSelected);
+ userRemove.setEnabled(userSelected);
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainWizard.java
new file mode 100644
index 00000000000..845628892c8
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/build/ToolChainWizard.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2017 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.cdt.ui.build;
+
+import org.eclipse.jface.wizard.Wizard;
+
+import org.eclipse.cdt.core.build.IToolChain;
+
+/**
+ * Parent class for toolChain wizards that create or edit toolchains.
+ *
+ * @since 6.3
+ */
+public abstract class ToolChainWizard extends Wizard {
+
+ protected IToolChain toolChain;
+
+ public void setToolChain(IToolChain toolChain) {
+ this.toolChain = toolChain;
+ }
+
+ public IToolChain getToolChain() {
+ return toolChain;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java
index 55cad28d860..c098dc3b2f0 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/ReferenceBlock.java
@@ -12,9 +12,6 @@ package org.eclipse.cdt.ui.dialogs;
import java.util.ArrayList;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.internal.ui.CUIMessages;
-import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IWorkspace;
@@ -38,6 +35,11 @@ import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.ui.CUIPlugin;
+
+import org.eclipse.cdt.internal.ui.CUIMessages;
+
/**
* @deprecated as of CDT 4.0. This Block was used for New Project Wizard
* for 3.X style projects.
@@ -47,9 +49,9 @@ import org.eclipse.ui.model.WorkbenchLabelProvider;
@Deprecated
public class ReferenceBlock extends AbstractCOptionPage {
- private static final String PREFIX = "ReferenceBlock"; //$NON-NLS-1$ //$NON-NLS-1$
- private static final String LABEL = PREFIX + ".label"; //$NON-NLS-1$ //$NON-NLS-1$
- private static final String DESC = PREFIX + ".desc"; //$NON-NLS-1$ //$NON-NLS-1$
+ private static final String PREFIX = "ReferenceBlock"; //$NON-NLS-1$
+ private static final String LABEL = PREFIX + ".label"; //$NON-NLS-1$
+ private static final String DESC = PREFIX + ".desc"; //$NON-NLS-1$
private CheckboxTableViewer referenceProjectsViewer;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/EnvDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/EnvDialog.java
index deb69fc56f9..321abf1d9f4 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/EnvDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/EnvDialog.java
@@ -78,7 +78,8 @@ public class EnvDialog extends Dialog {
}
@Override
- protected Control createDialogArea(Composite c) {
+ protected Control createDialogArea(Composite parent) {
+ Composite c = new Composite(parent, SWT.NONE);
c.setLayout(new GridLayout(3, false));
GridData gd;

Back to the top