blob: 8b8eb5908732ae03f62ab8a2ac3a3687f3fb2738 [file] [log] [blame]
/*******************************************************************************
* 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);
}
}
}
}
}