/*
 * OutputLayerFigure.java
 *
 * Created on 5 aprile 2001, 1.05
 */

package org.joone.edit;
import java.awt.*;
import java.util.*;
import CH.ifa.draw.standard.*;
import CH.ifa.draw.figures.*;
import org.joone.engine.*;
import org.joone.io.*;
import org.joone.util.OutputConverterPlugIn;

public class OutputLayerFigure extends org.joone.edit.LayerFigure {
    
    protected OutputPatternListener myOutputLayer;
    
    private static final long serialVersionUID = 2256335810481848745L;
    
    /** Creates new OutputLayerFigure */
    public OutputLayerFigure() {
    }
    
    protected void initContent() {
        fPostConn = new Vector();
        fPreConn = new Vector();
        
        Font fb = new Font("Helvetica", Font.BOLD, 12);
        
        myOutputLayer = (OutputPatternListener)createLayer();
        
        TextFigure name = new UpdatableTextFigure() {
            public void setText(String newText) {
                super.setText(newText);
                getOutputLayer().setName(newText);
            }
            public void update() {
                if (myOutputLayer.isEnabled())
                    this.setAttribute("TextColor", Color.blue);
                else
                    this.setAttribute("TextColor", Color.gray);
                setText(getOutputLayer().getName());
            }
        };
        
        name.setFont(fb);
        name.setAttribute("TextColor", Color.blue);
        name.setText("OutputLayer " + ++numLayers);
        add(name);
    }
    
    
    public void addPostConn(LayerFigure figure, OutputPatternListener synapse) {
    }
    
    public boolean addPreConn(LayerFigure figure) {
        if (!fPreConn.contains(figure)) {
            fPreConn.addElement(figure);
            return true;
        }
        else
            return false;
    }
    
    public void removePreConn(LayerFigure figure) {
        super.removePreConn(figure);
    }
    
    public void addPreConn(LayerFigure layerFigure, OutputConverterPlugIn plugin) {
        OutputPatternListener opl = getOutputLayer();
        if (opl instanceof StreamOutputSynapse) {
            StreamOutputSynapse sos = (StreamOutputSynapse)opl;
            sos.addPlugIn(plugin);
            if (!fPreConn.contains(layerFigure)) {
                fPreConn.addElement(layerFigure);
            }
        }
    }
    
    public void removePreConn(LayerFigure figure, OutputConverterPlugIn plugin) {
        fPreConn.removeElement(figure);
        OutputPatternListener opl = getOutputLayer();
        if (opl instanceof StreamOutputSynapse) {
            StreamOutputSynapse sos = (StreamOutputSynapse)opl;
            sos.addPlugIn(null);
        }
    }
    
    protected Vector addHandles(Vector handles) {
        handles.addElement(new SpecialConnectionHandle(this, RelativeLocator.south(),
        new OutputPluginConnection(), Color.magenta));
        return handles;
    }
    
    
    /** Get the InputLayer object
     * @return the InputLayer object (org.joone.StreamInputSynapse)
     */
    
    public OutputPatternListener getOutputLayer() {
        return myOutputLayer;
    }
    
    /** Returns the wrapper for the Figure
     * @return the Wrapper object
     */
    public Wrapper getWrapper() {
        return new Wrapper(this, getOutputLayer(), getOutputLayer().getName());
    }
    
    
    public boolean canConnect() {
        boolean retValue;
        
        retValue = super.canConnect() && !getOutputLayer().isOutputFull();
        return retValue;
    }
    
}

 

Ads help maintain this website.