Log in Help
Print
Homereleasesgate-8.4-build5748-ALLpluginsDeveloper_Toolssrcgatecreole 〉 Reveal.java
 
/*
 * Reveal.java
 * 
 * Copyright (c) 1995-2014, The University of Sheffield. See the file
 * COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
 * 
 * This file is part of GATE (see http://gate.ac.uk/), and is free software,
 * licenced under the GNU Library General Public License, Version 2, June 1991
 * (in the distribution as file licence.html, and also available at
 * http://gate.ac.uk/gate/licence.html).
 * 
 * Mark A. Greenwood, 3/3/2014
 */
package gate.creole;

import gate.CreoleRegister;
import gate.Gate;
import gate.Resource;
import gate.creole.metadata.AutoInstance;
import gate.creole.metadata.CreoleResource;
import gate.event.CreoleEvent;
import gate.gui.ActionsPublisher;
import gate.gui.MainFrame;
import gate.gui.NameBearerHandle;
import gate.gui.ResourceHelper;
import gate.resources.img.svg.RevealIcon;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.UIManager;

@SuppressWarnings("serial")
@CreoleResource(tool = true, isPrivate = true, autoinstances = @AutoInstance, name = "Show/Hide Resources", helpURL = "http://gate.ac.uk/userguide/sec:misc-creole:dev-tools", comment = "Show resources that would otherwise be hidden, e.g. resources created for internal use by other resources")
public class Reveal extends ResourceHelper implements ActionsPublisher {
  private List<Action> actions;

  @Override
  public List<Action> getActions() {
    if(actions == null) {
      actions = new ArrayList<Action>();
      actions.add(new AbstractAction("Show Hidden Resources", new RevealIcon(
          24, 24)) {
        @Override
        public void actionPerformed(ActionEvent e) {
          MainFrame mf = MainFrame.getInstance();
          CreoleRegister reg = Gate.getCreoleRegister();
          List<Resource> resources = new ArrayList<Resource>();
          resources.addAll(reg.getLrInstances());
          resources.addAll(reg.getPrInstances());
          for(Resource r : resources) {
            if(Gate.getHiddenAttribute(r.getFeatures())) {
              Gate.setHiddenAttribute(r.getFeatures(), false);
              mf.resourceLoaded(new CreoleEvent(r, CreoleEvent.RESOURCE_LOADED));
            }
          }
        }
      });
    }
    return actions;
  }

  @Override
  protected List<Action> buildActions(final NameBearerHandle handle) {
    final MainFrame mf = MainFrame.getInstance();
    int height =
        mf.getFontMetrics(UIManager.getFont("MenuItem.font")).getHeight();
    List<Action> rightClick = new ArrayList<Action>();
    rightClick.add(new AbstractAction("Hide Resource", new RevealIcon(height,
        height)) {
      @Override
      public void actionPerformed(ActionEvent e) {
        Resource r = (Resource)handle.getTarget();
        mf.resourceUnloaded(new CreoleEvent(r, CreoleEvent.RESOURCE_UNLOADED));
        Gate.setHiddenAttribute(r.getFeatures(), true);
      }
    });
    return rightClick;
  }
}