summaryrefslogtreecommitdiffstats
path: root/org.rtems.cdt.toolchain/src/org/rtems/cdt/toolchain/RtemsBspDefinedSymbolsValueHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.rtems.cdt.toolchain/src/org/rtems/cdt/toolchain/RtemsBspDefinedSymbolsValueHandler.java')
-rw-r--r--org.rtems.cdt.toolchain/src/org/rtems/cdt/toolchain/RtemsBspDefinedSymbolsValueHandler.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/org.rtems.cdt.toolchain/src/org/rtems/cdt/toolchain/RtemsBspDefinedSymbolsValueHandler.java b/org.rtems.cdt.toolchain/src/org/rtems/cdt/toolchain/RtemsBspDefinedSymbolsValueHandler.java
new file mode 100644
index 0000000..00bed1e
--- /dev/null
+++ b/org.rtems.cdt.toolchain/src/org/rtems/cdt/toolchain/RtemsBspDefinedSymbolsValueHandler.java
@@ -0,0 +1,58 @@
+package org.rtems.cdt.toolchain;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.eclipse.cdt.managedbuilder.core.IBuildObject;
+import org.eclipse.cdt.managedbuilder.core.IHoldsOptions;
+import org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.ManagedOptionValueHandler;
+
+public class RtemsBspDefinedSymbolsValueHandler extends ManagedOptionValueHandler
+ implements IManagedOptionValueHandler {
+ private List<String> bspDefinedSymbolList;
+
+ public RtemsBspDefinedSymbolsValueHandler() {
+ bspDefinedSymbolList = RtemsScannerInfoCollector.getBspDefinedSymbols();
+ }
+
+ /**
+ * Handles transfer between values between UI element and
+ * back-end in different circumstances.
+ *
+ * @param configuration build configuration of option
+ * (may be IConfiguration or IResourceConfiguration)
+ * @param holder contains the holder of the option
+ * @param option the option that is handled
+ * @param extraArgument extra argument for handler
+ * @param event event to be handled, one of the following:
+ * (EVENT_OPEN = 1, EVENT_CLOSE = 2,
+ * EVENT_SETDEFAULT = 3,
+ * EVENT_APPLY = 4, EVENT_LOAD = 5)
+ *
+ * @return True when the event was handled, false otherwise.
+ * This enables default event handling can take place.
+ */
+ public boolean handleValue(IBuildObject configuration, IHoldsOptions holder,
+ IOption option, String extraArgument, int event) {
+ if (event == EVENT_CLOSE) return false;
+
+ try {
+ Object defaultValue = option.getDefaultValue();
+
+ if ( defaultValue==null
+ || ( defaultValue instanceof List
+ && ((List)defaultValue).size()<=0
+ )
+ ) {
+ option.setDefaultValue(bspDefinedSymbolList);
+ }
+ } catch (Exception e) {
+ return false;
+ }
+
+ return true;
+ }
+}