package org.rzo.yajsw.tray; import java.awt.BorderLayout; import java.awt.Color; import java.awt.ComponentOrientation; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import com.jeta.forms.components.border.TitledBorderBottom; import com.jeta.forms.components.border.TitledBorderLabel; import com.jeta.forms.components.border.TitledBorderSide; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; public class ConsoleForm extends JPanel { JTextArea _output = new JTextArea(); JTextField _input = new JTextField(); JButton _START_BUTTON = new JButton(); JButton _STOP_BUTTON = new JButton(); JButton _RESTART_BUTTON = new JButton(); JButton _EXIT_WRAPPER_BUTTON = new JButton(); JButton _THREAD_DUMP_BUTTON = new JButton(); JLabel _appStopTime = new JLabel(); JLabel _state = new JLabel(); JLabel _wStartTime = new JLabel(); JLabel _trigger = new JLabel(); JButton _STOP_TIMER_BUTTON = new JButton(); JLabel _appPid = new JLabel(); JLabel _appStartTime = new JLabel(); JLabel _wPid = new JLabel(); TitledBorderLabel _titledborderlabel1 = new TitledBorderLabel(); TitledBorderSide _titledborderside1 = new TitledBorderSide(); TitledBorderSide _titledborderside2 = new TitledBorderSide(); TitledBorderBottom _titledborderbottom1 = new TitledBorderBottom(); TitledBorderLabel _titledborderlabel2 = new TitledBorderLabel(); TitledBorderSide _titledborderside3 = new TitledBorderSide(); TitledBorderSide _titledborderside4 = new TitledBorderSide(); TitledBorderBottom _titledborderbottom2 = new TitledBorderBottom(); JButton _jbutton1 = new JButton(); JLabel _timer = new JLabel(); JLabel _condition = new JLabel(); JLabel _wrapperType = new JLabel(); JLabel _cpu = new JLabel(); JLabel _memory = new JLabel(); JLabel _handles = new JLabel(); JLabel _threads = new JLabel(); JLabel _count = new JLabel(); JLabel _exitCode = new JLabel(); JButton _THREAD_DUMP_WRAPPER_BUTTON = new JButton(); JButton _EXIT_TRAY_ICON_BUTTON = new JButton(); JButton _START_OUTPUT_BUTTON = new JButton(); JButton _PAUSE_OUTPUT_BUTTON = new JButton(); JTextField __OUTPUT_FILTER = new JTextField(); JButton _CLEAR_OUTPUT_BUTTON = new JButton(); /** * Default constructor */ public ConsoleForm() { initializePanel(); } /** * Main method for panel */ public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(600, 400); frame.setLocation(100, 100); frame.getContentPane().add(new ConsoleForm()); frame.setVisible(true); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); } /** * Adds fill components to empty cells in the first row and first column of * the grid. This ensures that the grid spacing will be the same as shown in * the designer. * * @param cols * an array of column indices in the first row where fill * components should be added. * @param rows * an array of row indices in the first column where fill * components should be added. */ void addFillComponents(Container panel, int[] cols, int[] rows) { Dimension filler = new Dimension(10, 10); boolean filled_cell_11 = false; CellConstraints cc = new CellConstraints(); if (cols.length > 0 && rows.length > 0) { if (cols[0] == 1 && rows[0] == 1) { /** add a rigid area */ panel.add(Box.createRigidArea(filler), cc.xy(1, 1)); filled_cell_11 = true; } } for (int index = 0; index < cols.length; index++) { if (cols[index] == 1 && filled_cell_11) { continue; } panel.add(Box.createRigidArea(filler), cc.xy(cols[index], 1)); } for (int index = 0; index < rows.length; index++) { if (rows[index] == 1 && filled_cell_11) { continue; } panel.add(Box.createRigidArea(filler), cc.xy(1, rows[index])); } } /** * Helper method to load an image file from the CLASSPATH * * @param imageName * the package and name of the file to load relative to the * CLASSPATH * @return an ImageIcon instance with the specified image file * @throws IllegalArgumentException * if the image resource cannot be loaded. */ public ImageIcon loadImage(String imageName) { try { ClassLoader classloader = getClass().getClassLoader(); java.net.URL url = classloader.getResource(imageName); if (url != null) { ImageIcon icon = new ImageIcon(url); return icon; } } catch (Exception e) { e.printStackTrace(); } throw new IllegalArgumentException("Unable to load image: " + imageName); } /** * Method for recalculating the component orientation for right-to-left * Locales. * * @param orientation * the component orientation to be applied */ public void applyComponentOrientation(ComponentOrientation orientation) { // Not yet implemented... // I18NUtils.applyComponentOrientation(this, orientation); super.applyComponentOrientation(orientation); } public JPanel createPanel() { JPanel jpanel1 = new JPanel(); FormLayout formlayout1 = new FormLayout( "FILL:4DLU:NONE,FILL:4DLU:NONE,FILL:4DLU:NONE,LEFT:100PX:NONE,FILL:4DLU:NONE,RIGHT:100PX:NONE,FILL:4DLU:NONE,LEFT:100PX:NONE,FILL:4DLU:NONE,LEFT:100PX:NONE,FILL:4DLU:NONE,LEFT:100PX:NONE,FILL:4DLU:NONE,FILL:4DLU:NONE,FILL:4DLU:NONE,RIGHT:100PX:NONE,FILL:4DLU:NONE,FILL:100PX:NONE,FILL:4DLU:NONE,FILL:100PX:NONE,FILL:4DLU:NONE", "CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:238PX:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:14DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE"); CellConstraints cc = new CellConstraints(); jpanel1.setLayout(formlayout1); JLabel jlabel1 = new JLabel(); jlabel1.setBackground(new Color(204, 204, 204)); jlabel1.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel1.setOpaque(true); jlabel1.setText("Output"); jpanel1.add(jlabel1, new CellConstraints(4, 2, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _output.setName("output"); JScrollPane jscrollpane1 = new JScrollPane(); jscrollpane1.setViewportView(_output); jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jpanel1.add(jscrollpane1, cc.xywh(4, 4, 17, 1)); JLabel jlabel2 = new JLabel(); jlabel2.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel2.setText("Input (CR terminated)"); jpanel1.add(jlabel2, cc.xy(4, 6)); JLabel jlabel3 = new JLabel(); jlabel3.setBackground(new Color(204, 204, 204)); jlabel3.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel3.setOpaque(true); jlabel3.setText("State "); jlabel3.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel3, new CellConstraints(4, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _input.setName("input"); jpanel1.add(_input, cc.xywh(6, 6, 15, 1)); _START_BUTTON.setActionCommand("Start"); _START_BUTTON.setName("START_BUTTON"); _START_BUTTON.setToolTipText("Start"); jpanel1.add(_START_BUTTON, cc.xy(4, 17)); _STOP_BUTTON.setActionCommand("Stop"); _STOP_BUTTON.setName("STOP_BUTTON"); _STOP_BUTTON.setToolTipText("Stop"); jpanel1.add(_STOP_BUTTON, cc.xy(6, 17)); _RESTART_BUTTON.setActionCommand("Restart"); _RESTART_BUTTON.setName("RESTART_BUTTON"); _RESTART_BUTTON.setToolTipText("Restart"); jpanel1.add(_RESTART_BUTTON, cc.xy(8, 17)); _EXIT_WRAPPER_BUTTON.setActionCommand("Exit"); _EXIT_WRAPPER_BUTTON.setName("EXIT_WRAPPER_BUTTON"); _EXIT_WRAPPER_BUTTON.setToolTipText("Stop Wrapper"); jpanel1.add(_EXIT_WRAPPER_BUTTON, new CellConstraints(20, 17, 1, 1, CellConstraints.RIGHT, CellConstraints.DEFAULT)); _THREAD_DUMP_BUTTON.setActionCommand("Thread Dump"); _THREAD_DUMP_BUTTON.setName("THREAD_DUMP_BUTTON"); _THREAD_DUMP_BUTTON.setToolTipText("Thread Dump"); jpanel1.add(_THREAD_DUMP_BUTTON, new CellConstraints(10, 17, 1, 1, CellConstraints.LEFT, CellConstraints.DEFAULT)); _appStopTime.setName("appStopTime"); _appStopTime.setText("-"); jpanel1.add(_appStopTime, cc.xy(10, 11)); JLabel jlabel4 = new JLabel(); jlabel4.setBackground(new Color(204, 204, 204)); jlabel4.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel4.setOpaque(true); jlabel4.setText("Started"); jpanel1.add(jlabel4, new CellConstraints(8, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _state.setBackground(new Color(255, 255, 255)); _state.setName("state"); _state.setText("IDLE"); jpanel1.add(_state, cc.xy(4, 11)); JLabel jlabel5 = new JLabel(); jlabel5.setBackground(new Color(204, 204, 204)); jlabel5.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel5.setOpaque(true); jlabel5.setText("Stopped"); jpanel1.add(jlabel5, new CellConstraints(10, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _wStartTime.setName("wStartTime"); _wStartTime.setText("-"); jpanel1.add(_wStartTime, cc.xy(18, 11)); _trigger.setName("trigger"); _trigger.setText("-"); jpanel1.add(_trigger, cc.xy(20, 11)); JLabel jlabel6 = new JLabel(); jlabel6.setBackground(new Color(204, 204, 204)); jlabel6.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel6.setOpaque(true); jlabel6.setText("PID"); jpanel1.add(jlabel6, new CellConstraints(16, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); JLabel jlabel7 = new JLabel(); jlabel7.setBackground(new Color(204, 204, 204)); jlabel7.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel7.setOpaque(true); jlabel7.setText("Started"); jpanel1.add(jlabel7, new CellConstraints(18, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); JLabel jlabel8 = new JLabel(); jlabel8.setBackground(new Color(204, 204, 204)); jlabel8.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel8.setOpaque(true); jlabel8.setText("Trigger"); jpanel1.add(jlabel8, new CellConstraints(20, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _STOP_TIMER_BUTTON.setActionCommand("Stop Timer / Condition"); _STOP_TIMER_BUTTON.setName("STOP_TIMER_BUTTON"); _STOP_TIMER_BUTTON.setToolTipText("Stop Timer / Condition"); jpanel1.add(_STOP_TIMER_BUTTON, new CellConstraints(18, 17, 1, 1, CellConstraints.RIGHT, CellConstraints.DEFAULT)); _appPid.setName("appPid"); _appPid.setText("-"); jpanel1.add(_appPid, cc.xy(6, 11)); _appStartTime.setName("appStartTime"); _appStartTime.setText("-"); jpanel1.add(_appStartTime, cc.xy(8, 11)); _wPid.setName("wPid"); _wPid.setText("-"); jpanel1.add(_wPid, cc.xy(16, 11)); _titledborderlabel1.setText("Application"); jpanel1.add(_titledborderlabel1, cc.xywh(3, 8, 10, 1)); jpanel1.add(_titledborderside1, cc.xywh(2, 8, 1, 11)); _titledborderside2.setOrientation(TitledBorderSide.RIGHT); jpanel1.add(_titledborderside2, cc.xywh(13, 8, 1, 11)); jpanel1.add(_titledborderbottom1, cc.xywh(3, 18, 10, 1)); _titledborderlabel2.setText("Wrapper"); jpanel1.add(_titledborderlabel2, cc.xywh(15, 8, 6, 1)); jpanel1.add(_titledborderside3, cc.xywh(14, 8, 1, 11)); _titledborderside4.setOrientation(TitledBorderSide.RIGHT); jpanel1.add(_titledborderside4, cc.xywh(21, 8, 1, 11)); jpanel1.add(_titledborderbottom2, cc.xywh(15, 18, 6, 1)); _jbutton1.setActionCommand("Close Console"); _jbutton1.setText("Close Console"); _jbutton1.setToolTipText("Close Console The Console Window"); jpanel1.add(_jbutton1, cc.xy(20, 20)); _timer.setName("timer"); _timer.setText("-"); jpanel1.add(_timer, cc.xy(16, 15)); _condition.setName("condition"); _condition.setText("-"); jpanel1.add(_condition, cc.xy(18, 15)); _wrapperType.setName("wrapperType"); _wrapperType.setText("-"); jpanel1.add(_wrapperType, cc.xy(20, 15)); JLabel jlabel9 = new JLabel(); jlabel9.setBackground(new Color(204, 204, 204)); jlabel9.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel9.setOpaque(true); jlabel9.setText("PID"); jlabel9.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel9, new CellConstraints(6, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); JLabel jlabel10 = new JLabel(); jlabel10.setBackground(new Color(204, 204, 204)); jlabel10.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel10.setOpaque(true); jlabel10.setText("Timer"); jlabel10.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel10, new CellConstraints(16, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); JLabel jlabel11 = new JLabel(); jlabel11.setBackground(new Color(204, 204, 204)); jlabel11.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel11.setOpaque(true); jlabel11.setText("Condition"); jlabel11.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel11, new CellConstraints(18, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); JLabel jlabel12 = new JLabel(); jlabel12.setBackground(new Color(204, 204, 204)); jlabel12.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel12.setOpaque(true); jlabel12.setText("Type"); jlabel12.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel12, new CellConstraints(20, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); JLabel jlabel13 = new JLabel(); jlabel13.setBackground(new Color(204, 204, 204)); jlabel13.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel13.setOpaque(true); jlabel13.setText("CPU"); jlabel13.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel13, new CellConstraints(4, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _cpu.setName("cpu"); _cpu.setText("-"); jpanel1.add(_cpu, cc.xy(4, 15)); JLabel jlabel14 = new JLabel(); jlabel14.setBackground(new Color(204, 204, 204)); jlabel14.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel14.setOpaque(true); jlabel14.setText("Memory"); jlabel14.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel14, new CellConstraints(6, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _memory.setName("memory"); _memory.setText("-"); jpanel1.add(_memory, cc.xy(6, 15)); JLabel jlabel15 = new JLabel(); jlabel15.setBackground(new Color(204, 204, 204)); jlabel15.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel15.setOpaque(true); jlabel15.setText("Handles"); jlabel15.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel15, new CellConstraints(8, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _handles.setName("handles"); _handles.setText("-"); jpanel1.add(_handles, cc.xy(8, 15)); JLabel jlabel16 = new JLabel(); jlabel16.setBackground(new Color(204, 204, 204)); jlabel16.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel16.setOpaque(true); jlabel16.setText("Threads"); jlabel16.setHorizontalAlignment(JLabel.LEFT); jpanel1.add(jlabel16, new CellConstraints(10, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _threads.setName("threads"); _threads.setText("-"); jpanel1.add(_threads, cc.xy(10, 15)); _count.setName("count"); _count.setText("-"); jpanel1.add(_count, cc.xy(12, 15)); JLabel jlabel17 = new JLabel(); jlabel17.setBackground(new Color(204, 204, 204)); jlabel17.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel17.setOpaque(true); jlabel17.setText("Restarts"); jpanel1.add(jlabel17, new CellConstraints(12, 13, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); JLabel jlabel18 = new JLabel(); jlabel18.setBackground(new Color(204, 204, 204)); jlabel18.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel18.setOpaque(true); jlabel18.setText("Exit Code"); jpanel1.add(jlabel18, new CellConstraints(12, 9, 1, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); _exitCode.setName("exitCode"); _exitCode.setText("-"); jpanel1.add(_exitCode, cc.xy(12, 11)); _THREAD_DUMP_WRAPPER_BUTTON.setActionCommand("Exit"); _THREAD_DUMP_WRAPPER_BUTTON.setName("THREAD_DUMP_WRAPPER_BUTTON"); _THREAD_DUMP_WRAPPER_BUTTON.setToolTipText("Thread Dump Wrapper"); jpanel1.add(_THREAD_DUMP_WRAPPER_BUTTON, new CellConstraints(16, 17, 1, 1, CellConstraints.RIGHT, CellConstraints.DEFAULT)); _EXIT_TRAY_ICON_BUTTON.setActionCommand("Exit"); _EXIT_TRAY_ICON_BUTTON.setName("EXIT_TRAY_ICON_BUTTON"); _EXIT_TRAY_ICON_BUTTON.setToolTipText("Exit Tray Icon"); jpanel1.add(_EXIT_TRAY_ICON_BUTTON, new CellConstraints(18, 20, 1, 1, CellConstraints.RIGHT, CellConstraints.DEFAULT)); _START_OUTPUT_BUTTON.setEnabled(false); _START_OUTPUT_BUTTON.setName("START_OUTPUT_BUTTON"); _START_OUTPUT_BUTTON.setToolTipText("Start Console Output"); jpanel1.add(_START_OUTPUT_BUTTON, cc.xy(6, 2)); _PAUSE_OUTPUT_BUTTON.setName("PAUSE_OUTPUT_BUTTON"); _PAUSE_OUTPUT_BUTTON.setToolTipText("Pause Console Output"); jpanel1.add(_PAUSE_OUTPUT_BUTTON, cc.xy(8, 2)); JLabel jlabel19 = new JLabel(); jlabel19.setFont(new Font("Tahoma", Font.BOLD, 11)); jlabel19.setText("Filter"); jpanel1.add(jlabel19, cc.xy(16, 2)); __OUTPUT_FILTER.setName("_OUTPUT_FILTER"); jpanel1.add(__OUTPUT_FILTER, cc.xywh(18, 2, 3, 1)); _CLEAR_OUTPUT_BUTTON.setName("CLEAR_OUTPUT_BUTTON"); _CLEAR_OUTPUT_BUTTON.setToolTipText("Clear Output"); jpanel1.add(_CLEAR_OUTPUT_BUTTON, cc.xy(10, 2)); addFillComponents(jpanel1, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 }, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 }); return jpanel1; } /** * Initializer */ protected void initializePanel() { setLayout(new BorderLayout()); add(createPanel(), BorderLayout.CENTER); } }