removed Makefile; lifted repo/org.ibex.tool/src/ to src/
[org.ibex.tool.git] / src / org / eclipse / jdt / internal / compiler / ConfigurableOption.java
diff --git a/src/org/eclipse/jdt/internal/compiler/ConfigurableOption.java b/src/org/eclipse/jdt/internal/compiler/ConfigurableOption.java
new file mode 100644 (file)
index 0000000..13e2858
--- /dev/null
@@ -0,0 +1,227 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2004 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.jdt.internal.compiler;
+
+/**
+ * Generic option description, which can be modified independently from the
+ * component it belongs to.
+ * 
+ * @deprecated backport 1.0 internal functionality
+ */
+
+import java.util.*;
+
+public class ConfigurableOption {
+       private String componentName;
+       private String optionName;
+       private int id;
+
+       private String category;
+       private String name;
+       private String description;
+       private int currentValueIndex;
+       private int defaultValueIndex;
+       private String[] possibleValues;
+
+       // special value for <possibleValues> indicating that 
+       // the <currentValueIndex> is the actual value
+       public final static String[] NoDiscreteValue = {}; 
+/**
+ * INTERNAL USE ONLY
+ *
+ * Initialize an instance of this class according to a specific locale
+ *
+ * @param loc java.util.Locale
+ */
+public ConfigurableOption(
+       String componentName, 
+       String optionName, 
+       Locale loc, 
+       int currentValueIndex) {
+
+       this.componentName = componentName;
+       this.optionName = optionName;
+       this.currentValueIndex = currentValueIndex;
+               
+       ResourceBundle resource = null;
+       try {
+               String location = componentName.substring(0, componentName.lastIndexOf('.'));
+               resource = ResourceBundle.getBundle(location + ".options", loc); //$NON-NLS-1$
+       } catch (MissingResourceException e) {
+               category = "Missing ressources entries for" + componentName + " options"; //$NON-NLS-1$ //$NON-NLS-2$
+               name = "Missing ressources entries for"+ componentName + " options"; //$NON-NLS-1$ //$NON-NLS-2$
+               description = "Missing ressources entries for" + componentName + " options"; //$NON-NLS-1$ //$NON-NLS-2$
+               possibleValues = new String[0];
+               id = -1;
+       }
+       if (resource == null) return;
+       try {
+               id = Integer.parseInt(resource.getString(optionName + ".number")); //$NON-NLS-1$
+       } catch (MissingResourceException e) {
+               id = -1;
+       } catch (NumberFormatException e) {
+               id = -1;
+       }
+       try {
+               category = resource.getString(optionName + ".category"); //$NON-NLS-1$
+       } catch (MissingResourceException e) {
+               category = "Missing ressources entries for" + componentName + " options"; //$NON-NLS-1$ //$NON-NLS-2$
+       }
+       try {
+               name = resource.getString(optionName + ".name"); //$NON-NLS-1$
+       } catch (MissingResourceException e) {
+               name = "Missing ressources entries for"+ componentName + " options"; //$NON-NLS-1$ //$NON-NLS-2$
+       }
+       try {
+               StringTokenizer tokenizer = new StringTokenizer(resource.getString(optionName + ".possibleValues"), "|"); //$NON-NLS-1$ //$NON-NLS-2$
+               int numberOfValues = Integer.parseInt(tokenizer.nextToken());
+               if(numberOfValues == -1){
+                       possibleValues = NoDiscreteValue;
+               } else {
+                       possibleValues = new String[numberOfValues];
+                       int index = 0;
+                       while (tokenizer.hasMoreTokens()) {
+                               possibleValues[index] = tokenizer.nextToken();
+                               index++;
+                       }
+               }
+       } catch (MissingResourceException e) {
+               possibleValues = new String[0];
+       } catch (NoSuchElementException e) {
+               possibleValues = new String[0];
+       } catch (NumberFormatException e) {
+               possibleValues = new String[0];
+       }
+       try {
+               description = resource.getString(optionName + ".description");  //$NON-NLS-1$
+       } catch (MissingResourceException e) {
+               description = "Missing ressources entries for"+ componentName + " options"; //$NON-NLS-1$ //$NON-NLS-2$
+       }
+}
+/**
+ * Return a String that represents the localized category of the receiver.
+ * @return java.lang.String
+ */
+public String getCategory() {
+       return category;
+}
+/**
+ * Return a String that identifies the component owner (typically the qualified
+ *     type name of the class which it corresponds to).
+ *
+ * e.g. "org.eclipse.jdt.internal.compiler.api.Compiler"
+ *
+ * @return java.lang.String
+ */
+public String getComponentName() {
+       return componentName;
+}
+/**
+ * Answer the index (in possibleValues array) of the current setting for this
+ * particular option.
+ *
+ * In case the set of possibleValues is NoDiscreteValue, then this index is the
+ * actual value (e.g. max line lenght set to 80).
+ *
+ * @return int
+ */
+public int getCurrentValueIndex() {
+       return currentValueIndex;
+}
+/**
+ * Answer the index (in possibleValues array) of the default setting for this
+ * particular option.
+ *
+ * In case the set of possibleValues is NoDiscreteValue, then this index is the
+ * actual value (e.g. max line lenght set to 80).
+ *
+ * @return int
+ */
+public int getDefaultValueIndex() {
+       return defaultValueIndex;
+}
+/**
+ * Return an String that represents the localized description of the receiver.
+ *
+ * @return java.lang.String
+ */
+public String getDescription() {
+       return description;
+}
+/**
+ * Internal ID which allows the configurable component to identify this particular option.
+ *
+ * @return int
+ */
+public int getID() {
+       return id;
+}
+/**
+ * Return a String that represents the localized name of the receiver.
+ * @return java.lang.String
+ */
+public String getName() {
+       return name;
+}
+/**
+ * Return an array of String that represents the localized possible values of the receiver.
+ * @return java.lang.String[]
+ */
+public String[] getPossibleValues() {
+       return possibleValues;
+}
+/**
+ * Change the index (in possibleValues array) of the current setting for this
+ * particular option.
+ *
+ * In case the set of possibleValues is NoDiscreteValue, then this index is the
+ * actual value (e.g. max line lenght set to 80).
+ */
+public void setValueIndex(int newIndex) {
+       currentValueIndex = newIndex;
+}
+public String toString() {
+       StringBuffer buffer = new StringBuffer();
+       buffer.append("Configurable option for "); //$NON-NLS-1$ 
+       buffer.append(this.componentName).append("\n"); //$NON-NLS-1$ 
+       buffer.append("- category:                      ").append(this.category).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+       buffer.append("- name:                          ").append(this.name).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+       /* display current value */
+       buffer.append("- current value: "); //$NON-NLS-1$ 
+       if (possibleValues == NoDiscreteValue){
+               buffer.append(this.currentValueIndex);
+       } else {
+               buffer.append(this.possibleValues[this.currentValueIndex]);
+       }
+       buffer.append("\n"); //$NON-NLS-1$ 
+       
+       /* display possible values */
+       if (possibleValues != NoDiscreteValue){
+               buffer.append("- possible values:       ["); //$NON-NLS-1$ 
+               for (int i = 0, max = possibleValues.length; i < max; i++) {
+                       if (i != 0)
+                               buffer.append(", "); //$NON-NLS-1$ 
+                       buffer.append(possibleValues[i]);
+               }
+               buffer.append("]\n"); //$NON-NLS-1$ 
+               buffer.append("- curr. val. index:      ").append(currentValueIndex).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+       }
+       buffer.append("- description:           ").append(description).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+       return buffer.toString();
+}
+       /**
+        * Gets the optionName.
+        * @return Returns a String
+        */
+       public String getOptionName() {
+               return optionName;
+       }
+}