codice:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.MouseEvent;
import javax.swing.JOptionPane;
import core.Input;
public class InputComponent extends AbstractComponent implements CircuitComponent{
private static final long serialVersionUID = 1L;
private LinkComponent link;
private boolean isLinked;
public InputComponent(String n, CircuitComponent c,CircuitPanel p){
initPortComponent(n,c,p);
int w,h;
w=20;
h=20;
getBounds().setSize(w, h);
setPreferredSize(new Dimension(w,h));
port=new Input(name);
addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
if(isLinked==true){
JOptionPane.showMessageDialog(null, "Non e' possibile un altro link", "Link Error", JOptionPane.ERROR_MESSAGE);
}
else {
if(panel.getFunction()==CircuitPanel.PAINT_LINK_FROM){
panel.setLink(new LinkComponent(panel));
panel.getLink().setDest(getMe());
link=panel.getLink();
isLinked=true;
panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),true);
panel.doOperations(new PaintLinkOperations(panel,panel.getFacade().getColor()));
panel.setFunction(CircuitPanel.PAINT_LINE);
}
else if(panel.getFunction()==CircuitPanel.PAINT_LINE){
panel.getLink().setDest(getMe());
link=panel.getLink();
isLinked=true;
panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),false);
panel.getLink().updateSize();
CircuitComponent source = panel.getLink().getSource();
CircuitComponent dest = panel.getLink().getDest();
panel.repaint();
panel.setFunction(CircuitPanel.SELECTION);
}
else{}
}
}
});
}
public LinkComponent getLink(){
return link;
}
public void setLink(LinkComponent l){
isLinked=true;
link=l;
}
public void unsetLink(){
isLinked=false;
}
public boolean isLinked(){
return isLinked;
}
public void paintComponent(Graphics g){
if(name.startsWith("."));
else{
g.setColor(color);
if(name.contains("=0*")||name.contains("=1*")){
g.drawLine(0,10,10,10);
}
else{
if(name.endsWith(".")){
g.drawLine(0,10,10,10);
g.drawString(name.substring(0, name.length()-2), 1, 9);
g.drawString("n", 1, 20);
}
else{
g.drawLine(0,10,10,10);
g.drawString(name, 1, 9);
}
}
if(selected){
g.setColor(Color.blue);
g.drawRect(0, 0, getBounds().width-1, getBounds().height-1);
}
}
}
public CircuitComponent copyComponent(){
copy= new InputComponent(name,component.getCopy(),panel);
return copy;
}
public void createComponent(){
port=new Input(name);
}
public void beforeRemove() {
if(isLinked){
((OutputComponent)link.getSource()).unsetLink();
panel.remove(link);
}
}
public void moveLink(){
(newXinput,newYinput,getSize().width , getSize().height);
Insets insets = panel.getInsets();
int newX=getBounds().x + insets.left;
int newY=getBounds().y + insets.top + 10;
if(getLink().getCornerInput() == 1)
getLink().setCorner1(new Point(newX,newY));
else
getLink().setCorner2(new Point(newX,newY));
getLink().updateSize();
}
}
La classe fa parte di un progetto in cui c'è la gestione dei circuiti logici.