001/* 002 * IzPack - Copyright 2001-2005 Julien Ponge, All Rights Reserved. 003 * 004 * http://www.izforge.com/izpack/ 005 * http://developer.berlios.de/projects/izpack/ 006 * 007 * Copyright 2003 Tino Schwarze 008 * 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 */ 021package com.izforge.izpack.panels; 022 023import java.awt.Dimension; 024import java.awt.Font; 025import java.awt.GridBagConstraints; 026import java.awt.GridBagLayout; 027import java.awt.Insets; 028import java.awt.event.ActionEvent; 029import java.awt.event.ActionListener; 030import java.io.File; 031import java.io.IOException; 032import java.util.Iterator; 033 034import javax.swing.BoxLayout; 035import javax.swing.JButton; 036import javax.swing.JComboBox; 037import javax.swing.JDialog; 038import javax.swing.JFileChooser; 039import javax.swing.JLabel; 040import javax.swing.JPanel; 041import javax.swing.JProgressBar; 042import javax.swing.JScrollPane; 043import javax.swing.JTabbedPane; 044import javax.swing.JTextArea; 045import javax.swing.SwingConstants; 046 047import net.n3.nanoxml.XMLElement; 048 049import com.izforge.izpack.gui.ButtonFactory; 050import com.izforge.izpack.gui.LabelFactory; 051import com.izforge.izpack.installer.CompileHandler; 052import com.izforge.izpack.installer.CompileResult; 053import com.izforge.izpack.installer.CompileWorker; 054import com.izforge.izpack.installer.InstallData; 055import com.izforge.izpack.installer.InstallerFrame; 056import com.izforge.izpack.installer.IzPanel; 057 058/** 059 * The compile panel class. 060 * 061 * This class allows .java files to be compiled after installation. 062 * 063 * Parts of the code have been taken from InstallPanel.java and modified a lot. 064 * 065 * @author Tino Schwarze 066 * @author Julien Ponge 067 */ 068public class CompilePanel extends IzPanel implements ActionListener, CompileHandler 069{ 070 071 /** 072 * 073 */ 074 private static final long serialVersionUID = 3258408430669674552L; 075 076 /** The combobox for compiler selection. */ 077 protected JComboBox compilerComboBox; 078 079 /** The combobox for compiler argument selection. */ 080 protected JComboBox argumentsComboBox; 081 082 /** The start button. */ 083 protected JButton startButton; 084 085 /** The browse button. */ 086 protected JButton browseButton; 087 088 /** The tip label. */ 089 protected JLabel tipLabel; 090 091 /** The operation label . */ 092 protected JLabel opLabel; 093 094 /** The pack progress bar. */ 095 protected JProgressBar packProgressBar; 096 097 /** The operation label . */ 098 protected JLabel overallLabel; 099 100 /** The overall progress bar. */ 101 protected JProgressBar overallProgressBar; 102 103 /** True if the compilation has been done. */ 104 private boolean validated = false; 105 106 /** The compilation worker. Does all the work. */ 107 private CompileWorker worker; 108 109 /** Number of jobs to compile. Used for progress indication. */ 110 private int noOfJobs; 111 112 /** 113 * The constructor. 114 * 115 * @param parent The parent window. 116 * @param idata The installation data. 117 */ 118 public CompilePanel(InstallerFrame parent, InstallData idata) throws IOException 119 { 120 super(parent, idata); 121 122 this.worker = new CompileWorker(idata, this); 123 124 GridBagConstraints gridBagConstraints; 125 126 JLabel heading = new JLabel(); 127 // put everything but the heading into it's own panel 128 // (to center it vertically) 129 JPanel subpanel = new JPanel(); 130 JLabel compilerLabel = new JLabel(); 131 compilerComboBox = new JComboBox(); 132 this.browseButton = ButtonFactory.createButton(parent.langpack 133 .getString("CompilePanel.browse"), idata.buttonsHColor); 134 JLabel argumentsLabel = new JLabel(); 135 this.argumentsComboBox = new JComboBox(); 136 this.startButton = ButtonFactory.createButton(parent.langpack 137 .getString("CompilePanel.start"), idata.buttonsHColor); 138 this.tipLabel = LabelFactory.create(parent.langpack.getString("CompilePanel.tip"), 139 parent.icons.getImageIcon("tip"), SwingConstants.TRAILING); 140 this.opLabel = new JLabel(); 141 packProgressBar = new JProgressBar(); 142 this.overallLabel = new JLabel(); 143 this.overallProgressBar = new JProgressBar(); 144 145 setLayout(new GridBagLayout()); 146 147 Font font = heading.getFont(); 148 font = font.deriveFont(Font.BOLD, font.getSize() * 2.0f); 149 heading.setFont(font); 150 heading.setHorizontalAlignment(SwingConstants.CENTER); 151 heading.setText(parent.langpack.getString("CompilePanel.heading")); 152 heading.setVerticalAlignment(SwingConstants.TOP); 153 gridBagConstraints = new GridBagConstraints(); 154 gridBagConstraints.gridy = 0; 155 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 156 gridBagConstraints.anchor = GridBagConstraints.NORTH; 157 gridBagConstraints.weightx = 1.0; 158 gridBagConstraints.weighty = 0.1; 159 add(heading, gridBagConstraints); 160 161 gridBagConstraints = new GridBagConstraints(); 162 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 163 gridBagConstraints.anchor = GridBagConstraints.CENTER; 164 gridBagConstraints.gridy = 1; 165 gridBagConstraints.weightx = 1.0; 166 gridBagConstraints.weighty = 0.9; 167 add(subpanel, gridBagConstraints); 168 169 subpanel.setLayout(new GridBagLayout()); 170 171 int row = 0; 172 173 compilerLabel.setHorizontalAlignment(SwingConstants.LEFT); 174 compilerLabel.setLabelFor(compilerComboBox); 175 compilerLabel.setText(parent.langpack.getString("CompilePanel.choose_compiler")); 176 gridBagConstraints = new GridBagConstraints(); 177 gridBagConstraints.gridy = row; 178 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 179 // gridBagConstraints.weighty = 0.1; 180 subpanel.add(compilerLabel, gridBagConstraints); 181 182 compilerComboBox.setEditable(true); 183 gridBagConstraints = new GridBagConstraints(); 184 gridBagConstraints.gridy = row++; 185 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 186 // gridBagConstraints.weighty = 0.1; 187 188 Iterator it = this.worker.getAvailableCompilers().iterator(); 189 190 while (it.hasNext()) 191 compilerComboBox.addItem((String) it.next()); 192 193 subpanel.add(compilerComboBox, gridBagConstraints); 194 195 gridBagConstraints = new GridBagConstraints(); 196 gridBagConstraints.gridy = row++; 197 gridBagConstraints.gridx = 1; 198 gridBagConstraints.anchor = GridBagConstraints.EAST; 199 browseButton.addActionListener(this); 200 subpanel.add(browseButton, gridBagConstraints); 201 202 argumentsLabel.setHorizontalAlignment(SwingConstants.LEFT); 203 argumentsLabel.setLabelFor(argumentsComboBox); 204 argumentsLabel.setText(parent.langpack.getString("CompilePanel.additional_arguments")); 205 // argumentsLabel.setToolTipText(""); 206 gridBagConstraints = new GridBagConstraints(); 207 gridBagConstraints.gridy = row; 208 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 209 gridBagConstraints.weightx = 0.5; 210 // gridBagConstraints.weighty = 0.1; 211 subpanel.add(argumentsLabel, gridBagConstraints); 212 213 argumentsComboBox.setEditable(true); 214 gridBagConstraints = new GridBagConstraints(); 215 gridBagConstraints.gridy = row++; 216 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 217 gridBagConstraints.weightx = 0.5; 218 // gridBagConstraints.weighty = 0.1; 219 220 it = this.worker.getAvailableArguments().iterator(); 221 222 while (it.hasNext()) 223 argumentsComboBox.addItem((String) it.next()); 224 225 subpanel.add(argumentsComboBox, gridBagConstraints); 226 227 // leave some space above the label 228 gridBagConstraints.insets = new Insets(10, 0, 0, 0); 229 gridBagConstraints = new GridBagConstraints(); 230 gridBagConstraints.gridy = row++; 231 gridBagConstraints.gridwidth = 2; 232 gridBagConstraints.fill = GridBagConstraints.NONE; 233 gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; 234 subpanel.add(tipLabel, gridBagConstraints); 235 236 opLabel.setText(" "); 237 gridBagConstraints = new GridBagConstraints(); 238 gridBagConstraints.gridy = row++; 239 gridBagConstraints.gridwidth = 2; 240 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 241 subpanel.add(opLabel, gridBagConstraints); 242 243 packProgressBar.setValue(0); 244 packProgressBar.setString(parent.langpack.getString("CompilePanel.progress.initial")); 245 packProgressBar.setStringPainted(true); 246 gridBagConstraints = new GridBagConstraints(); 247 gridBagConstraints.gridy = row++; 248 gridBagConstraints.gridwidth = 2; 249 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 250 gridBagConstraints.anchor = GridBagConstraints.SOUTH; 251 subpanel.add(packProgressBar, gridBagConstraints); 252 253 overallLabel.setText(parent.langpack.getString("CompilePanel.progress.overall")); 254 gridBagConstraints = new GridBagConstraints(); 255 gridBagConstraints.gridy = row++; 256 gridBagConstraints.gridwidth = 2; 257 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 258 subpanel.add(overallLabel, gridBagConstraints); 259 260 overallProgressBar.setValue(0); 261 overallProgressBar.setString(""); 262 overallProgressBar.setStringPainted(true); 263 gridBagConstraints = new GridBagConstraints(); 264 gridBagConstraints.gridy = row++; 265 gridBagConstraints.gridwidth = 2; 266 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 267 gridBagConstraints.anchor = GridBagConstraints.SOUTH; 268 subpanel.add(overallProgressBar, gridBagConstraints); 269 270 startButton.setText(parent.langpack.getString("CompilePanel.start")); 271 startButton.addActionListener(this); 272 gridBagConstraints = new GridBagConstraints(); 273 gridBagConstraints.gridx = 0; 274 gridBagConstraints.gridwidth = 2; 275 gridBagConstraints.gridy = row++; 276 gridBagConstraints.fill = GridBagConstraints.NONE; 277 // leave some space above the button 278 gridBagConstraints.insets = new Insets(5, 0, 0, 0); 279 subpanel.add(startButton, gridBagConstraints); 280 } 281 282 /** 283 * Indicates wether the panel has been validated or not. 284 * 285 * @return The validation state. 286 */ 287 public boolean isValidated() 288 { 289 return validated; 290 } 291 292 /** 293 * Action function, called when the start button is pressed. 294 */ 295 public void actionPerformed(ActionEvent e) 296 { 297 if (e.getSource() == this.startButton) 298 { 299 this.worker.setCompiler((String) this.compilerComboBox.getSelectedItem()); 300 301 this.worker.setCompilerArguments((String) this.argumentsComboBox.getSelectedItem()); 302 303 this.blockGUI(); 304 this.worker.startThread(); 305 } 306 else if (e.getSource() == this.browseButton) 307 { 308 this.parent.blockGUI(); 309 JFileChooser chooser = new JFileChooser(); 310 chooser.setCurrentDirectory(new File((String) this.compilerComboBox.getSelectedItem()) 311 .getParentFile()); 312 int result = chooser.showDialog(this.parent, this.parent.langpack 313 .getString("CompilePanel.browse.approve")); 314 if (result == JFileChooser.APPROVE_OPTION) 315 { 316 File file_chosen = chooser.getSelectedFile(); 317 318 if (file_chosen.isFile()) 319 { 320 this.compilerComboBox.setSelectedItem(file_chosen.getAbsolutePath()); 321 } 322 323 } 324 325 this.parent.releaseGUI(); 326 } 327 328 } 329 330 /** 331 * Block the GUI - disalow input. 332 */ 333 protected void blockGUI() 334 { 335 // disable all controls 336 this.startButton.setEnabled(false); 337 this.browseButton.setEnabled(false); 338 this.compilerComboBox.setEnabled(false); 339 this.argumentsComboBox.setEnabled(false); 340 341 this.parent.blockGUI(); 342 } 343 344 /** 345 * Release the GUI - allow input. 346 * 347 * @param allowconfig allow the user to enter new configuration 348 */ 349 protected void releaseGUI(boolean allowconfig) 350 { 351 // disable all controls 352 if (allowconfig) 353 { 354 this.startButton.setEnabled(true); 355 this.browseButton.setEnabled(true); 356 this.compilerComboBox.setEnabled(true); 357 this.argumentsComboBox.setEnabled(true); 358 } 359 360 this.parent.releaseGUI(); 361 } 362 363 /** 364 * An error was encountered. 365 * 366 * @param error The error information. 367 * @see com.izforge.izpack.installer.CompileHandler 368 */ 369 public void handleCompileError(CompileResult error) 370 { 371 String message = error.getMessage(); 372 opLabel.setText(message); 373 CompilerErrorDialog dialog = new CompilerErrorDialog(parent, message, idata.buttonsHColor); 374 dialog.show(error); 375 376 if (dialog.getResult() == CompilerErrorDialog.RESULT_IGNORE) 377 { 378 error.setAction(CompileResult.ACTION_CONTINUE); 379 } 380 else if (dialog.getResult() == CompilerErrorDialog.RESULT_RECONFIGURE) 381 { 382 error.setAction(CompileResult.ACTION_RECONFIGURE); 383 } 384 else 385 // default case: abort 386 { 387 error.setAction(CompileResult.ACTION_ABORT); 388 } 389 390 } 391 392 /** The compiler starts. */ 393 public void startAction(String name, int noOfJobs) 394 { 395 this.noOfJobs = noOfJobs; 396 overallProgressBar.setMaximum(noOfJobs); 397 parent.lockPrevButton(); 398 } 399 400 /** The compiler stops. */ 401 public void stopAction() 402 { 403 CompileResult result = this.worker.getResult(); 404 405 this.releaseGUI(result.isReconfigure()); 406 407 if (result.isContinue()) 408 { 409 parent.lockPrevButton(); 410 411 packProgressBar.setString(parent.langpack.getString("CompilePanel.progress.finished")); 412 packProgressBar.setEnabled(false); 413 packProgressBar.setValue(packProgressBar.getMaximum()); 414 415 overallProgressBar.setValue(this.noOfJobs); 416 String no_of_jobs = Integer.toString(this.noOfJobs); 417 overallProgressBar.setString(no_of_jobs + " / " + no_of_jobs); 418 overallProgressBar.setEnabled(false); 419 420 opLabel.setText(" "); 421 opLabel.setEnabled(false); 422 423 validated = true; 424 idata.installSuccess = true; 425 if (idata.panels.indexOf(this) != (idata.panels.size() - 1)) parent.unlockNextButton(); 426 } 427 else 428 { 429 idata.installSuccess = false; 430 } 431 432 } 433 434 /** 435 * Normal progress indicator. 436 * 437 * @param val The progression value. 438 * @param msg The progression message. 439 */ 440 public void progress(int val, String msg) 441 { 442 // Debug.trace ("progress: " + val + " " + msg); 443 packProgressBar.setValue(val + 1); 444 opLabel.setText(msg); 445 } 446 447 /** 448 * Job changing. 449 * 450 * @param jobName The job name. 451 * @param max The new maximum progress. 452 * @param jobNo The job number. 453 */ 454 public void nextStep(String jobName, int max, int jobNo) 455 { 456 packProgressBar.setValue(0); 457 packProgressBar.setMaximum(max); 458 packProgressBar.setString(jobName); 459 460 opLabel.setText(""); 461 462 overallProgressBar.setValue(jobNo); 463 overallProgressBar.setString(Integer.toString(jobNo) + " / " 464 + Integer.toString(this.noOfJobs)); 465 } 466 467 /** Called when the panel becomes active. */ 468 public void panelActivate() 469 { 470 // get compilers again (because they might contain variables from former 471 // panels) 472 Iterator it = this.worker.getAvailableCompilers().iterator(); 473 474 compilerComboBox.removeAllItems(); 475 476 while (it.hasNext()) 477 compilerComboBox.addItem((String) it.next()); 478 479 // We clip the panel 480 Dimension dim = parent.getPanelsContainerSize(); 481 dim.width = dim.width - (dim.width / 4); 482 dim.height = 150; 483 setMinimumSize(dim); 484 setMaximumSize(dim); 485 setPreferredSize(dim); 486 487 parent.lockNextButton(); 488 } 489 490 /** Create XML data for automated installation. */ 491 public void makeXMLData(XMLElement panelRoot) 492 { 493 // just save the compiler chosen and the arguments 494 XMLElement compiler = new XMLElement("compiler"); 495 compiler.setContent(this.worker.getCompiler()); 496 panelRoot.addChild(compiler); 497 498 XMLElement args = new XMLElement("arguments"); 499 args.setContent(this.worker.getCompilerArguments()); 500 panelRoot.addChild(args); 501 } 502 503 /** 504 * Show a special dialog for compiler errors. 505 * 506 * This dialog is neccessary because we have lots of information if compilation failed. We'd 507 * also like the user to chose whether to ignore the error or not. 508 */ 509 protected class CompilerErrorDialog extends JDialog implements ActionListener 510 { 511 512 private static final long serialVersionUID = 3762537797721995317L; 513 514 /** user closed the dialog without pressing "Ignore" or "Abort" */ 515 public static final int RESULT_NONE = 0; 516 517 /** user pressed "Ignore" button */ 518 public static final int RESULT_IGNORE = 23; 519 520 /** user pressed "Abort" button */ 521 public static final int RESULT_ABORT = 42; 522 523 /** user pressed "Reconfigure" button */ 524 public static final int RESULT_RECONFIGURE = 47; 525 526 /** visual goodie: button hightlight color */ 527 private java.awt.Color buttonHColor = null; 528 529 /** Creates new form compilerErrorDialog */ 530 public CompilerErrorDialog(java.awt.Frame parent, String title, java.awt.Color buttonHColor) 531 { 532 super(parent, title, true); 533 this.buttonHColor = buttonHColor; 534 initComponents(); 535 } 536 537 /** 538 * This method is called from within the constructor to initialize the form. 539 * 540 * Generated with help from NetBeans IDE. 541 */ 542 private void initComponents() 543 { 544 JPanel errorMessagePane = new JPanel(); 545 errorMessageText = new JTextArea(); 546 JTextArea seeBelowText = new JTextArea(); 547 JTabbedPane errorDisplayPane = new JTabbedPane(); 548 JScrollPane commandScrollPane = new JScrollPane(); 549 commandText = new JTextArea(); 550 JScrollPane stdOutScrollPane = new JScrollPane(); 551 stdOutText = new JTextArea(); 552 JScrollPane stdErrScrollPane = new JScrollPane(); 553 stdErrText = new JTextArea(); 554 JPanel buttonsPanel = new JPanel(); 555 reconfigButton = ButtonFactory.createButton(parent.langpack 556 .getString("CompilePanel.error.reconfigure"), this.buttonHColor); 557 ignoreButton = ButtonFactory.createButton(parent.langpack 558 .getString("CompilePanel.error.ignore"), this.buttonHColor); 559 abortButton = ButtonFactory.createButton(parent.langpack 560 .getString("CompilePanel.error.abort"), this.buttonHColor); 561 562 addWindowListener(new java.awt.event.WindowAdapter() { 563 564 public void windowClosing(java.awt.event.WindowEvent evt) 565 { 566 closeDialog(evt); 567 } 568 }); 569 570 errorMessagePane.setLayout(new BoxLayout(errorMessagePane, BoxLayout.Y_AXIS)); 571 errorMessageText.setBackground(super.getBackground()); 572 errorMessageText.setEditable(false); 573 errorMessageText.setLineWrap(true); 574 // errorMessageText.setText("The compiler does not seem to work. See 575 // below for the command we tried to execute and the results."); 576 // errorMessageText.setToolTipText("null"); 577 errorMessageText.setWrapStyleWord(true); 578 errorMessagePane.add(errorMessageText); 579 580 seeBelowText.setBackground(super.getBackground()); 581 seeBelowText.setEditable(false); 582 seeBelowText.setLineWrap(true); 583 seeBelowText.setWrapStyleWord(true); 584 seeBelowText.setText(parent.langpack.getString("CompilePanel.error.seebelow")); 585 errorMessagePane.add(seeBelowText); 586 587 getContentPane().add(errorMessagePane, java.awt.BorderLayout.NORTH); 588 589 // use 12pt monospace font for compiler output etc. 590 Font output_font = new Font("Monospaced", Font.PLAIN, 12); 591 592 // errorDisplayPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); 593 // errorDisplayPane.setName("null"); 594 commandText.setFont(output_font); 595 commandText.setEditable(false); 596 commandText.setRows(10); 597 commandText.setColumns(82); 598 commandText.setWrapStyleWord(true); 599 commandText.setLineWrap(true); 600 // commandText.setText("akjfkajfeafjakefjakfkaejfja"); 601 commandScrollPane.setViewportView(commandText); 602 603 errorDisplayPane.addTab("Command", commandScrollPane); 604 605 stdOutText.setFont(output_font); 606 stdOutText.setEditable(false); 607 stdOutText.setWrapStyleWord(true); 608 stdOutText.setLineWrap(true); 609 stdOutScrollPane.setViewportView(stdOutText); 610 611 errorDisplayPane.addTab("Standard Output", null, stdOutScrollPane); 612 613 stdErrText.setFont(output_font); 614 stdErrText.setEditable(false); 615 stdErrText.setWrapStyleWord(true); 616 stdErrText.setLineWrap(true); 617 stdErrScrollPane.setViewportView(stdErrText); 618 619 errorDisplayPane.addTab("Standard Error", null, stdErrScrollPane); 620 621 getContentPane().add(errorDisplayPane, java.awt.BorderLayout.CENTER); 622 623 buttonsPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT)); 624 625 reconfigButton.addActionListener(this); 626 buttonsPanel.add(reconfigButton); 627 628 ignoreButton.addActionListener(this); 629 buttonsPanel.add(ignoreButton); 630 631 abortButton.addActionListener(this); 632 buttonsPanel.add(abortButton); 633 634 getContentPane().add(buttonsPanel, java.awt.BorderLayout.SOUTH); 635 636 pack(); 637 } 638 639 /** Closes the dialog */ 640 protected void closeDialog(java.awt.event.WindowEvent evt) 641 { 642 setVisible(false); 643 dispose(); 644 } 645 646 public void show(CompileResult error) 647 { 648 this.errorMessageText.setText(error.getMessage()); 649 this.commandText.setText(error.getCmdline()); 650 this.stdOutText.setText(error.getStdout()); 651 this.stdErrText.setText(error.getStderr()); 652 super.setVisible(true); 653 } 654 655 public int getResult() 656 { 657 return this.result; 658 } 659 660 public void actionPerformed(ActionEvent e) 661 { 662 boolean closenow = false; 663 664 if (e.getSource() == this.ignoreButton) 665 { 666 this.result = RESULT_IGNORE; 667 closenow = true; 668 } 669 else if (e.getSource() == this.abortButton) 670 { 671 this.result = RESULT_ABORT; 672 closenow = true; 673 } 674 else if (e.getSource() == this.reconfigButton) 675 { 676 this.result = RESULT_RECONFIGURE; 677 closenow = true; 678 } 679 680 if (closenow) 681 { 682 this.setVisible(false); 683 this.dispose(); 684 } 685 686 } 687 688 // Variables declaration - do not modify//GEN-BEGIN:variables 689 private JTextArea commandText; 690 691 // private JScrollPane stdOutScrollPane; 692 private JTextArea stdErrText; 693 694 // private JPanel buttonsPanel; 695 // private JScrollPane commandScrollPane; 696 private JTextArea errorMessageText; 697 698 // private JScrollPane stdErrScrollPane; 699 private JButton ignoreButton; 700 701 private JTextArea stdOutText; 702 703 private JButton abortButton; 704 705 private JButton reconfigButton; 706 707 // private JTabbedPane errorDisplayPane; 708 // End of variables declaration//GEN-END:variables 709 710 private int result = RESULT_NONE; 711 } 712}