package org.codemap.mapview.action;
import static org.codemap.util.CodemapIcons.LINKED;
import org.codemap.mapview.MapController;
import org.codemap.mapview.SelectionTracker;
import org.codemap.util.CodemapIcons;
import org.codemap.util.Tag;
import org.eclipse.jface.action.Action;
import org.eclipse.ui.IMemento;
public class LinkWithSelectionAction extends Action {
private SelectionTracker selectionTracker;
// TODO remember that value when closing the view (have a look at IMemento stuff)
private static final boolean DEFAULT_CHECKED = true;
public LinkWithSelectionAction(MapController theController, IMemento memento) {
super("Link with Current Selection", AS_CHECK_BOX);
selectionTracker = theController.getSelectionTracker();
setChecked(DEFAULT_CHECKED);
setImageDescriptor(CodemapIcons.descriptor(LINKED));
init(memento);
}
@Override
public void setChecked(boolean checked) {
selectionTracker.setEnabled(checked);
super.setChecked(checked);
}
@Override
public void run() {
super.run();
selectionTracker.setEnabled(isChecked());
}
protected void init(IMemento memento) {
if (memento==null) return;
Boolean checked = memento.getBoolean(Tag.LINK_SELECTION);
if (checked != null) setChecked(checked);
}
public void saveState(IMemento memento) {
memento.putBoolean(Tag.LINK_SELECTION, isChecked());
}
}