public class Frame{
final Dimension puzzleDim = new Dimension(800,800);
final Dimension dataDim = new Dimension(500,800);
final JFrame puzzleFrame = new JFrame();
final JFrame dataFrame = new JFrame();
final Box box = new Box(100, 30, 0, 0);
public static void main(String[] args){
Frame frame = new Frame();
frame.paintFrame();
}
/**
* method for creating all Labels and TextFields for data input
* @return List which contains all Containers
*/
private ArrayList<Container> inputFields(){
ArrayList<Container> containerList = new ArrayList<Container>();
Container labelContainer = new Container();
labelContainer.setLayout(new GridLayout(25, 1));
Container textContainer = new Container();
textContainer.setLayout(new GridLayout(25, 1));
Container buttonContainer = new Container();
buttonContainer.setLayout(new FlowLayout());
JLabel praeambel = new JLabel("Präambel: ");
labelContainer.add(praeambel);
JTextField praeField = new JTextField("a");
praeField.setEditable(true);
textContainer.add(praeField);
JLabel tarAddrEth = new JLabel("Target Address(Eth): ");
labelContainer.add(tarAddrEth);
JTextField tarAddrEtField = new JTextField("b");
tarAddrEtField.setEditable(true);
textContainer.add(tarAddrEtField);
JLabel sourceAddrEth = new JLabel("Source Address(Eth): ");
labelContainer.add(sourceAddrEth);
JTextField sourceAddrEthField = new JTextField();
sourceAddrEthField.setEditable(true);
textContainer.add(sourceAddrEthField);
JLabel length = new JLabel("Length/Type: ");
labelContainer.add(length);
JTextField lengthField = new JTextField();
lengthField.setEditable(true);
textContainer.add(lengthField);
JLabel vers = new JLabel("Vers: ");
labelContainer.add(vers);
JTextField versField= new JTextField();
versField.setEditable(true);
textContainer.add(versField);
JLabel hdrLen = new JLabel("HdrLen: ");
labelContainer.add(hdrLen);
JTextField hdrLenField = new JTextField();
hdrLenField.setEditable(true);
textContainer.add(hdrLenField);
JLabel tos = new JLabel("TOS: ");
labelContainer.add(tos);
JTextField tosField = new JTextField();
tosField.setEditable(true);
textContainer.add(tosField);
JLabel ipPackLength = new JLabel("IP - Packet Length: ");
labelContainer.add(ipPackLength);
JTextField ipPackLengthField = new JTextField();
ipPackLengthField.setEditable(true);
textContainer.add(ipPackLengthField);
JLabel packID = new JLabel("Packet ID: ");
labelContainer.add(packID);
JTextField packIDField = new JTextField();
packIDField.setEditable(true);
textContainer.add(packIDField);
JLabel fragOff = new JLabel("Fragment Offset: ");
labelContainer.add(fragOff);
JTextField fragOffField = new JTextField();
fragOffField.setEditable(true);
textContainer.add(fragOffField);
JLabel ttl = new JLabel("TTL: ");
labelContainer.add(ttl);
JTextField ttlField = new JTextField();
ttlField.setEditable(true);
textContainer.add(ttlField);
JLabel prot = new JLabel("Protocol: ");
labelContainer.add(prot);
JTextField protField = new JTextField();
protField.setEditable(true);
textContainer.add(protField);
JLabel hCheckSum = new JLabel("Header Checksum: ");
labelContainer.add(hCheckSum);
JTextField hCheckSumField = new JTextField();
hCheckSumField.setEditable(true);
textContainer.add(hCheckSumField);
JLabel tarAddrIP = new JLabel("Target Address(IP): ");
labelContainer.add(tarAddrIP);
JTextField tarAddrIPField = new JTextField();
tarAddrIPField.setEditable(true);
textContainer.add(tarAddrIPField);
JLabel sourceAddrIP = new JLabel("Source Address(IP): ");
labelContainer.add(sourceAddrIP);
JTextField sourceAddrIPField = new JTextField();
sourceAddrIPField.setEditable(true);
textContainer.add(sourceAddrIPField);
JLabel options = new JLabel("Options: ");
labelContainer.add(options);
JTextField optionsField = new JTextField();
optionsField.setEditable(true);
textContainer.add(optionsField);
JLabel padding = new JLabel("Padding: ");
labelContainer.add(padding);
JTextField paddingField = new JTextField();
paddingField.setEditable(true);
textContainer.add(paddingField);
JLabel type = new JLabel("Type: ");
labelContainer.add(type);
JTextField typeField = new JTextField();
typeField.setEditable(true);
textContainer.add(typeField);
JLabel code = new JLabel("Code: ");
labelContainer.add(code);
JTextField codeField = new JTextField();
codeField.setEditable(true);
textContainer.add(codeField);
JLabel checkSum = new JLabel("Checksum: ");
labelContainer.add(checkSum);
JTextField checkSumField = new JTextField();
checkSumField.setEditable(true);
textContainer.add(checkSumField);
JLabel identifier = new JLabel("Identifier: ");
labelContainer.add(identifier);
JTextField identifierField = new JTextField();
identifierField.setEditable(true);
textContainer.add(identifierField);
JLabel seqNum = new JLabel("Sequence Number: ");
labelContainer.add(seqNum);
JTextField seqNumField = new JTextField();
seqNumField.setEditable(true);
textContainer.add(seqNumField);
JLabel data = new JLabel("Data: ");
labelContainer.add(data);
JTextField dataField = new JTextField();
dataField.setEditable(true);
textContainer.add(dataField);
JLabel pad = new JLabel("Pad: ");
labelContainer.add(pad);
JTextField padField = new JTextField();
padField.setEditable(true);
textContainer.add(padField);
JLabel pSum = new JLabel("Prüfsumme: ");
labelContainer.add(pSum);
JTextField pSumField = new JTextField();
pSumField.setEditable(true);
textContainer.add(pSumField);
JButton append = new JButton("APPEND");
JButton reset = new JButton("RESET");
append.addActionListener(new AppendListener());
reset.addActionListener(new ResetListener());
buttonContainer.add(append);
buttonContainer.add(reset);
containerList.add(labelContainer);
containerList.add(textContainer);
containerList.add(buttonContainer);
return containerList;
}
public Container getTextFields(){
return inputFields().get(1);
}
/**
* method for painting the frames
*/
private void paintFrame(){
BorderLayout border = new BorderLayout();
BoxPanel boxp = new BoxPanel();
boxp.addBox(box);
puzzleFrame.setTitle("Echo Request Puzzle");
puzzleFrame.setSize(puzzleDim);
puzzleFrame.setLocation(new Point(0,0));
puzzleFrame.add(boxp);
puzzleFrame.setVisible(true);
puzzleFrame.setDefaultCloseOperation(puzzleFrame.EXIT_ON_CLOSE);
dataFrame.setTitle("Echo Request Input");
dataFrame.setLayout(border);
dataFrame.setSize(dataDim);
dataFrame.setLocation(new Point(puzzleFrame.getSize().width + 10, 0));
dataFrame.add(inputFields().get(0), border.WEST);
dataFrame.add(inputFields().get(1), border.CENTER);
dataFrame.add(inputFields().get(2), border.SOUTH);
dataFrame.setVisible(true);
dataFrame.setDefaultCloseOperation(dataFrame.EXIT_ON_CLOSE);
}
}