Package org.objectstyle.wolips.wooeditor.widgets

Source Code of org.objectstyle.wolips.wooeditor.widgets.RadioGroup

package org.objectstyle.wolips.wooeditor.widgets;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

import org.eclipse.core.runtime.ListenerList;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Event;

public class RadioGroup {
  private ListenerList selectionEventListeners = new ListenerList();
  private List<Button> group = new ArrayList<Button>();
  private Button selected;

  private SelectionListener changeListener = new SelectionListener() {

    public void widgetDefaultSelected(final SelectionEvent e) {
      setSelection(((Button) e.getSource()).getText());
    }

    public void widgetSelected(final SelectionEvent e) {
      Button b = (Button) e.getSource();
      if (b.getSelection()) {
        setSelection(b.getText());
      }
    }

  };

  public RadioGroup() {
  }

  public boolean add(final Button button) {
    button.addSelectionListener(changeListener);
    return group.add(button);
  }

  public void add(final int index, final Button button) {
    button.addSelectionListener(changeListener);
    group.add(index, button);
  }

  public boolean addAll(final Collection<Button> collection) {
    for (Button button : collection) {
      button.addSelectionListener(changeListener);
    }
    return group.addAll(collection);
  }

  public boolean addAll(final int index,
      final Collection<Button> collection) {
    for (Button button : collection) {
      button.addSelectionListener(changeListener);
    }
    return group.addAll(index, collection);
  }

  public void clear() {
    for (Button button : group) {
      button.removeSelectionListener(changeListener);
    }
    group.clear();
  }

  public boolean contains(final Object value) {
    return group.contains(value);
  }

  public boolean containsAll(final Collection<Button> collection) {
    return group.containsAll(collection);
  }

  public Object get(final int index) {
    return group.get(index);
  }

  public int indexOf(final Object value) {
    return group.indexOf(value);
  }

  public boolean isEmpty() {
    return group.isEmpty();
  }

  public Iterator<Button> iterator() {
    return group.iterator();
  }

  public int lastIndexOf(final Object value) {
    return group.lastIndexOf(value);
  }

  public ListIterator<Button> listIterator() {
    return group.listIterator();
  }

  public ListIterator<Button> listIterator(final int arg0) {
    return group.listIterator(arg0);
  }

  public boolean remove(final Button button) {
    button.removeSelectionListener(changeListener);
    return group.remove(button);
  }

  public Object remove(final int index) {
    group.get(index).removeSelectionListener(changeListener);
    return group.remove(index);
  }

  public boolean removeAll(final Collection<Button> arg0) {
    for (Button button : group) {
      button.removeSelectionListener(changeListener);
    }
    return group.removeAll(arg0);
  }

  public int size() {
    return group.size();
  }

  public List<Button> subList(final int arg0, final int arg1) {
    return group.subList(arg0, arg1);
  }

  public Object[] toArray() {
    return group.toArray();
  }

  public Object[] toArray(final Object[] arg0) {
    return group.toArray(arg0);
  }

  public void removeSelectionListener(
      final SelectionListener selectionListener) {
    selectionEventListeners.remove(selectionListener);
  }

  public void addSelectionListener(
      final SelectionListener selectionListener) {
    selectionEventListeners.add(selectionListener);
  }

  public void setSelection(final Object value) {
    if (group.size() < 1) {
      return;
    }
    for (Button i : group) {
      if (i.getText().equals(value)) {
        selected = i;
      } else {
        i.setSelection(false);
      }
    }
    if (selected != null) {
      selected.setSelection(true);
      Event e = new Event();
      e.type = SWT.Selection;
      e.item = selected;
      e.widget = selected;
      e.text = selected.getText();
      fireSelectionEvent(new SelectionEvent(e));
    }
  }

  private void fireSelectionEvent(final SelectionEvent e) {
    if (e.item != null && e.item.isDisposed()) {
      return;
    }
    Object[] l = selectionEventListeners.getListeners();
    for (int i = 0; i < l.length; i++) {
      ((SelectionListener) l[i]).widgetSelected(e);
    }
  }

  public Object getSelection() {
    if (group.size() < 1) {
      return null;
    }
    return selected.getText();
  }

}
TOP

Related Classes of org.objectstyle.wolips.wooeditor.widgets.RadioGroup

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.