/* GanttProject is an opensource project management tool. Copyright (C) 2004-2011 Alexandre Thomas, GanttProject Team 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package net.sourceforge.ganttproject.gui.options; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import net.sourceforge.ganttproject.GanttProject; import net.sourceforge.ganttproject.IGanttProject; import net.sourceforge.ganttproject.gui.GanttDialogInfo; import net.sourceforge.ganttproject.gui.TestGanttRolloverButton; import net.sourceforge.ganttproject.language.GanttLanguage; import net.sourceforge.ganttproject.util.BrowserControl; /** * Panel to edit the project properties * * @author athomas */ public class ProjectSettingsPanel { private final JTextField tfName; private final JTextField tfOrganization; private final JTextField tfWebLink; private final JTextArea taDescr; private final IGanttProject myProject; private JPanel myComponent; private static final GanttLanguage language = GanttLanguage.getInstance(); public ProjectSettingsPanel(IGanttProject project) { myProject = project; Box vbproject = Box.createVerticalBox(); JPanel namePanel = new JPanel(new BorderLayout()); namePanel.add(new JLabel(language.getText("name")), BorderLayout.WEST); vbproject.add(namePanel); vbproject.add(tfName = new JTextField()); vbproject.add(new JPanel()); JPanel orgaPanel = new JPanel(new BorderLayout()); orgaPanel.add(new JLabel(language.getText("organization")), BorderLayout.WEST); vbproject.add(orgaPanel); vbproject.add(tfOrganization = new JTextField()); vbproject.add(new JPanel()); tfWebLink = new JTextField(); JButton bWeb = new TestGanttRolloverButton(new ImageIcon(getClass().getResource("/icons/web_16.gif"))); bWeb.setToolTipText(GanttProject.getToolTip(language.getText("openWebLink"))); bWeb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // link to open the web link if (!BrowserControl.displayURL(tfWebLink.getText())) { GanttDialogInfo gdi = new GanttDialogInfo(null, GanttDialogInfo.ERROR, GanttDialogInfo.YES_OPTION, language.getText("msg4"), language.getText("error")); gdi.setVisible(true); } } }); JPanel webPanel = new JPanel(new BorderLayout()); webPanel.add(new JLabel(language.getText("webLink")), BorderLayout.WEST); webPanel.add(bWeb, BorderLayout.EAST); vbproject.add(webPanel); vbproject.add(tfWebLink); vbproject.add(new JPanel()); JPanel descrPanel = new JPanel(new BorderLayout()); descrPanel.add(new JLabel(language.getText("shortDescription")), BorderLayout.WEST); vbproject.add(descrPanel); taDescr = new JTextArea(12, 25); taDescr.setLineWrap(true); taDescr.setWrapStyleWord(true); JScrollPane scpArea = new JScrollPane(taDescr); vbproject.add(scpArea); JPanel projectPanel = new JPanel(new BorderLayout()); projectPanel.add(vbproject, BorderLayout.NORTH); myComponent = projectPanel; } public boolean applyChanges(boolean askForApply) { boolean hasChange; if (myProject.getProjectName().equals(tfName.getText()) && myProject.getOrganization().equals(tfOrganization.getText()) && myProject.getWebLink().equals(tfWebLink.getText()) && myProject.getDescription().equals(taDescr.getText())) { hasChange = false; } else { hasChange = true; // apply changes if user clicked apply (or warn about pending changes and // ask whether to apply or not) myProject.setProjectName(getProjectName()); myProject.setDescription(getProjectDescription()); myProject.setOrganization(getProjectOrganization()); myProject.setWebLink(getWebLink()); } return hasChange; } public void initialize() { tfName.setText(myProject.getProjectName()); tfOrganization.setText(myProject.getOrganization()); tfWebLink.setText(myProject.getWebLink()); taDescr.setText(myProject.getDescription()); } /** @return the selected project name */ public String getProjectName() { return tfName.getText(); } /** @return the organization */ public String getProjectOrganization() { return tfOrganization.getText(); } /** @return the web link */ public String getWebLink() { return tfWebLink.getText(); } /** @return the project description */ public String getProjectDescription() { return taDescr.getText(); } public String getTitle() { return language.correctLabel(language.getText("project")); } public String getComment() { return language.getText("settingsProject"); } public JComponent getComponent() { return myComponent; } }