From 82d511bba14f0e4a2e8d28448d0299dac0b27c60 Mon Sep 17 00:00:00 2001 From: Oleg Krasilnikov Date: Fri, 20 Apr 2007 12:48:09 +0000 Subject: [PATCH] Unexport feature added --- .../cdt/ui/newui/AbstractCPropertyTab.java | 25 +++++++++++ .../cdt/ui/newui/AbstractLangsListTab.java | 41 ++++++++++++++++++- .../cdt/ui/newui/PluginResources.properties | 1 + 3 files changed, 65 insertions(+), 2 deletions(-) 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 4cda7074dcf..a20b5a276e6 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 @@ -240,6 +240,12 @@ public abstract class AbstractCPropertyTab implements ICPropertyTab { */ protected void buttonPressed(int i) {} + /** + * Checks state of existing button. + * + * @param i - button index + * @return - true if button exists and enabled + */ protected boolean buttonIsEnabled(int i) { if (buttons == null || buttons.length <= i ) return false; @@ -247,10 +253,29 @@ public abstract class AbstractCPropertyTab implements ICPropertyTab { return buttons[i].isEnabled(); } + /** + * Changes state of existing button. + * Does nothing if index is invalid + * + * @param i - button index + * @param state - required state + */ protected void buttonSetEnabled(int i, boolean state) { if (buttons == null || buttons.length <= i ) return; buttons[i].setEnabled(state); } + + /** + * Changes text of existing button + * Does nothing if index is invalid + * + * @param i - button index + * @param text - text to display + */ + protected void buttonSetText(int i, String text) { + if (buttons == null || buttons.length <= i ) return; + buttons[i].setText(text); + } /********************************************** * Utility methods for unified widget creation diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractLangsListTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractLangsListTab.java index 60b1c939feb..2af5d0e81d1 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractLangsListTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractLangsListTab.java @@ -176,6 +176,12 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab { ICLanguageSettingEntry ent = (ICLanguageSettingEntry)(table.getItem(index).getData()); if (ent.isBuiltIn() || ent.isReadOnly()) canEdit = false; if (ent.isReadOnly()) canDelete = false; + if (exported.contains(ent)) + buttonSetText(3, UIMessages.getString("AbstractLangsListTab.4")); //$NON-NLS-1$ + else + buttonSetText(3, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$ + } else { + buttonSetText(3, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$ } boolean canMoveUp = canDelete && index > 0; boolean canMoveDown = canDelete && (index < table.getItemCount() - 1); @@ -367,10 +373,14 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab { lang.setSettingEntries(getKind(), incs); update(); break; - case 3: // export + case 3: // toggle export if (n == -1) return; old = (ICLanguageSettingEntry)(table.getItem(n).getData()); - page.getResDesc().getConfiguration().createExternalSetting(new String[] {lang.getId()}, null, null, new ICLanguageSettingEntry[] {old}); + if (exported.contains(old)) { + deleteExportSetting(old); + } else { + page.getResDesc().getConfiguration().createExternalSetting(new String[] {lang.getId()}, null, null, new ICLanguageSettingEntry[] {old}); + } updateExport(); update(); break; @@ -395,6 +405,33 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab { } } + private void deleteExportSetting(ICSettingEntry ent) { +// if (ent.isReadOnly() || ent.isBuiltIn()) continue; + ICConfigurationDescription cfg = getResDesc().getConfiguration(); + ICExternalSetting[] vals = cfg.getExternalSettings(); + if (!(vals == null || vals.length == 0)) { + for (int i=0; i