like c n C++

profileemma.k
Project_1.txt

import java.awt.Component; import java.awt.FlowLayout; import java.awt.GridLayout; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; import java.util.*; import java.lang.*; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class GUICreator { private static Scanner scnr; private static File inp_file; private static String getLabel(String file_lines) { int cntr; file_lines.trim(); for (cntr = 0; cntr < file_lines.length(); cntr++) { char tmp=file_lines.charAt(cntr); boolean b2 = Character.isLetter(tmp); if (!b2) { break; } } return file_lines.substring(0, cntr); } public static void main(String[] args) { String strng, lbl; try { inp_file = new File("Input.txt"); scnr = new Scanner(inp_file); if (scnr.hasNextLine()) { strng = scnr.nextLine().trim(); lbl = getLabel(strng); if (!lbl.equalsIgnoreCase("Window")) { System.out.println("First label should be WINDOW"); return; } strng = strng.substring(lbl.length()).trim(); JFrame frame = (JFrame) addCompntRec(strng, lbl); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } else { System.out.println("Unknown Error"); } } catch (FileNotFoundException exp) { System.out.println("File not found"); exp.printStackTrace(); } catch (Exception excep) { System.out.println("Unknown Error"); excep.printStackTrace(); } } private static ArrayList<Integer> getIntAray(String strng) throws Exception { int lp, lpj; ArrayList<Integer> result = new ArrayList<Integer>(); for (lp = 0; lp < strng.length(); lp++) { for (lpj = lp; lpj < strng.length() && Character.isDigit(strng.charAt(lpj)); lpj++) ; if (lp != lpj) { result.add(Integer.parseInt(strng.substring(lp, lpj))); } lp = lpj; } return result; } private static Component addCompntRec(String strng, String lbl) throws Exception { String tempr; if (lbl.equalsIgnoreCase("Window")) { strng = strng.trim(); JFrame frame; if (strng.charAt(0) == '"') { strng = strng.substring(1); tempr = strng.substring(0, strng.indexOf('\"')); frame = new JFrame(tempr); strng = strng.substring(strng.indexOf('"') + 1).trim(); } else { frame = new JFrame("Default title"); } if (strng.charAt(0) == '(') { tempr = strng.substring(0, strng.indexOf(')') + 1); strng = strng.substring(tempr.length()).trim(); ArrayList<Integer> instr = getIntAray(tempr); if (instr.size() == 2) { frame.setSize(instr.get(0), instr.get(1)); } } tempr = getLabel(strng); strng = strng.substring(tempr.length()).trim(); JPanel lpnl = new JPanel(); if (tempr.equalsIgnoreCase("Layout")) { tempr = getLabel(strng); strng = strng.substring(tempr.length()).trim(); if (tempr.equalsIgnoreCase("flow")) { FlowLayout flw = new FlowLayout(); lpnl.setLayout(flw); } if (tempr.equalsIgnoreCase("grid")) { if (strng.charAt(0) == '(') { tempr = strng.substring(0, strng.indexOf(')') + 1); strng = strng.substring(tempr.length()).trim(); ArrayList<Integer> instr = getIntAray(tempr); GridLayout tmpLayout; if (instr.size() == 2) { tmpLayout = new GridLayout(instr.get(0), instr.get(1)); lpnl.setLayout(tmpLayout); } else if (instr.size() == 4) { tmpLayout = new GridLayout(instr.get(0), instr.get(1), instr.get(2), instr.get(3)); lpnl.setLayout(tmpLayout); } } } } while (true) { if (scnr.hasNextLine()) { strng = scnr.nextLine().trim(); tempr = getLabel(strng); if (tempr.equalsIgnoreCase("end")) { break; } else { Component tmpCompnt = addCompntRec( strng.substring(tempr.length()), tempr); if (tmpCompnt != null) { if (tmpCompnt.getClass() == frame.getClass()) { System.out.println("Window cant be nested inside"); } else { lpnl.add(tmpCompnt); } } } } else { System.out.println("Error in nesting"); break; } } frame.add(lpnl); return frame; } if (lbl.equalsIgnoreCase("panel")) { strng = strng.trim(); JPanel pnel = new JPanel(); tempr = getLabel(strng); strng = strng.substring(tempr.length()).trim(); if (tempr.equalsIgnoreCase("Layout")) { tempr = getLabel(strng); strng = strng.substring(tempr.length()).trim(); if (tempr.equalsIgnoreCase("flow")) { FlowLayout flw = new FlowLayout(); pnel.setLayout(flw); } if (tempr.equalsIgnoreCase("grid")) { if (strng.charAt(0) == '(') { tempr = strng.substring(0, strng.indexOf(')') + 1); strng = strng.substring(tempr.length()).trim(); ArrayList<Integer> instr = getIntAray(tempr); GridLayout tmpLayout; if (instr.size() == 2) { tmpLayout = new GridLayout(instr.get(0), instr.get(1)); pnel.setLayout(tmpLayout); } else if (instr.size() == 4) { tmpLayout = new GridLayout(instr.get(0), instr.get(1), instr.get(2), instr.get(3)); pnel.setLayout(tmpLayout); } } } } while (true) { if (scnr.hasNextLine()) { strng = scnr.nextLine().trim(); tempr = getLabel(strng); if (tempr.equalsIgnoreCase("end")) { break; } else { Component tmpCompnt = addCompntRec( strng.substring(tempr.length()), tempr); if (tmpCompnt != null) { if (tmpCompnt.getClass() == new JFrame() .getClass()) { System.out .println("Window cant be nested inside"); } else { pnel.add(tmpCompnt); } } } } else { System.out.println("Error in nesting"); break; } } return pnel; } if (lbl.equalsIgnoreCase("button")) { strng = strng.trim(); JButton button; if (strng.charAt(0) == '"') { strng = strng.substring(1); tempr = strng.substring(0, strng.indexOf('\"')); button = new JButton(tempr); strng = strng.substring(strng.indexOf('"') + 1).trim(); } else { button = new JButton("Default title"); } return button; } if (lbl.equalsIgnoreCase("lbl")) { strng = strng.trim(); JLabel Label; if (strng.charAt(0) == '"') { strng = strng.substring(1); tempr = strng.substring(0, strng.indexOf('\"')); Label = new JLabel(tempr); strng = strng.substring(strng.indexOf('"') + 1).trim(); } else { Label = new JLabel("Default title"); } return Label; } if (lbl.equalsIgnoreCase("textfield")) { strng =strng.trim(); ArrayList< Integer> li = getIntAray(strng); JTextField field = new JTextField(li.get(0)); return field; } return null; } }