final int ident) {
super(fenstertitel);
this.skalierung = 1;
this.verschiebung = new Vektor2D(Vektor2D.NULL_VEKTOR);
this.markierte = new LinkedList<Integer>();
this.userSegs = new LinkedList<SegSpez>();
this.setSize(750, 700);
this.aktDicke = fmg.fmg8.graphVis.zeichenModi.Konstanten.PFEIL_DICKE;
this.pfeilPol = new Polygon2D();
this.pars = params;
this.zeichenArt = new PfeilMaster(this.pars);
this.segBeschr = new SegSpez[1000];
this.addMouseWheelListener(this);
this.addComponentListener(new ComponentListener() {
@Override
public void componentHidden(final ComponentEvent e) {
}
@Override
public void componentMoved(final ComponentEvent e) {
}
@Override
public void componentResized(final ComponentEvent e) {
ZeichFen.this.neuZeichnen();
}
@Override
public void componentShown(final ComponentEvent e) {
}
}
);
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(final MouseEvent event) {
Vektor2D vek = new Vektor2D(
(event.getX() - verschiebung.x) / skalierung,
(event.getY() - verschiebung.y) / skalierung);
Vektor2D neu;
if (ZeichFen.this.vekClick != null) {
for (int i = 0; i < ZeichFen.this.pfeilPol.size(); i++) {
if (ZeichFen.this.markierte.contains(i)) {
neu = new Vektor2D(ZeichFen.this.pfeilPol.get(i));
neu.add(vek);
neu.sub(ZeichFen.this.ersteEcke);
ZeichFen.this.pfeilPol.set(i, neu);
}
}
ZeichFen.this.vekClick
= ZeichFen.this.containsPoint(vek);
ZeichFen.this.ersteEcke = vek;
ZeichFen.this.neuZeichnen();
} else {
ZeichFen.this.zweiteEcke
= new Vektor2D(
(event.getX() - verschiebung.x) / skalierung,
(event.getY() - verschiebung.y) / skalierung);
ZeichFen.this.neuZeichnen();
}
}
});
this.addMouseListener(new MouseAdapter() {
public void mousePressed(final MouseEvent event) {
Vektor2D vek = new Vektor2D(
(event.getX() - verschiebung.x) / skalierung,
(event.getY() - verschiebung.y) / skalierung);
ZeichFen.this.ersteEcke = new Vektor2D(vek);
ZeichFen.this.vekClick
= ZeichFen.this.containsPoint(vek);
ZeichFen.this.mark1 = ZeichFen.this.mark2;
ZeichFen.this.mark2 = ZeichFen.this.pfeilPol.realIndexOf(
ZeichFen.this.vekClick);
if (ZeichFen.this.mark1 != null
&& ZeichFen.this.mark1 < 0) {
ZeichFen.this.mark1 = null;
}
if (ZeichFen.this.mark2 != null
&& ZeichFen.this.mark2 < 0) {
ZeichFen.this.mark2 = null;
}
if (ZeichFen.this.mark1 != null
&& !ZeichFen.this.markierte.contains(
ZeichFen.this.mark1)) {
ZeichFen.this.markierte.add(ZeichFen.this.mark1);
}
if (ZeichFen.this.mark2 != null
&& !ZeichFen.this.markierte.contains(
ZeichFen.this.mark2)) {
ZeichFen.this.markierte.add(ZeichFen.this.mark2);
}
}
public void mouseClicked(final MouseEvent event) {
Vektor2D vek = new Vektor2D(
(event.getX() - verschiebung.x) / skalierung,
(event.getY() - verschiebung.y) / skalierung);
if (event.getButton() == 3) {
skaliere();
zentriere();
return;
}
if (ZeichFen.this.containsPoint(vek) == null
&& (ZeichFen.this.mark1 != null
|| ZeichFen.this.mark2 != null
|| ZeichFen.this.markierte.size() > 0)) {
ZeichFen.this.markierte.clear();
ZeichFen.this.mark1 = null;
ZeichFen.this.mark2 = null;
} else {
if (ZeichFen.this.vekClick == null
&& event.getClickCount() >= 2) {
ZeichFen.this.pfeilPol.add(new Vektor2D(vek));
ZeichFen.this.dicken.add(ZeichFen.this.aktDicke);
}
}
}