current state
[jSite2.git] / src / net / pterodactylus / jsite / gui / ProjectPanel.java
1 /*
2  * jSite2 - ProjectPanel.java -
3  * Copyright © 2008 David Roden
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  */
19
20 package net.pterodactylus.jsite.gui;
21
22 import java.awt.BorderLayout;
23 import java.awt.FlowLayout;
24 import java.awt.GridBagLayout;
25
26 import javax.swing.BorderFactory;
27 import javax.swing.JButton;
28 import javax.swing.JPanel;
29
30 import net.pterodactylus.jsite.core.Project;
31
32 /**
33  * A panel that contains all information about a project and lets the user edit
34  * the properties of the project.
35  * 
36  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
37  * @version $Id$
38  */
39 public class ProjectPanel extends JPanel {
40
41         /** The Swing interface. */
42         private final SwingInterface swingInterface;
43         private final Project project;
44
45         /**
46          * Creates a new project panel.
47          * 
48          * @param swingInterface
49          *            The Swing interface
50          * @param project The project to display
51          */
52         public ProjectPanel(SwingInterface swingInterface, Project project) {
53                 super(new BorderLayout(12, 12));
54                 this.swingInterface = swingInterface;
55                 this.project = project;
56                 initComponents();
57         }
58         
59         //
60         // ACCESSORS
61         //
62         
63         /**
64          * Returns the project that is displayed in this panel.
65          * @return The project of this panel
66          */
67         public Project getProject() {
68                 return project;
69         }
70
71         //
72         // PRIVATE METHODS
73         //
74
75         /**
76          * Initializes all components of the panel.
77          */
78         private void initComponents() {
79                 setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
80
81                 JPanel propertiesPanel = createPropertiesPanel();
82                 add(propertiesPanel, BorderLayout.CENTER);
83
84                 JPanel buttonPanel = createButtonPanel();
85                 add(buttonPanel, BorderLayout.PAGE_END);
86         }
87
88         /**
89          * Creates the properties panel.
90          * 
91          * @return The properties panel
92          */
93         private JPanel createPropertiesPanel() {
94                 JPanel propertiesPanel = new JPanel(new GridBagLayout());
95
96                 return propertiesPanel;
97         }
98
99         /**
100          * Creates the button panel.
101          * 
102          * @return The button panel
103          */
104         private JPanel createButtonPanel() {
105                 JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING, 12, 12));
106                 buttonPanel.setBorder(BorderFactory.createEmptyBorder(-12, -12, -12, -12));
107
108                 buttonPanel.add(new JButton(swingInterface.getDeleteProjectAction()));
109                 buttonPanel.add(new JButton(swingInterface.getCloneProjectAction()));
110
111                 return buttonPanel;
112         }
113
114 }