Java tutorial
/* * Copyright 2009 Max Ishchenko * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.ishchenko.idea.nginx.run; import com.intellij.openapi.ui.MultiLineLabelUI; import com.intellij.openapi.util.IconLoader; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import net.ishchenko.idea.nginx.NginxBundle; import net.ishchenko.idea.nginx.configurator.NginxServerDescriptor; import javax.swing.*; import javax.swing.plaf.basic.BasicComboBoxRenderer; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ResourceBundle; /** * Created by IntelliJ IDEA. * User: Max * Date: 29.07.2009 * Time: 18:00:55 */ public class NginxRunSettingsForm { JComboBox serverCombo; JTextField executableField; JTextField configurationField; JButton configureButton; JPanel panel; JTextField globalsField; JTextField pidField; JCheckBox showHttpLogCheckBox; JTextField httpLogPathField; JCheckBox showErrorLogCheckBox; JTextField errorLogPathField; private JLabel explanationLabel; public NginxRunSettingsForm(final NginxRunSettingsEditor.Mediator mediator) { mediator.form = this; $$$setupUI$$$(); serverCombo.setRenderer(new NginxServerComboboxRenderer()); serverCombo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediator.onChooseDescriptor((NginxServerDescriptor) serverCombo.getSelectedItem()); } }); configureButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediator.showServerManagerDialog(); } }); showHttpLogCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediator.onHttpLogCheckboxAction(); } }); showErrorLogCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediator.onErrorLogCheckboxAction(); } }); } public JPanel getPanel() { return panel; } private void createUIComponents() { explanationLabel = new JLabel(NginxBundle.message("run.layoutExplanation")); explanationLabel.setUI(new MultiLineLabelUI()); } /** * Method generated by IntelliJ IDEA GUI Designer * >>> IMPORTANT!! <<< * DO NOT edit this method OR call it in your code! * * @noinspection ALL */ private void $$$setupUI$$$() { createUIComponents(); panel = new JPanel(); panel.setLayout(new FormLayout("fill:d:grow,left:4dlu:noGrow,fill:max(d;4px):noGrow", "center:d:noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow")); serverCombo = new JComboBox(); CellConstraints cc = new CellConstraints(); panel.add(serverCombo, cc.xy(1, 1)); configureButton = new JButton(); this.$$$loadButtonText$$$(configureButton, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.configureButton")); panel.add(configureButton, cc.xy(3, 1)); final JPanel panel1 = new JPanel(); panel1.setLayout(new FormLayout("fill:max(d;4px):noGrow,left:4dlu:noGrow,fill:d:grow", "center:d:grow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow")); panel.add(panel1, cc.xyw(1, 3, 3)); panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.serverinfo"))); final JLabel label1 = new JLabel(); this.$$$loadLabelText$$$(label1, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.executable")); panel1.add(label1, cc.xy(1, 3)); final JLabel label2 = new JLabel(); this.$$$loadLabelText$$$(label2, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.configuration")); panel1.add(label2, cc.xy(1, 5)); executableField = new JTextField(); executableField.setEditable(false); executableField.setEnabled(true); panel1.add(executableField, cc.xy(3, 3, CellConstraints.FILL, CellConstraints.DEFAULT)); configurationField = new JTextField(); configurationField.setEditable(false); configurationField.setEnabled(true); panel1.add(configurationField, cc.xy(3, 5, CellConstraints.FILL, CellConstraints.DEFAULT)); final JLabel label3 = new JLabel(); this.$$$loadLabelText$$$(label3, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.globals")); panel1.add(label3, cc.xy(1, 9)); globalsField = new JTextField(); globalsField.setEditable(false); globalsField.setEnabled(true); panel1.add(globalsField, cc.xy(3, 9, CellConstraints.FILL, CellConstraints.DEFAULT)); final JLabel label4 = new JLabel(); this.$$$loadLabelText$$$(label4, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.pidpath")); panel1.add(label4, cc.xy(1, 7)); pidField = new JTextField(); pidField.setEditable(false); pidField.setEnabled(true); panel1.add(pidField, cc.xy(3, 7, CellConstraints.FILL, CellConstraints.DEFAULT)); final JPanel panel2 = new JPanel(); panel2.setLayout(new FormLayout("fill:d:noGrow,left:4dlu:noGrow,fill:d:grow", "center:d:noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow")); panel.add(panel2, cc.xyw(1, 5, 3)); panel2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.logFiles"))); showHttpLogCheckBox = new JCheckBox(); this.$$$loadButtonText$$$(showHttpLogCheckBox, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.showAccessLog")); panel2.add(showHttpLogCheckBox, cc.xy(1, 1)); httpLogPathField = new JTextField(); httpLogPathField.setEditable(true); httpLogPathField.setEnabled(false); panel2.add(httpLogPathField, cc.xy(3, 1, CellConstraints.FILL, CellConstraints.DEFAULT)); showErrorLogCheckBox = new JCheckBox(); this.$$$loadButtonText$$$(showErrorLogCheckBox, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle").getString("run.showErrorLog")); panel2.add(showErrorLogCheckBox, cc.xy(1, 3)); errorLogPathField = new JTextField(); errorLogPathField.setEditable(true); errorLogPathField.setEnabled(false); panel2.add(errorLogPathField, cc.xy(3, 3, CellConstraints.FILL, CellConstraints.DEFAULT)); this.$$$loadLabelText$$$(explanationLabel, ResourceBundle.getBundle("net/ishchenko/idea/nginx/NginxBundle") .getString("run.layoutExplanation")); panel2.add(explanationLabel, cc.xyw(1, 5, 3)); } /** * @noinspection ALL */ private void $$$loadLabelText$$$(JLabel component, String text) { StringBuffer result = new StringBuffer(); boolean haveMnemonic = false; char mnemonic = '\0'; int mnemonicIndex = -1; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == '&') { i++; if (i == text.length()) break; if (!haveMnemonic && text.charAt(i) != '&') { haveMnemonic = true; mnemonic = text.charAt(i); mnemonicIndex = result.length(); } } result.append(text.charAt(i)); } component.setText(result.toString()); if (haveMnemonic) { component.setDisplayedMnemonic(mnemonic); component.setDisplayedMnemonicIndex(mnemonicIndex); } } /** * @noinspection ALL */ private void $$$loadButtonText$$$(AbstractButton component, String text) { StringBuffer result = new StringBuffer(); boolean haveMnemonic = false; char mnemonic = '\0'; int mnemonicIndex = -1; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == '&') { i++; if (i == text.length()) break; if (!haveMnemonic && text.charAt(i) != '&') { haveMnemonic = true; mnemonic = text.charAt(i); mnemonicIndex = result.length(); } } result.append(text.charAt(i)); } component.setText(result.toString()); if (haveMnemonic) { component.setMnemonic(mnemonic); component.setDisplayedMnemonicIndex(mnemonicIndex); } } /** * @noinspection ALL */ public JComponent $$$getRootComponent$$$() { return panel; } private static class NginxServerComboboxRenderer extends BasicComboBoxRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { BasicComboBoxRenderer result = (BasicComboBoxRenderer) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value != null) { result.setIcon(IconLoader.getIcon("/nginx.png")); result.setText(((NginxServerDescriptor) value).getName()); } return result; } } }