package JsonInspector; import javax.swing.*; import java.awt.*; import java.net.MalformedURLException; import java.net.URL; public class Frame extends JFrame { private static final Dimension DEFAULT_FRAME_SIZE = new Dimension(800, 600); private static final Dimension MINIMUM_FRAME_SIZE = new Dimension(600, 500); private static final String DEFAULT_LINK = "https://gbfs.citibikenyc.com/gbfs/en/station_information.json"; private final CardLayout cards = new CardLayout(); private boolean showTab = true; private GraphicFile file; private Node node; private Tree tree; public Frame() { super("Inspecteur JSON"); tree = new Tree(""); init(); this.setVisible(true); } public Frame(Node node) { super("Inspecteur JSON"); this.node = node; init(); this.add(secondCard()); cards.last(this.getContentPane()); this.setVisible(true); } private void init() { this.setSize(DEFAULT_FRAME_SIZE); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setMinimumSize(MINIMUM_FRAME_SIZE); this.setLayout(cards); this.add(firstCard()); //this.add(secondCard()); cards.first(this.getContentPane()); } private JPanel firstCard() { GridBagLayout layout = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); JTextField textField = new JTextField(DEFAULT_LINK, 30); JButton button = new JButton("Valider"); button.addActionListener((event) -> validationAction(textField)); JPanel panel = new JPanel(); panel.setLayout(layout); gbc.insets = new Insets(10, 10, 10, 10); gbc.gridx = 0; gbc.gridy = 0; JLabel label = new JLabel("URL :"); label.setForeground(Parameters.DEFAULT_TEXT_COLOR); panel.add(label, gbc); gbc.gridx = 1; panel.add(textField, gbc); gbc.gridy = 1; panel.add(button, gbc); panel.setBackground(Parameters.IHM_COLOR); return panel; } private JPanel secondCard() { file = new GraphicFile(tree, showTab); JButton showButton = new JButton(); JButton backButton = new JButton("Retour"); JPanel mainPanel = new JPanel(), southPanel = new JPanel(); JScrollPane scroll = new JScrollPane(); mainPanel.setLayout(new BorderLayout()); if (showTab) { showButton.setText("Tout déplier"); } else { showButton.setText("Tout replier"); } southPanel.setBackground(Parameters.IHM_COLOR); southPanel.add(backButton); backButton.addActionListener((event) -> backAction(mainPanel)); southPanel.add(showButton); showButton.addActionListener((event) -> showAction(mainPanel)); southPanel.add(new JButton("convertir en PHP")); mainPanel.add(file); mainPanel.add(southPanel, BorderLayout.SOUTH); mainPanel.add(scroll); scroll.setViewportView(file); return mainPanel; } private void showAction(JPanel panel) { if (showTab) { showTab = false; repaintFile(panel); } else { showTab = true; repaintFile(panel); } } private void repaintFile(JPanel panel) { this.remove(panel); this.add(secondCard()); cards.last(this.getContentPane()); } private void validationAction(JTextField field) { try { URL url = new URL(field.getText()); this.add(secondCard()); cards.last(this.getContentPane()); } catch (MalformedURLException e) { JOptionPane.showMessageDialog(this, "Invalid URL", "Error", JOptionPane.ERROR_MESSAGE); } } private void backAction(JPanel panel) { this.remove(panel); cards.first(this.getContentPane()); } }