1 /*******************************************************************************
2  * Copyright (c) 2011 Google, Inc.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  *    Google, Inc. - initial API and implementation
10  *******************************************************************************/
11 package org.eclipse.wb.internal.core.model.property.editor;
12 
13 import org.eclipse.wb.core.controls.CCombo3;
14 import org.eclipse.wb.internal.core.model.property.Property;
15 
16 /**
17  * The {@link PropertyEditor} for selecting single string from given set.
18  *
19  * @author sablin_aa
20  * @coverage core.model.property.editor
21  */
22 public final class StringListPropertyEditor extends AbstractListPropertyEditor {
23   private boolean m_ignoreCase;
24   private String[] m_strings;
25 
26   ////////////////////////////////////////////////////////////////////////////
27   //
28   // Combo
29   //
30   ////////////////////////////////////////////////////////////////////////////
31   @Override
toPropertyEx_simpleProperty(Property property, CCombo3 combo, int index)32   protected void toPropertyEx_simpleProperty(Property property, CCombo3 combo, int index)
33       throws Exception {
34     property.setValue(m_strings[index]);
35   }
36 
37   ////////////////////////////////////////////////////////////////////////////
38   //
39   // Access to list items
40   //
41   ////////////////////////////////////////////////////////////////////////////
42   @Override
getCount()43   protected int getCount() {
44     return m_strings.length;
45   }
46 
47   @Override
getValueIndex(Object value)48   protected int getValueIndex(Object value) {
49     if (value instanceof String) {
50       String string = (String) value;
51       for (int i = 0; i < getCount(); i++) {
52         if (m_ignoreCase) {
53           if (string.equalsIgnoreCase(m_strings[i])) {
54             return i;
55           }
56         } else {
57           if (string.equals(m_strings[i])) {
58             return i;
59           }
60         }
61       }
62     }
63     return -1;
64   }
65 
66   @Override
getTitle(int index)67   protected String getTitle(int index) {
68     return m_strings[index];
69   }
70 
71   @Override
getExpression(int index)72   protected String getExpression(int index) throws Exception {
73     //return StringConverter.INSTANCE.toJavaSource(null, m_strings[index]);
74       // HACK!!
75       System.out.println("HACK!");
76       return m_strings[index];
77   }
78 //
79 //  ////////////////////////////////////////////////////////////////////////////
80 //  //
81 //  // IConfigurablePropertyObject
82 //  //
83 //  ////////////////////////////////////////////////////////////////////////////
84 //  public void configure(EditorState state, Map<String, Object> parameters) throws Exception {
85 //    m_strings = getParameterAsArray(parameters, "strings");
86 //    m_ignoreCase = "true".equals(parameters.get("ignoreCase"));
87 //  }
88 //
89 //  /**
90 //   * Configures this editor externally.
91 //   */
92 //  public void configure(String[] strings) {
93 //    m_strings = strings;
94 //  }
95 }
96