/** * @file ExtensionPackagesFrame.java * @brief Class implementing the Extension Packages frame * * @section License * * Copyright (C) 2013-2014 Robert B. Colton * This file is a part of the LateralGM IDE. * * This program 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. * * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. **/ package org.lateralgm.subframes; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; import org.lateralgm.components.CustomFileChooser; import org.lateralgm.components.impl.DocumentUndoManager; import org.lateralgm.components.impl.ResNode; import org.lateralgm.main.LGM; import org.lateralgm.messages.Messages; import org.lateralgm.resources.ExtensionPackages; public class ExtensionPackagesFrame extends ResourceFrame<ExtensionPackages,ExtensionPackages.PExtensionPackages> implements ActionListener { private static final long serialVersionUID = 1L; protected DocumentUndoManager undoManager = new DocumentUndoManager(); private CustomFileChooser fc; JList<JCheckBox> packageList; private JButton closeButton; private JButton installButton; private JButton uninstallButton; public ExtensionPackagesFrame(ExtensionPackages res) { this(res,null); } public ExtensionPackagesFrame(ExtensionPackages res, ResNode node) { super(res,node,Messages.getString("ExtensionPackagesFrame.TITLE"),true); //$NON-NLS-1$ setDefaultCloseOperation(HIDE_ON_CLOSE); closeButton = new JButton(Messages.getString("ExtensionPackagesFrame.CLOSE")); closeButton.addActionListener(this); installButton = new JButton(Messages.getString("ExtensionPackagesFrame.INSTALL")); installButton.addActionListener(this); uninstallButton = new JButton(Messages.getString("ExtensionPackagesFrame.UNINSTALL")); uninstallButton.addActionListener(this); JCheckBox cbArray[] = new JCheckBox[1]; cbArray[0] = new JCheckBox(Messages.getString("ExtensionPackagesFrame.NONE_INSTALLED")); packageList = new JList<JCheckBox>(cbArray); packageList.setCellRenderer(new CheckBoxListRenderer()); JScrollPane listScroll = new JScrollPane(packageList); JPanel descPanel = new JPanel(); descPanel.setBorder(BorderFactory.createTitledBorder(Messages.getString("ExtensionPackagesFrame.ABOUT"))); JPanel centerPanel = new JPanel(); GroupLayout gl = new GroupLayout(centerPanel); centerPanel.setLayout(gl); gl.setAutoCreateGaps(true); gl.setAutoCreateContainerGaps(true); gl.setHorizontalGroup(gl.createParallelGroup() /**/.addGroup(gl.createSequentialGroup() /* */.addComponent(closeButton) /* */.addComponent(installButton) /* */.addComponent(uninstallButton)) /**/.addComponent(listScroll) /**/.addComponent(descPanel)); gl.setVerticalGroup(gl.createSequentialGroup() /**/.addGroup(gl.createParallelGroup() /* */.addComponent(closeButton) /* */.addComponent(installButton) /* */.addComponent(uninstallButton)) /**/.addComponent(listScroll) /**/.addComponent(descPanel)); this.add(centerPanel,BorderLayout.CENTER); this.pack(); setSize(this.getWidth(),400); } public Object getUserObject() { if (node != null) return node.getUserObject(); for (int m = 0; m < LGM.root.getChildCount(); m++) { ResNode n = (ResNode) LGM.root.getChildAt(m); if (n.kind == ExtensionPackages.class) return n.getUserObject(); } return 0;//Messages.getString("LGM.EXT"); //$NON-NLS-1$ } public void actionPerformed(ActionEvent ev) { super.actionPerformed(ev); if (ev.getSource() == closeButton) //$NON-NLS-1$ { this.setVisible(false); return; } if (ev.getSource() == installButton) //$NON-NLS-1$ { return; } if (ev.getSource() == uninstallButton) { return; } } public void commitChanges() { } public void setComponents(ExtensionPackages ext) { } @Override public String getConfirmationName() { return (String) getUserObject(); } @Override public boolean resourceChanged() { commitChanges(); return !res.properties.equals(resOriginal.properties); } @Override public void revertResource() { res.properties.putAll(resOriginal.properties); //setComponents(res); } private class CheckBoxListRenderer implements ListCellRenderer<JCheckBox> { public Component getListCellRendererComponent(JList<? extends JCheckBox> comp, JCheckBox value, int index, boolean isSelected, boolean hasFocus) { JCheckBox item = new JCheckBox(value.getText()); item.setEnabled(comp.isEnabled()); item.setSelected(value.isSelected()); item.setFont(comp.getFont()); if (isSelected) { item.setBackground(comp.getSelectionBackground()); item.setForeground(comp.getSelectionForeground()); } else { item.setBackground(comp.getBackground()); item.setForeground(comp.getForeground()); } return item; } } }