package jav.gui.actions;
import jav.gui.cookies.ShowImagesCookie;
import java.awt.event.ActionEvent;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenuItem;
import org.openide.awt.Actions;
import org.openide.util.HelpCtx;
import org.openide.util.Lookup;
import org.openide.util.LookupEvent;
import org.openide.util.LookupListener;
import org.openide.util.Utilities;
import org.openide.util.actions.BooleanStateAction;
/**
*Copyright (c) 2012, IMPACT working group at the Centrum für Informations- und Sprachverarbeitung, University of Munich.
*All rights reserved.
*Redistribution and use in source and binary forms, with or without
*modification, are permitted provided that the following conditions are met:
*Redistributions of source code must retain the above copyright
*notice, this list of conditions and the following disclaimer.
*Redistributions in binary form must reproduce the above copyright
*notice, this list of conditions and the following disclaimer in the
*documentation and/or other materials provided with the distribution.
*THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
*IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
*TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
*PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
*HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
*SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
*LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
*DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
*THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
*(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This file is part of the ocr-postcorrection tool developed
* by the IMPACT working group at the Centrum für Informations- und Sprachverarbeitung, University of Munich.
* For further information and contacts visit http://ocr.cis.uni-muenchen.de/
*
* @author thorsten (thorsten.vobl@googlemail.com)
*/
public final class ToggleImages extends BooleanStateAction implements LookupListener {
private JCheckBoxMenuItem menuButton;
private Lookup context = null;
private Lookup.Result<ShowImagesCookie> result = null;
public ToggleImages() {
this(Utilities.actionsGlobalContext());
}
public ToggleImages(Lookup lkp) {
super();
this.setEnabled(false);
init(lkp);
}
private void init(Lookup lkp) {
this.context = lkp;
menuButton = new JCheckBoxMenuItem(java.util.ResourceBundle.getBundle("jav/gui/actions/Bundle").getString("CTL_ToggleImages"));
Actions.connect(menuButton, this, true);
setBooleanState(true);
result = context.lookupResult(contextClass());
result.addLookupListener(this);
resultChanged(null);
}
public Class<ShowImagesCookie> contextClass() {
return ShowImagesCookie.class;
}
@Override
public void actionPerformed(ActionEvent event) {
super.actionPerformed(event);
boolean state = getBooleanState();
actionP(result.allInstances().iterator().next(), state);
}
@Override
public JMenuItem getMenuPresenter() {
return menuButton;
}
@Override
public String getName() {
return java.util.ResourceBundle.getBundle("jav/gui/actions/Bundle").getString("CTL_ToggleImages"); //""; //menuButton.getText();
}
@Override
public HelpCtx getHelpCtx() {
HelpCtx bla = new HelpCtx("Go away!");
return bla;
}
@Override
public void resultChanged(LookupEvent le) {
if (!result.allItems().isEmpty()) {
setEnabled(enable(result.allInstances().iterator().next()));
} else {
setEnabled(false);
}
}
public boolean enable(ShowImagesCookie context) {
if( context.isReady() && context.hasImage()) {
this.setBooleanState(context.getShowImages());
return true;
} else {
return false;
}
}
// @Override
// public Action createContextAwareInstance(Lookup lkp) {
// return new ToggleImages(lkp);
// }
public void actionP( ShowImagesCookie context, boolean b) {
if(context.isReady()) {
context.toggleImages(b);
}
}
}