| | |
| | | /* |
| | | * Copyright 2011-17 Fraunhofer ISE, energy & meteo Systems GmbH and other contributors |
| | | * |
| | | * 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 org.openmuc.openiec61850.clientgui; |
| | | |
| | | import java.awt.GridBagConstraints; |
| | | import java.awt.GridBagLayout; |
| | | import java.awt.Insets; |
| | | import java.awt.event.ActionEvent; |
| | | import java.awt.event.ActionListener; |
| | | |
| | | import javax.swing.JButton; |
| | | import javax.swing.JDialog; |
| | | import javax.swing.JLabel; |
| | | import javax.swing.JTextField; |
| | | |
| | | public class SettingsFrame extends JDialog implements ActionListener { |
| | | |
| | | private static final long serialVersionUID = -411845634137160667L; |
| | | |
| | | private int tselLocal1 = 0; |
| | | private int tselLocal2 = 0; |
| | | |
| | | private int tselRemote1 = 0; |
| | | private int tselRemote2 = 1; |
| | | |
| | | private final JTextField tselLocalField1 = new JTextField(Integer.toString(tselLocal1)); |
| | | private final JTextField tselLocalField2 = new JTextField(Integer.toString(tselLocal2)); |
| | | |
| | | private final JTextField tselRemoteField1 = new JTextField(Integer.toString(tselRemote1)); |
| | | private final JTextField tselRemoteField2 = new JTextField(Integer.toString(tselRemote2)); |
| | | |
| | | public SettingsFrame() { |
| | | setModalityType(ModalityType.APPLICATION_MODAL); |
| | | |
| | | final GridBagLayout layout = new GridBagLayout(); |
| | | setLayout(layout); |
| | | |
| | | this.setSize(200, 120); |
| | | setLocationRelativeTo(null); |
| | | |
| | | JLabel label = new JLabel("TSelLocal: "); |
| | | GridBagConstraints constraint = new GridBagConstraints(); |
| | | constraint.gridwidth = 1; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 0; |
| | | constraint.gridy = 0; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.WEST; |
| | | layout.setConstraints(label, constraint); |
| | | add(label); |
| | | |
| | | constraint = new GridBagConstraints(); |
| | | constraint.fill = GridBagConstraints.HORIZONTAL; |
| | | constraint.gridwidth = 1; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 1; |
| | | constraint.gridy = 0; |
| | | constraint.weightx = 1; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.WEST; |
| | | layout.setConstraints(tselLocalField1, constraint); |
| | | add(tselLocalField1); |
| | | |
| | | constraint = new GridBagConstraints(); |
| | | constraint.fill = GridBagConstraints.HORIZONTAL; |
| | | constraint.gridwidth = 1; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 2; |
| | | constraint.gridy = 0; |
| | | constraint.weightx = 1; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.WEST; |
| | | layout.setConstraints(tselLocalField2, constraint); |
| | | add(tselLocalField2); |
| | | |
| | | label = new JLabel("TSelRemote: "); |
| | | constraint = new GridBagConstraints(); |
| | | constraint.gridwidth = 1; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 0; |
| | | constraint.gridy = 1; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.WEST; |
| | | layout.setConstraints(label, constraint); |
| | | add(label); |
| | | |
| | | constraint = new GridBagConstraints(); |
| | | constraint.fill = GridBagConstraints.HORIZONTAL; |
| | | constraint.gridwidth = 1; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 1; |
| | | constraint.gridy = 1; |
| | | constraint.weightx = 1; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.WEST; |
| | | layout.setConstraints(tselRemoteField1, constraint); |
| | | add(tselRemoteField1); |
| | | |
| | | constraint = new GridBagConstraints(); |
| | | constraint.fill = GridBagConstraints.HORIZONTAL; |
| | | constraint.gridwidth = 1; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 2; |
| | | constraint.gridy = 1; |
| | | constraint.weightx = 1; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.WEST; |
| | | layout.setConstraints(tselRemoteField2, constraint); |
| | | add(tselRemoteField2); |
| | | |
| | | JButton button = new JButton("Cancel"); |
| | | button.setActionCommand("Cancel"); |
| | | button.addActionListener(this); |
| | | constraint.gridwidth = 1; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 0; |
| | | constraint.gridy = 2; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.SOUTHWEST; |
| | | layout.setConstraints(button, constraint); |
| | | add(button); |
| | | |
| | | button = new JButton("OK"); |
| | | button.setActionCommand("Okay"); |
| | | button.addActionListener(this); |
| | | constraint.gridwidth = 2; |
| | | constraint.gridheight = 1; |
| | | constraint.gridx = 1; |
| | | constraint.gridy = 2; |
| | | constraint.insets = new Insets(5, 5, 5, 5); |
| | | constraint.anchor = GridBagConstraints.SOUTHWEST; |
| | | layout.setConstraints(button, constraint); |
| | | add(button); |
| | | } |
| | | |
| | | @Override |
| | | public void actionPerformed(ActionEvent e) { |
| | | if ("cancel".equalsIgnoreCase(e.getActionCommand())) { |
| | | tselLocalField1.setText(Integer.toString(tselLocal1 & 0xFF)); |
| | | tselLocalField2.setText(Integer.toString(tselLocal2 & 0xFF)); |
| | | tselRemoteField1.setText(Integer.toString(tselRemote1 & 0xFF)); |
| | | tselRemoteField2.setText(Integer.toString(tselRemote2 & 0xFF)); |
| | | setVisible(false); |
| | | } |
| | | else if ("okay".equalsIgnoreCase(e.getActionCommand())) { |
| | | tselLocal1 = parseTextField(tselLocalField1, tselLocal1); |
| | | tselLocal2 = parseTextField(tselLocalField2, tselLocal2); |
| | | tselRemote1 = parseTextField(tselRemoteField1, tselRemote1); |
| | | tselRemote2 = parseTextField(tselRemoteField2, tselRemote2); |
| | | setVisible(false); |
| | | } |
| | | } |
| | | |
| | | public byte[] getTselLocal() { |
| | | return new byte[] { (byte) tselLocal1, (byte) tselLocal2 }; |
| | | } |
| | | |
| | | public byte[] getTselRemote() { |
| | | return new byte[] { (byte) tselRemote1, (byte) tselRemote2 }; |
| | | } |
| | | |
| | | public void setTselLocal(byte[] tsel) { |
| | | if (tsel.length != 2) { |
| | | throw new IllegalArgumentException("TSel must consist of 2 bytes"); |
| | | } |
| | | tselLocal1 = tsel[0]; |
| | | tselLocal2 = tsel[1]; |
| | | |
| | | tselLocalField1.setText(Integer.toString(tselLocal1 & 0xFF)); |
| | | tselLocalField2.setText(Integer.toString(tselLocal2 & 0xFF)); |
| | | } |
| | | |
| | | public void setTselRemote(byte[] tsel) { |
| | | if (tsel.length != 2) { |
| | | throw new IllegalArgumentException("TSel must consist of 2 bytes"); |
| | | } |
| | | tselRemote1 = tsel[0]; |
| | | tselRemote2 = tsel[1]; |
| | | |
| | | tselRemoteField1.setText(Integer.toString(tselRemote1 & 0xFF)); |
| | | tselRemoteField2.setText(Integer.toString(tselRemote2 & 0xFF)); |
| | | } |
| | | |
| | | private int parseTextField(JTextField field, int oldValue) { |
| | | int value = oldValue; |
| | | try { |
| | | int newValue = Integer.parseInt(field.getText()); |
| | | if (newValue >= 0 && newValue <= 255) { |
| | | value = newValue; |
| | | } |
| | | } catch (NumberFormatException e) { |
| | | return oldValue; |
| | | } |
| | | return value; |
| | | } |
| | | } |
| | | /*
|
| | | * Copyright 2011-17 Fraunhofer ISE, energy & meteo Systems GmbH and other contributors
|
| | | *
|
| | | * 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 org.openmuc.openiec61850.clientgui;
|
| | |
|
| | | import java.awt.GridBagConstraints;
|
| | | import java.awt.GridBagLayout;
|
| | | import java.awt.Insets;
|
| | | import java.awt.event.ActionEvent;
|
| | | import java.awt.event.ActionListener;
|
| | |
|
| | | import javax.swing.JButton;
|
| | | import javax.swing.JDialog;
|
| | | import javax.swing.JLabel;
|
| | | import javax.swing.JTextField;
|
| | |
|
| | | public class SettingsFrame extends JDialog implements ActionListener {
|
| | |
|
| | | private static final long serialVersionUID = -411845634137160667L;
|
| | |
|
| | | private int tselLocal1 = 0;
|
| | | private int tselLocal2 = 0;
|
| | |
|
| | | private int tselRemote1 = 0;
|
| | | private int tselRemote2 = 1;
|
| | |
|
| | | private final JTextField tselLocalField1 = new JTextField(Integer.toString(tselLocal1));
|
| | | private final JTextField tselLocalField2 = new JTextField(Integer.toString(tselLocal2));
|
| | |
|
| | | private final JTextField tselRemoteField1 = new JTextField(Integer.toString(tselRemote1));
|
| | | private final JTextField tselRemoteField2 = new JTextField(Integer.toString(tselRemote2));
|
| | |
|
| | | public SettingsFrame() {
|
| | | setModalityType(ModalityType.APPLICATION_MODAL);
|
| | |
|
| | | final GridBagLayout layout = new GridBagLayout();
|
| | | setLayout(layout);
|
| | |
|
| | | this.setSize(200, 120);
|
| | | setLocationRelativeTo(null);
|
| | |
|
| | | JLabel label = new JLabel("TSelLocal: ");
|
| | | GridBagConstraints constraint = new GridBagConstraints();
|
| | | constraint.gridwidth = 1;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 0;
|
| | | constraint.gridy = 0;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.WEST;
|
| | | layout.setConstraints(label, constraint);
|
| | | add(label);
|
| | |
|
| | | constraint = new GridBagConstraints();
|
| | | constraint.fill = GridBagConstraints.HORIZONTAL;
|
| | | constraint.gridwidth = 1;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 1;
|
| | | constraint.gridy = 0;
|
| | | constraint.weightx = 1;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.WEST;
|
| | | layout.setConstraints(tselLocalField1, constraint);
|
| | | add(tselLocalField1);
|
| | |
|
| | | constraint = new GridBagConstraints();
|
| | | constraint.fill = GridBagConstraints.HORIZONTAL;
|
| | | constraint.gridwidth = 1;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 2;
|
| | | constraint.gridy = 0;
|
| | | constraint.weightx = 1;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.WEST;
|
| | | layout.setConstraints(tselLocalField2, constraint);
|
| | | add(tselLocalField2);
|
| | |
|
| | | label = new JLabel("TSelRemote: ");
|
| | | constraint = new GridBagConstraints();
|
| | | constraint.gridwidth = 1;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 0;
|
| | | constraint.gridy = 1;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.WEST;
|
| | | layout.setConstraints(label, constraint);
|
| | | add(label);
|
| | |
|
| | | constraint = new GridBagConstraints();
|
| | | constraint.fill = GridBagConstraints.HORIZONTAL;
|
| | | constraint.gridwidth = 1;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 1;
|
| | | constraint.gridy = 1;
|
| | | constraint.weightx = 1;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.WEST;
|
| | | layout.setConstraints(tselRemoteField1, constraint);
|
| | | add(tselRemoteField1);
|
| | |
|
| | | constraint = new GridBagConstraints();
|
| | | constraint.fill = GridBagConstraints.HORIZONTAL;
|
| | | constraint.gridwidth = 1;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 2;
|
| | | constraint.gridy = 1;
|
| | | constraint.weightx = 1;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.WEST;
|
| | | layout.setConstraints(tselRemoteField2, constraint);
|
| | | add(tselRemoteField2);
|
| | |
|
| | | JButton button = new JButton("Cancel");
|
| | | button.setActionCommand("Cancel");
|
| | | button.addActionListener(this);
|
| | | constraint.gridwidth = 1;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 0;
|
| | | constraint.gridy = 2;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.SOUTHWEST;
|
| | | layout.setConstraints(button, constraint);
|
| | | add(button);
|
| | |
|
| | | button = new JButton("OK");
|
| | | button.setActionCommand("Okay");
|
| | | button.addActionListener(this);
|
| | | constraint.gridwidth = 2;
|
| | | constraint.gridheight = 1;
|
| | | constraint.gridx = 1;
|
| | | constraint.gridy = 2;
|
| | | constraint.insets = new Insets(5, 5, 5, 5);
|
| | | constraint.anchor = GridBagConstraints.SOUTHWEST;
|
| | | layout.setConstraints(button, constraint);
|
| | | add(button);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void actionPerformed(ActionEvent e) {
|
| | | if ("cancel".equalsIgnoreCase(e.getActionCommand())) {
|
| | | tselLocalField1.setText(Integer.toString(tselLocal1 & 0xFF));
|
| | | tselLocalField2.setText(Integer.toString(tselLocal2 & 0xFF));
|
| | | tselRemoteField1.setText(Integer.toString(tselRemote1 & 0xFF));
|
| | | tselRemoteField2.setText(Integer.toString(tselRemote2 & 0xFF));
|
| | | setVisible(false);
|
| | | }
|
| | | else if ("okay".equalsIgnoreCase(e.getActionCommand())) {
|
| | | tselLocal1 = parseTextField(tselLocalField1, tselLocal1);
|
| | | tselLocal2 = parseTextField(tselLocalField2, tselLocal2);
|
| | | tselRemote1 = parseTextField(tselRemoteField1, tselRemote1);
|
| | | tselRemote2 = parseTextField(tselRemoteField2, tselRemote2);
|
| | | setVisible(false);
|
| | | }
|
| | | }
|
| | |
|
| | | public byte[] getTselLocal() {
|
| | | return new byte[] { (byte) tselLocal1, (byte) tselLocal2 };
|
| | | }
|
| | |
|
| | | public byte[] getTselRemote() {
|
| | | return new byte[] { (byte) tselRemote1, (byte) tselRemote2 };
|
| | | }
|
| | |
|
| | | public void setTselLocal(byte[] tsel) {
|
| | | if (tsel.length != 2) {
|
| | | throw new IllegalArgumentException("TSel must consist of 2 bytes");
|
| | | }
|
| | | tselLocal1 = tsel[0];
|
| | | tselLocal2 = tsel[1];
|
| | |
|
| | | tselLocalField1.setText(Integer.toString(tselLocal1 & 0xFF));
|
| | | tselLocalField2.setText(Integer.toString(tselLocal2 & 0xFF));
|
| | | }
|
| | |
|
| | | public void setTselRemote(byte[] tsel) {
|
| | | if (tsel.length != 2) {
|
| | | throw new IllegalArgumentException("TSel must consist of 2 bytes");
|
| | | }
|
| | | tselRemote1 = tsel[0];
|
| | | tselRemote2 = tsel[1];
|
| | |
|
| | | tselRemoteField1.setText(Integer.toString(tselRemote1 & 0xFF));
|
| | | tselRemoteField2.setText(Integer.toString(tselRemote2 & 0xFF));
|
| | | }
|
| | |
|
| | | private int parseTextField(JTextField field, int oldValue) {
|
| | | int value = oldValue;
|
| | | try {
|
| | | int newValue = Integer.parseInt(field.getText());
|
| | | if (newValue >= 0 && newValue <= 255) {
|
| | | value = newValue;
|
| | | }
|
| | | } catch (NumberFormatException e) {
|
| | | return oldValue;
|
| | | }
|
| | | return value;
|
| | | }
|
| | | }
|