import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.util.*;
import javax.swing.*;
//Klasse Decorator aendert Aussehen und Funktionen einzelner Elemente der Klasse Ballot
public class Window2D extends Window2 {
private static final long serialVersionUID = 1L;
Window2 w2;
AbstractButton[] asb;
JLabel l1;
JLabel l2;
JLabel l3;
JPanel p;
Map<ButtonModel, AbstractButton> map1;
Map<ButtonModel, AbstractButton> map2;
JButton b;
String text;
boolean klicked;
//Constructor, hier werden die zu aendernden Argumente uebergeben
public Window2D(Window2 w2, AbstractButton[] asb, JLabel l1, JLabel l2, JLabel l3, JPanel panel, Map<ButtonModel, AbstractButton> map1, Map<ButtonModel, AbstractButton> map2, boolean klicked) {
super("Window2D");
this.w2 = w2;
this.asb = asb;
this.l1 = l1;
this.l2 = l2;
this.l3 = l3;
this.p = panel;
this.map1 = map1;
this.map2 = map2;
this.klicked = klicked;
}
//Methode build() aus der Klasse Ballot wird ueberschrieben
public void build() throws IOException {
System.out.println(klicked);
AbstractButton[] abArr1;
Collection<AbstractButton> values1 = map1.values();
int x = map1.size();
abArr1 = values1.toArray(new AbstractButton[x]);
AbstractButton[] abArr2;
Collection<AbstractButton> values2 = map2.values();
int y = map2.size();
abArr2 = values2.toArray(new AbstractButton[y]);
if (asb[0] == null && asb[1] == null) {
text = "Verändertes Label 1";
changeLabel(l1, text);
}
else if (asb[0] == null && klicked == false) {
text = "Verändertes Label 1";
changeLabel(l1, text);
text ="Verändertes Label rechts";
changeLabel (l3, text);
asb[1].setFont(new Font("Arial", Font.BOLD, 11));
for (int i = 0; i < y; i++) {
abArr2[i].setEnabled(false);
}
GridLayout g = new GridLayout(2,1);
g.setVgap(10);
b = new JButton("Auswahl löschen");
b.setFont(new Font("Arial", Font.BOLD, 18));
b.setPreferredSize(new Dimension(50,50));
b.setFocusPainted(false);
NewBallot nb = new NewBallot();
b.addActionListener(nb);
p.add(b);
p.setLayout(g);
p.setPreferredSize(new Dimension(50,90));
p.setBorder(BorderFactory.createEmptyBorder(5, 155, 10, 155));
w2.setSize(575, 473);
w2.klicked = true;
}
else if (asb[1] == null && klicked == false) {
text = "Verändertes Label 1";
changeLabel(l1, text);
text = "Verändertes Label links";
changeLabel (l2, text);
asb[0].setFont(new Font("Arial", Font.BOLD, 11));
for (int i = 0; i < x; i++) {
abArr1[i].setEnabled(false);
}
GridLayout g = new GridLayout(2,1);
g.setVgap(10);
b = new JButton("Auswahl löschen");
b.setFont(new Font("Arial", Font.BOLD, 18));
b.setPreferredSize(new Dimension(50,50));
b.setFocusPainted(false);
NewBallot nb = new NewBallot();
b.addActionListener(nb);
p.add(b);
p.setLayout(g);
p.setPreferredSize(new Dimension(50,90));
p.setBorder(BorderFactory.createEmptyBorder(5, 155, 10, 155));
w2.setSize(575, 473);
w2.klicked = true;
}
else {
text = "Verändertes Label 1";
changeLabel(l1, text);
text = "Verändertes Label links";
changeLabel (l2, text);
text ="Verändertes Label rechts";
changeLabel (l3, text);
asb[0].setFont(new Font("Arial", Font.BOLD, 11));
for (int i = 0; i < x; i++) {
abArr1[i].setEnabled(false);
}
asb[1].setFont(new Font("Arial", Font.BOLD, 11));
for (int i = 0; i < y; i++) {
abArr2[i].setEnabled(false);
}
GridLayout g = new GridLayout(2,1);
g.setVgap(10);
p.removeAll();
p.repaint();
p.setLayout(g);
p.setPreferredSize(new Dimension(50,90));
p.setBorder(BorderFactory.createEmptyBorder(5, 155, 10, 155));
w2.setSize(575, 473);
b = new JButton("Window 1 aufrufen");
b.setFont(new Font("Arial", Font.BOLD, 18));
b.setFocusPainted(false);
getW1 gw1 = new getW1();
b.addActionListener(gw1);
p.add(b);
b = new JButton("Auswahl löschen");
b.setFont(new Font("Arial", Font.BOLD, 18));
b.setFocusPainted(false);
NewBallot nb = new NewBallot();
b.addActionListener(nb);
p.add(b);
}
}
public void createAndShow() throws IOException {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//rufe Methode build auf
build();
//Fenster anzeigen
pack();
setVisible(false);
}
public void changeLabel(JLabel label, String text) {
label.getParent().invalidate();
label.setText(text);
label.setForeground(Color.red);
label.getParent().validate();
pack();
}
public class getW1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
w2.dispose();
String[] args = null;
try {
Window1.main(args);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public class NewBallot implements ActionListener {
public void actionPerformed(ActionEvent e) {
w2.dispose();
String[] args = null;
try {
Window2.main(args);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public static void main(String[]args) throws IOException {
}
}