Package com.cburch.logisim.gui.main

Source Code of com.cburch.logisim.gui.main.Clipboard

/* Copyright (c) 2010, Carl Burch. License information is located in the
* com.cburch.logisim.Main source code and at www.cburch.com/logisim/. */

package com.cburch.logisim.gui.main;

import java.beans.PropertyChangeListener;
import java.util.Collection;
import java.util.HashSet;

import com.cburch.logisim.comp.Component;
import com.cburch.logisim.data.AttributeSet;
import com.cburch.logisim.util.PropertyChangeWeakSupport;

class Clipboard {
  public static final String contentsProperty = "contents";
 
  private static Clipboard current = null;
  private static PropertyChangeWeakSupport propertySupport = new PropertyChangeWeakSupport(Clipboard.class);
 
  public static boolean isEmpty() {
    return current == null || current.components.isEmpty();
  }
 
  public static Clipboard get() {
    return current;
  }
 
  public static void set(Selection value, AttributeSet oldAttrs) {
    set(new Clipboard(value, oldAttrs));
  }
 
  public static void set(Clipboard value) {
    Clipboard old = current;
    current = value;
    propertySupport.firePropertyChange(contentsProperty, old, current);
  }
 
  //
  // PropertyChangeSource methods
  //
  public static void addPropertyChangeListener(PropertyChangeListener listener) {
    propertySupport.addPropertyChangeListener(listener);
  }
  public static void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
    propertySupport.addPropertyChangeListener(propertyName, listener);
  }
  public static void removePropertyChangeListener(PropertyChangeListener listener) {
    propertySupport.removePropertyChangeListener(listener);
  }
  public static void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
    propertySupport.removePropertyChangeListener(propertyName, listener);
  }

  //
  // instance variables and methods
  //
  private HashSet<Component> components;
  private AttributeSet oldAttrs;
  private AttributeSet newAttrs;
 
  private Clipboard(Selection sel, AttributeSet viewAttrs) {
    components = new HashSet<Component>();
    oldAttrs = null;
    newAttrs = null;
    for (Component base : sel.getComponents()) {
      AttributeSet baseAttrs = base.getAttributeSet();
      AttributeSet copyAttrs = (AttributeSet) baseAttrs.clone();
      Component copy = base.getFactory().createComponent(base.getLocation(),
          copyAttrs);
      components.add(copy);
      if (baseAttrs == viewAttrs) {
        oldAttrs = baseAttrs;
        newAttrs = copyAttrs;
      }
    }
  }
 
  public Collection<Component> getComponents() {
    return components;
  }
 
  public AttributeSet getOldAttributeSet() {
    return oldAttrs;
  }
 
  public AttributeSet getNewAttributeSet() {
    return newAttrs;
  }
 
  void setOldAttributeSet(AttributeSet value) {
    oldAttrs = value;
  }
}
TOP

Related Classes of com.cburch.logisim.gui.main.Clipboard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.