/**
* Opens all the widgets in their own little frame with the widget name as its
* title.
*/
/*
Copywrite 2016 Will Winder
This file is part of Universal Gcode Sender (UGS).
UGS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
UGS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with UGS. If not, see <http://www.gnu.org/licenses/>.
*/
package com.willwinder.universalgcodesender.uielements;
import com.willwinder.universalgcodesender.uielements.panels.SendStatusPanel;
import com.willwinder.universalgcodesender.uielements.toolbars.*;
import com.willwinder.universalgcodesender.uielements.panels.OverridesPanel;
import com.willwinder.universalgcodesender.uielements.components.CommandTextArea;
import com.willwinder.universalgcodesender.uielements.macros.MacroPanel;
import com.willwinder.universalgcodesender.uielements.macros.MacroActionPanel;
import com.willwinder.universalgcodesender.uielements.panels.ConnectionSettingsPanel;
import com.willwinder.universalgcodesender.uielements.panels.ControllerProcessorSettingsPanel;
import com.willwinder.universalgcodesender.model.BackendAPI;
import com.willwinder.universalgcodesender.model.GUIBackend;
import com.willwinder.universalgcodesender.services.JogService;
import com.willwinder.universalgcodesender.uielements.panels.ActionButtonPanel;
import com.willwinder.universalgcodesender.uielements.panels.ActionPanel;
import com.willwinder.universalgcodesender.uielements.panels.CommandPanel;
import com.willwinder.universalgcodesender.uielements.panels.ConnectionPanelGroup;
import com.willwinder.universalgcodesender.uielements.jog.JogPanel;
import com.willwinder.universalgcodesender.uielements.panels.ConnectionPanel;
import com.willwinder.universalgcodesender.uielements.panels.MachineStatusPanel;
import com.willwinder.universalgcodesender.uielements.panels.ProbePanel;
import com.willwinder.universalgcodesender.utils.FirmwareUtils;
import com.willwinder.universalgcodesender.utils.SettingsFactory;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
/**
*
* @author wwinder
*/
public class WidgetPreviewer {
public static void main(String[] args) throws Exception {
BackendAPI backend = new GUIBackend();
backend.applySettings(SettingsFactory.loadSettings());
JPanel panel = new JPanel();
// Create the main frame.
JFrame frame = new JFrame("Widget Previewer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(panel, BorderLayout.CENTER);
// Button panel...
panel.setLayout(new MigLayout("wrap 1"));
panel.add(frameLauncherButton("ConnectionPanelGroup", new ConnectionPanelGroup(backend, new JogService(backend))));
panel.add(frameLauncherButton("CommandTextArea", new CommandTextArea(backend)));
//panel.add(frameLauncherButton("ConnectionSettingsDialog", new ConnectionSettingsDialog(backend.getSettings()), null, false));
panel.add(dialogLauncherButton("ConnectionSettingsPanel",
new UGSSettingsDialog(
"ConnectionSettingsPanel",
backend.getSettings(),
new ConnectionSettingsPanel(backend.getSettings()),
frame,
true)));
panel.add(dialogLauncherButton("ControllerProcessorSettingsPanel",
new UGSSettingsDialog(
"ControllerProcessorSettingsPanel",
backend.getSettings(),
new ControllerProcessorSettingsPanel(backend.getSettings(), FirmwareUtils.getConfigFiles()),
frame,
true)));
panel.add(frameLauncherButton("MacroActionPanel", new MacroActionPanel(backend)));
panel.add(frameLauncherButton("MacroPanel", new MacroPanel(backend)));
panel.add(frameLauncherButton("OverridesPanel", new OverridesPanel(backend)));
panel.add(frameLauncherButton("SendStatusLine", new SendStatusLine(backend)));
panel.add(frameLauncherButton("SendStatusPanel", new SendStatusPanel(backend)));
panel.add(frameLauncherButton("ActionButtonPanel", new ActionButtonPanel(backend)));
panel.add(frameLauncherButton("ActionPanel", new ActionPanel(backend)));
panel.add(frameLauncherButton("CommandPanel", new CommandPanel(backend)));
panel.add(frameLauncherButton("JogPanel(true)", new JogPanel(backend, new JogService(backend), true)));
panel.add(frameLauncherButton("JogPanel(false)", new JogPanel(backend, new JogService(backend), false)));
panel.add(frameLauncherButton("MachineStatusPanel", new MachineStatusPanel(backend)));
panel.add(frameLauncherButton("ConnectionPanel", new ConnectionPanel(backend)));
panel.add(frameLauncherButton("ConnectionFirmwarePanel", new ConnectionFirmwarePanel(backend)));
panel.add(frameLauncherButton("ConnectionSerialPortPanel", new ConnectionSerialPortPanel(backend)));
panel.add(frameLauncherButton("ConnectionBaudRatePanel", new ConnectionBaudRatePanel(backend)));
panel.add(frameLauncherButton("FileBrowsePanel", new FileBrowsePanel(backend)));
panel.add(frameLauncherButton("Probe Panel", new ProbePanel(backend)));
// Display the main frame.
frame.pack();
frame.setVisible(true);
}
private static JButton dialogLauncherButton(String title, JDialog c) {
JButton button = new JButton(title);
button.addActionListener((ActionEvent e) -> {
c.setVisible(true);
});
return button;
}
private static JButton frameLauncherButton(String title, Component c) {
JButton button = new JButton(title);
button.addActionListener((ActionEvent e) -> {
frameLauncher(title, c);
});
return button;
}
private static void frameLauncher(String title, Component c) {
JFrame frame = new JFrame(title);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(c, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}