X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FMainWindow.java;h=cd6b2101675295e61be885e080bcbce08421033a;hb=aa1515aa54583b8e46d90581df4ae7f247f6ccab;hp=813df7cb5cc8719ff84989fd5abce0b07bd6c642;hpb=763ffeebc9455f5e177f238903a3e7918c0e0264;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/gui/MainWindow.java b/src/net/pterodactylus/jsite/gui/MainWindow.java index 813df7c..cd6b210 100644 --- a/src/net/pterodactylus/jsite/gui/MainWindow.java +++ b/src/net/pterodactylus/jsite/gui/MainWindow.java @@ -20,13 +20,17 @@ package net.pterodactylus.jsite.gui; import java.awt.BorderLayout; +import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Timer; import java.util.TimerTask; +import java.util.logging.Logger; import javax.swing.Action; import javax.swing.Box; @@ -41,12 +45,13 @@ import javax.swing.JToolBar; import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; -import net.pterodactylus.jsite.core.Project; import net.pterodactylus.jsite.i18n.I18n; import net.pterodactylus.jsite.i18n.I18nable; import net.pterodactylus.jsite.i18n.gui.I18nAction; import net.pterodactylus.jsite.i18n.gui.I18nMenu; import net.pterodactylus.jsite.main.Version; +import net.pterodactylus.jsite.project.Project; +import net.pterodactylus.util.logging.Logging; import net.pterodactylus.util.swing.StatusBar; import net.pterodactylus.util.swing.SwingUtils; @@ -56,7 +61,11 @@ import net.pterodactylus.util.swing.SwingUtils; * @author David ‘Bombe’ Roden <bombe@freenetproject.org> * @version $Id$ */ -public class MainWindow extends JFrame implements WindowListener, I18nable { +public class MainWindow extends JFrame implements WindowListener, I18nable, PropertyChangeListener { + + /** Logger. */ + @SuppressWarnings("unused") + private static final Logger logger = Logging.getLogger(MainWindow.class.getName()); /** The swing interface that receives all actions. */ private final SwingInterface swingInterface; @@ -231,6 +240,26 @@ public class MainWindow extends JFrame implements WindowListener, I18nable { } } + /** + * Adds a project to the project pane. + * + * @param project + * The project to add + * @param switchToProject + * true to switch to the new panel, + * false to not change the current panel + */ + void addProject(Project project, boolean switchToProject) { + ProjectPanel projectPanel = new ProjectPanel(swingInterface, project); + int newTabIndex = projectPane.getTabCount(); + projectPane.add(project.getName(), projectPanel); + projectPane.setToolTipTextAt(newTabIndex, project.getDescription()); + project.addPropertyChangeListener(this); + if (switchToProject) { + projectPane.setSelectedIndex(newTabIndex); + } + } + // // PRIVATE METHODS // @@ -312,14 +341,9 @@ public class MainWindow extends JFrame implements WindowListener, I18nable { private void initComponents() { super.getContentPane().add(statusBar, BorderLayout.PAGE_END); - /* - * the main window consists of two panels which are vertically oriented. - * the upper panel contains of a tabbed pane, the lower panel consists - * of a table that lists the running requests. - */ - + /* TODO - remove upper panel */ JPanel upperPanel = new JPanel(new BorderLayout(12, 12)); - getContentPane().add(upperPanel, BorderLayout.PAGE_START); + getContentPane().add(upperPanel, BorderLayout.CENTER); contentPane.setBorder(new EmptyBorder(12, 12, 12, 12)); projectPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); @@ -335,8 +359,8 @@ public class MainWindow extends JFrame implements WindowListener, I18nable { projectOverviewPanel.add(addProjectButton); projectOverviewPanel.add(Box.createVerticalGlue()); -// JPanel lowerPanel = new JPanel(new BorderLayout(12, 12)); -// getContentPane().add(lowerPanel, BorderLayout.CENTER); + // JPanel lowerPanel = new JPanel(new BorderLayout(12, 12)); + // getContentPane().add(lowerPanel, BorderLayout.CENTER); } // @@ -428,4 +452,34 @@ public class MainWindow extends JFrame implements WindowListener, I18nable { /* do nothing. */ } + // + // INTERFACE PropertyChangeListener + // + + /** + * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent propertyChangeEvent) { + Object eventSource = propertyChangeEvent.getSource(); + String propertyName = propertyChangeEvent.getPropertyName(); + if (eventSource instanceof Project) { + /* if a project was changed, update the tab title and tooltip. */ + if (Project.PROPERTY_NAME.equals(propertyName) || Project.PROPERTY_DESCRIPTION.equals(propertyName)) { + Project project = (Project) eventSource; + int tabCount = projectPane.getTabCount(); + for (int tabIndex = 0; tabIndex < tabCount; tabIndex++) { + Component tabComponent = projectPane.getComponentAt(tabIndex); + if (tabComponent instanceof ProjectPanel) { + Project tabProject = ((ProjectPanel) tabComponent).getProject(); + if (tabProject.equals(project)) { + projectPane.setTitleAt(tabIndex, project.getName()); + projectPane.setToolTipTextAt(tabIndex, project.getDescription()); + projectPane.repaint(); + } + } + } + } + } + } + }