/** * <copyright> * </copyright> * * */ package org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui; public abstract class AbstractMtextOutlinePageAction extends org.eclipse.jface.action.Action { private String preferenceKey = this.getClass().getSimpleName() + ".isChecked"; private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextOutlinePageTreeViewer treeViewer; public AbstractMtextOutlinePageAction(org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextOutlinePageTreeViewer treeViewer, String text, int style) { super(text, style); this.treeViewer = treeViewer; } public void initialize(String imagePath) { org.eclipse.jface.resource.ImageDescriptor descriptor = org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextImageProvider.INSTANCE.getImageDescriptor(imagePath); setDisabledImageDescriptor(descriptor); setImageDescriptor(descriptor); setHoverImageDescriptor(descriptor); boolean checked = org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextUIPlugin.getDefault().getPreferenceStore().getBoolean(preferenceKey); valueChanged(checked, false); } @Override public void run() { if (keepState()) { valueChanged(isChecked(), true); } else { runBusy(true); } } public void runBusy(final boolean on) { org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display.getCurrent(), new Runnable() { public void run() { runInternal(on); } }); } public abstract void runInternal(boolean on); private void valueChanged(boolean on, boolean store) { setChecked(on); runBusy(on); if (store) { org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextUIPlugin.getDefault().getPreferenceStore().setValue(preferenceKey, on); } } public boolean keepState() { return true; } public org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextOutlinePageTreeViewer getTreeViewer() { return treeViewer; } public org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextOutlinePageTreeViewerComparator getTreeViewerComparator() { return (org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextOutlinePageTreeViewerComparator) treeViewer.getComparator(); } }