/******************************************************************************* * Copyright (c) 2001, 2006 IBM 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: * IBM Corporation - initial API and implementation * Jens Lukowski/Innoopract - initial renaming/restructuring * *******************************************************************************/ package org.eclipse.wst.sse.ui.internal.contentproperties.ui; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import java.util.Map; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.wst.sse.ui.internal.Logger; /** * @deprecated People should manage their own combo/list */ public class ComboList { private Combo combo; private List list; public ComboList(Composite parent, int style) { combo = new Combo(parent, style); list = new ArrayList(); } /* * following methods is original method of Combo class. */ public void add(String key) { checkError(); combo.add(key); list.add(key); } public void add(String key, int index) { checkError(); combo.add(key, index); list.add(index, key); } public void add(String key, String value) { checkError(); combo.add(key); list.add(value); } public void add(String key, String value, int index) { checkError(); combo.add(key, index); list.add(index, value); } public void addFocusListener(FocusListener listener) { combo.addFocusListener(listener); } public void addModifyListener(org.eclipse.swt.events.ModifyListener listener) { combo.addModifyListener(listener); } public void addSelectionListener(org.eclipse.swt.events.SelectionListener listener) { combo.addSelectionListener(listener); } private void checkError() { if (!isConsistency()) { Logger.log(Logger.WARNING, "Difference between the number of keys[" + combo.getItemCount() + "] and the number of values[" + list.size() + "] in ComboList"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } } public org.eclipse.swt.graphics.Point computeSize(int wHint, int hHint) { return combo.computeSize(wHint, hHint); } public Map createHashtable() { checkError(); Map m = new Hashtable(); for (int i = 0; i < list.size(); i++) m.put(combo.getItem(i), list.get(i)); return m; } public void deselect(int i) { combo.deselect(i); } public void deselectAll() { combo.deselectAll(); } public boolean equals(Object obj) { return combo.equals(obj); } private void exchangePosition(int i, int j) { String tmpKey = getItem(i); Object tmpValue = list.remove(i); combo.setItem(i, getItem(j)); list.add(i, list.remove(j - 1)); combo.setItem(j, tmpKey); list.add(j, tmpValue); } public boolean existsAsKey(String str) { if (combo.indexOf(str) >= 0) return true; else return false; } public boolean existsAsValue(String str) { if (list.indexOf(str) >= 0) return true; else return false; } public boolean getEnabled() { return combo.getEnabled(); } public String getItem(int index) { return combo.getItem(index); } public int getItemCount() { return combo.getItemCount(); } public String getKey(String value) { if (value == null) return null; int index = -1; checkError(); for (int i = 0; i < list.size(); i++) { if (!list.get(i).equals(value)) continue; index = i; break; } if (index != -1) return combo.getItem(index); else return null; } public Object getLayoutData() { return combo.getLayoutData(); } public String getSelectedValue() { checkError(); int index = getSelectionIndex(); if (index < 0) return null; return getValue(getItem(index)); } public int getSelectionIndex() { return combo.getSelectionIndex(); } public String getText() { return combo.getText(); } public String getValue(String key) { if (key == null) return null; int index = -1; checkError(); for (int i = 0; i < combo.getItemCount(); i++) { if (!combo.getItem(i).equals(key)) continue; index = i; break; } if (index != -1) return (String) list.get(index); else return null; } public int indexOf(String str) { return combo.indexOf(str); } public boolean isConsistency() { if (list.size() == combo.getItemCount()) return true; else return false; } public void remove(int index) { checkError(); combo.remove(index); list.remove(index); } public void remove(String str) { checkError(); combo.remove(str); list.remove(str); } public void select(int index) { combo.select(index); } public void setEnabled(boolean enabled) { combo.setEnabled(enabled); } public boolean setFocus() { return combo.setFocus(); } public void setItem(int index, String str) { checkError(); combo.setItem(index, str); list.remove(index); list.add(index, str); } public void setItem(String[] strArray) { checkError(); combo.setItems(strArray); for (int i = 0; i < strArray.length; i++) list.add(strArray[i]); } public void setLayout(org.eclipse.swt.widgets.Layout lo) { combo.setLayout(lo); } public void setLayoutData(Object layoutData) { combo.setLayoutData(layoutData); } public void setSelection(Point point) { combo.setSelection(point); } public void setText(String str) { combo.setText(str); } public void sortByKey(int offset) { if (offset < 0 || offset > this.combo.getItemCount() - 1) return; checkError(); // for (int i = offset; i < combo.getItemCount() - 1; i++) { for (int j = i + 1; j < combo.getItemCount(); j++) { if (getItem(i).compareTo(getItem(j)) > 0) { exchangePosition(i, j); } } } } }