/* * Carrot2 project. * * Copyright (C) 2002-2016, Dawid Weiss, Stanisław Osiński. * All rights reserved. * * Refer to the full license file "carrot2.LICENSE" * in the root folder of the repository checkout or at: * http://www.carrot2.org/carrot2.LICENSE */ package org.carrot2.workbench.core.ui.actions; import org.carrot2.workbench.core.WorkbenchCorePlugin; import org.carrot2.workbench.core.preferences.PreferenceConstants; import org.carrot2.workbench.core.ui.AttributeInfoView; import org.carrot2.workbench.core.ui.PropertyChangeListenerAdapter; import org.eclipse.jface.action.IAction; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.ui.actions.ActionDelegate; /** * An action that synchronizes tooltip appearance with the {@link AttributeInfoView}'s * content. */ public final class AttributeInfoSyncAction extends ActionDelegate { /* * */ private IAction action; /* * */ private final IPropertyChangeListener listener = new PropertyChangeListenerAdapter(PreferenceConstants.ATTRIBUTE_INFO_SYNC) { protected void propertyChangeFiltered(PropertyChangeEvent event) { updateState(); } }; /* * */ @Override public void init(IAction action) { super.init(action); this.action = action; getPreferenceStore().addPropertyChangeListener(listener); updateState(); } /* * */ private IPreferenceStore getPreferenceStore() { return WorkbenchCorePlugin.getDefault().getPreferenceStore(); } /* * */ @Override public void run(IAction action) { final IPreferenceStore preferenceStore = getPreferenceStore(); preferenceStore.setValue(PreferenceConstants.ATTRIBUTE_INFO_SYNC, !preferenceStore.getBoolean(PreferenceConstants.ATTRIBUTE_INFO_SYNC)); } /* * */ private void updateState() { action.setChecked(getPreferenceStore().getBoolean(PreferenceConstants.ATTRIBUTE_INFO_SYNC)); } /* * */ public void dispose() { getPreferenceStore().removePropertyChangeListener(listener); } }