package ie.dcu.apps.ist.actions; import ie.dcu.apps.ist.SegmenterRegistry; import ie.dcu.apps.ist.views.SegmentationView; import ie.dcu.segment.Segmenter; /** * Segmenter radio buttons. * * @author Kevin McGuinness */ public class SelectSegmenterAction extends AppAction { private final Segmenter segmenter; public SelectSegmenterAction(ActionManager m, SegmenterRegistry r, Segmenter s) { super(m, AS_RADIO_BUTTON); this.segmenter = s; setText(s.getName()); setToolTipText(s.getDescription()); if (!s.isAvailable()) { super.setEnabled(false); setChecked(false); String naText = string("NA"); setToolTipText(naText); setDescription(naText); } else { setChecked(r.isDefault(s)); } } public void setEnabled(boolean enabled) { // Disallow enabling unavailable segmentation algorithms if (!enabled || (segmenter.isAvailable() && enabled)) { super.setEnabled(enabled); } } public Segmenter getSegmenter() { return segmenter; } @Override public String id() { return segmenter.getClass().getName(); } @Override public void run() { if (isChecked()) { SegmentationView view = window.getView(); view.setSegmenter(segmenter); } } }