import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
-import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
-import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
/** The project overview panel. */
private Box projectOverviewPanel;
- /** The request table. */
- private JTable requestTable;
-
/**
* Creates a new main window that redirects all actions to the given swing
* interface.
*
* @param project
* The project to add
+ * @param switchToProject
+ * <code>true</code> to switch to the new panel,
+ * <code>false</code> to not change the current panel
*/
- void addProject(Project project) {
+ 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);
+ }
+ }
+
+ /**
+ * @param project
+ */
+ void projectInsertStarted(Project project) {
+ int projectIndex = getProjectIndex(project);
+ if (projectIndex == -1) {
+ return;
+ }
+ projectPane.setTitleAt(projectIndex, I18n.get("projectPanel.title.starting", project.getName()));
+ }
+
+ /**
+ * @param project
+ * @param totalBlocks
+ * @param requiredBlocks
+ * @param successfulBlocks
+ * @param failedBlocks
+ * @param fatallyFailedBlocks
+ * @param finalizedTotal
+ */
+ void projectInsertProgressed(Project project, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal) {
+ int projectIndex = getProjectIndex(project);
+ if (projectIndex == -1) {
+ return;
+ }
+ projectPane.setTitleAt(projectIndex, I18n.get("projectPanel.title.progress", project.getName(), requiredBlocks / (double) successfulBlocks));
+ }
+
+ /**
+ * @param project
+ */
+ void projectInsertGeneratedURI(Project project) {
+ /* TODO - update panel. */
+ }
+
+ /**
+ * @param project
+ * @param success
+ */
+ void projectInsertFinished(Project project, boolean success) {
+ int projectIndex = getProjectIndex(project);
+ if (projectIndex == -1) {
+ return;
+ }
+ projectPane.setTitleAt(projectIndex, project.getName());
}
//
//
/**
+ * Returns the index of the project panel that contains the given project.
+ *
+ * @param project
+ * The wanted project
+ * @return The index of {@link #projectPane}’s tab that contains the given
+ * project, or <code>-1</code> if the project can not be found
+ */
+ private int getProjectIndex(Project project) {
+ int tabCount = projectPane.getTabCount();
+ for (int tabIndex = 1; tabIndex < tabCount; tabIndex++) {
+ Component tabComponent = projectPane.getComponentAt(tabIndex);
+ if (tabComponent instanceof ProjectPanel) {
+ if (((ProjectPanel) tabComponent).getProject() == project) {
+ return tabIndex;
+ }
+ }
+ }
+ return -1;
+ }
+
+ /**
* Initializes the window by creating all its components.
*/
private void initWindow() {
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);
projectOverviewPanel.add(addProjectButton);
projectOverviewPanel.add(Box.createVerticalGlue());
- requestTable = new JTable(swingInterface.getRequestTableModel());
- getContentPane().add(new JScrollPane(requestTable), BorderLayout.CENTER);
-
// JPanel lowerPanel = new JPanel(new BorderLayout(12, 12));
// getContentPane().add(lowerPanel, BorderLayout.CENTER);
}
}
helpMenu.updateI18n();
getJMenuBar().revalidate();
- projectOverviewPanel.setName(I18n.get("mainWindow.pane.overview.title"));
+ projectPane.setTitleAt(0, I18n.get("mainWindow.pane.overview.title"));
for (int componentIndex = 0; componentIndex < projectPane.getTabCount(); componentIndex++) {
- projectPane.setTitleAt(componentIndex, projectPane.getComponentAt(componentIndex).getName());
+ Component tabComponent = projectPane.getComponentAt(componentIndex);
+ if (tabComponent instanceof ProjectPanel) {
+ ((ProjectPanel) tabComponent).updateI18n();
+ }
}
refreshNodeMenuItems();
SwingUtils.repackCentered(this);