From 7e9fd939f3d131bfa65c4fc63e5a684ec9f4e27b Mon Sep 17 00:00:00 2001 From: Oleg Krasilnikov Date: Thu, 19 Apr 2007 17:07:16 +0000 Subject: [PATCH] Toolchain edit: new functionality Properties are enabled for non-C files Some bugs fixed --- .../plugin.xml | 53 ++-------- .../ui/properties/ArtifactTab.java | 2 +- .../ui/properties/BuildListComparator.java | 37 +++++++ .../ui/properties/Page_head_build.java | 2 +- .../ui/properties/ToolChainEditTab.java | 3 +- .../properties/ToolListContentProvider.java | 7 +- .../ui/properties/ToolSelectionDialog.java | 98 +++++++++---------- .../ui/properties/ToolSettingsTab.java | 2 +- core/org.eclipse.cdt.ui/plugin.xml | 10 +- .../cdt/ui/newui/AbstractCPropertyTab.java | 5 +- .../eclipse/cdt/ui/newui/AbstractPage.java | 14 ++- ...ContextIds.java => CDTHelpContextIds.java} | 2 +- 12 files changed, 119 insertions(+), 116 deletions(-) create mode 100644 build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildListComparator.java rename core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/{ManagedBuilderHelpContextIds.java => CDTHelpContextIds.java} (96%) diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml index 71c88db49f2..4b374ab8c76 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml @@ -450,14 +450,8 @@ - - - - - - - - + + @@ -497,15 +491,8 @@ - - ` - - - - - - - + + @@ -546,14 +533,8 @@ - -` - - - - - - + + @@ -576,14 +557,8 @@ - - - - - - - - + + @@ -633,18 +608,6 @@ - - - - - - - - - - - - diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java index b61ffab2a84..c89d52c03a5 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java @@ -84,7 +84,7 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { try { fProp.setProperty(PROPERTY, values[n].getId()); } catch (CoreException ex) { - System.out.println(ex.getMessage()); + ManagedBuilderUIPlugin.log(ex); } updateData(getResDesc()); } diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildListComparator.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildListComparator.java new file mode 100644 index 00000000000..4823fd568ed --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildListComparator.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2007 Intel Corporation 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 + * + * Contributors: + * Intel Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.ui.properties; + +import org.eclipse.cdt.managedbuilder.core.ITool; +import org.eclipse.cdt.ui.newui.CDTListComparator; + +/** + * This class is intended to compare MBS-specific classes + */ +public class BuildListComparator extends CDTListComparator { + private static BuildListComparator comparator = null; + + public static CDTListComparator getInstance() { + if (comparator == null) + comparator = new BuildListComparator(); + return comparator; + } + public int compare(Object a, Object b) { + if (a == null || b == null) + return 0; + if (a instanceof ITool) { + ITool c1 = (ITool)a; + ITool c2 = (ITool)b; + return c1.getName().compareToIgnoreCase(c2.getName()); + } + return super.compare(a, b); + } +} diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/Page_head_build.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/Page_head_build.java index 34b05d548ee..8b3b5431cfc 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/Page_head_build.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/Page_head_build.java @@ -3,5 +3,5 @@ package org.eclipse.cdt.managedbuilder.ui.properties; import org.eclipse.cdt.ui.newui.AbstractPage; public class Page_head_build extends AbstractPage { - protected boolean isSingle() { return true; } + protected boolean isSingle() { return false; } } diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java index bf770aa0b9a..c6c8325dc22 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.managedbuilder.ui.properties; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.eclipse.cdt.core.settings.model.ICResourceDescription; @@ -130,7 +131,6 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab { IToolChain tc = null; if (ri instanceof IFolderInfo) tc = ManagedBuildManager.getRealToolChain(((IFolderInfo)ri).getToolChain()); - int cnt = 0; int pos = -1; c_toolchain.removeAll(); @@ -189,6 +189,7 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab { } ITool[] tmp = new ITool[cnt]; System.arraycopy(v_tools, 0, tmp, 0, cnt); + Arrays.sort(tmp, BuildListComparator.getInstance()); v_tools = tmp; if (page.isForFile()) { // Edit tool in combo for File diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java index c91fbad6b08..2ada54c9a65 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolListContentProvider.java @@ -15,7 +15,6 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.cdt.managedbuilder.core.IConfiguration; -import org.eclipse.cdt.managedbuilder.core.IFileInfo; import org.eclipse.cdt.managedbuilder.core.IFolderInfo; import org.eclipse.cdt.managedbuilder.core.IHoldsOptions; import org.eclipse.cdt.managedbuilder.core.IOptionCategory; @@ -76,11 +75,13 @@ public class ToolListContentProvider implements ITreeContentProvider{ if(info instanceof IFolderInfo){ tools = ((IFolderInfo)info).getFilteredTools(); } else { - tools = ((IFileInfo)info).getToolsToInvoke(); + tools = info.getTools(); } // Create an element for each one for (int i=0; i 0 || added.size() > 0 */) { - IModificationStatus st = fi.getToolChainModificationStatus( - (ITool[])removed.toArray(new ITool[removed.size()]), - (ITool[])added.toArray(new ITool[added.size()])); - if (st.isOK()) { - errorLabel.setText(""); //$NON-NLS-1$ - if(getButton(IDialogConstants.OK_ID) != null) - getButton(IDialogConstants.OK_ID).setEnabled(true); - } else { - int c = st.getCode(); - String s = ""; //$NON-NLS-1$ - if ((c & IModificationStatus.TOOLS_CONFLICT) != 0) { - s = s + Messages.getString("ToolSelectionDialog.7"); //$NON-NLS-1$ - ITool[][] tools = st.getToolsConflicts(); - for (int k=0; k - - - - - - - - + + diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java index 68fc193d72d..4cda7074dcf 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractCPropertyTab.java @@ -487,7 +487,10 @@ public abstract class AbstractCPropertyTab implements ICPropertyTab { case ICPropertyTab.DISPOSE: break; case ICPropertyTab.VISIBLE: - if (canBeVisible()) setVisible(data != null); + if (canBeVisible()) + setVisible(data != null); + else + setVisible(false); break; case ICPropertyTab.SET_ICON: icon = (Image)data; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java index 53ac6ef0577..e942edd54f6 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java @@ -306,6 +306,7 @@ implements if (!isSingle()) { comp.setLayout(new FillLayout()); folder = new TabFolder(comp, SWT.NONE); +// folder.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY)); } loadExtensionsSynchronized(comp); @@ -553,7 +554,7 @@ implements Object ob = folder.getItem(0).getData(); currentTab = (ICPropertyTab)ob; } - if (currentTab != null) + if (currentTab != null) currentTab.handleTabEvent(ICPropertyTab.VISIBLE, visible ? NOT_NULL : null); } @@ -837,8 +838,13 @@ implements // tabs adding will be made by re-creation // of all elements, to preserve their order case ICPropertyTab.MANAGEDBUILDSTATE: - // generally, single-tabbed pages are not intended to handle this message - if (folder == null) return; + if (folder == null) { + if (itabs == null || itabs.size() == 0) + return; + ICPropertyTab t = ((InternalTab)itabs.get(0)).tab; + if (! t.canBeVisible()) + t.handleTabEvent(ICPropertyTab.VISIBLE, null); + } boolean willAdd = false; TabItem[] ts = folder.getItems(); int x = folder.getSelectionIndex(); @@ -929,7 +935,7 @@ implements if (internalElement == null && !checkElement()) return false; // unknown element if (isForFile()) // only source files are applicable - return CoreModel.isValidSourceUnitName(getProject(), internalElement.getName()); + return true; //CoreModel.isValidSourceUnitName(getProject(), internalElement.getName()); else return true; // Projects and folders are always applicable } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManagedBuilderHelpContextIds.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTHelpContextIds.java similarity index 96% rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManagedBuilderHelpContextIds.java rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTHelpContextIds.java index 081951536e6..5b445731ea6 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManagedBuilderHelpContextIds.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTHelpContextIds.java @@ -13,7 +13,7 @@ package org.eclipse.cdt.ui.newui; import org.eclipse.cdt.ui.CUIPlugin; -public interface ManagedBuilderHelpContextIds { +public interface CDTHelpContextIds { public static final String PREFIX= CUIPlugin.PLUGIN_ID + "."; //$NON-NLS-1$ // Wizard pages