From f6b200be4c8b90c26886c6cdd5809abac8c4ac15 Mon Sep 17 00:00:00 2001 From: James Moger Date: Wed, 27 Mar 2013 12:46:05 -0400 Subject: Reorganized to Apache Standard Directory Layout & integrated Moxie This is a massive commit which reorganizes the entire project structure (although it is still monolithic), removes the Build classes, and switches to Moxie, a smarter Ant build tookit based on the original Gitblit Build classes. The Ant build script will likely require additional fine-tuning, but this is big step forward. --- src/main/java/com/gitblit/client/GitblitPanel.java | 228 +++++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 src/main/java/com/gitblit/client/GitblitPanel.java (limited to 'src/main/java/com/gitblit/client/GitblitPanel.java') diff --git a/src/main/java/com/gitblit/client/GitblitPanel.java b/src/main/java/com/gitblit/client/GitblitPanel.java new file mode 100644 index 00000000..f14ce790 --- /dev/null +++ b/src/main/java/com/gitblit/client/GitblitPanel.java @@ -0,0 +1,228 @@ +/* + * Copyright 2011 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gitblit.client; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Insets; +import java.io.IOException; +import java.util.List; + +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import com.gitblit.client.ClosableTabComponent.CloseTabListener; +import com.gitblit.models.FeedModel; + +/** + * GitblitPanel is a container for the repository, users, settings, etc panels. + * + * @author James Moger + * + */ +public class GitblitPanel extends JPanel implements CloseTabListener { + + private static final long serialVersionUID = 1L; + + private final RegistrationsDialog.RegistrationListener listener; + + private GitblitClient gitblit; + + private JTabbedPane tabs; + + private RepositoriesPanel repositoriesPanel; + + private FeedsPanel feedsPanel; + + private UsersPanel usersPanel; + + private TeamsPanel teamsPanel; + + private SettingsPanel settingsPanel; + + private StatusPanel statusPanel; + + public GitblitPanel(GitblitRegistration reg, RegistrationsDialog.RegistrationListener listener) { + this.gitblit = new GitblitClient(reg); + this.listener = listener; + + tabs = new JTabbedPane(JTabbedPane.BOTTOM); + tabs.addTab(Translation.get("gb.repositories"), createRepositoriesPanel()); + tabs.addTab(Translation.get("gb.activity"), createFeedsPanel()); + tabs.addTab(Translation.get("gb.teams"), createTeamsPanel()); + tabs.addTab(Translation.get("gb.users"), createUsersPanel()); + tabs.addTab(Translation.get("gb.settings"), createSettingsPanel()); + tabs.addTab(Translation.get("gb.status"), createStatusPanel()); + tabs.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + tabs.getSelectedComponent().requestFocus(); + } + }); + + setLayout(new BorderLayout()); + add(tabs, BorderLayout.CENTER); + } + + private JPanel createRepositoriesPanel() { + repositoriesPanel = new RepositoriesPanel(gitblit) { + + private static final long serialVersionUID = 1L; + + @Override + protected void subscribeFeeds(List feeds) { + GitblitPanel.this.subscribeFeeds(feeds); + } + + @Override + protected void updateUsersTable() { + usersPanel.updateTable(false); + } + + @Override + protected void updateTeamsTable() { + teamsPanel.updateTable(false); + } + + }; + return repositoriesPanel; + } + + private JPanel createFeedsPanel() { + feedsPanel = new FeedsPanel(gitblit) { + private static final long serialVersionUID = 1L; + + @Override + protected void subscribeFeeds(List feeds) { + GitblitPanel.this.subscribeFeeds(feeds); + } + }; + return feedsPanel; + } + + private JPanel createUsersPanel() { + usersPanel = new UsersPanel(gitblit) { + + private static final long serialVersionUID = 1L; + + @Override + protected void updateTeamsTable() { + teamsPanel.updateTable(false); + } + }; + return usersPanel; + } + + private JPanel createTeamsPanel() { + teamsPanel = new TeamsPanel(gitblit) { + + private static final long serialVersionUID = 1L; + + @Override + protected void updateUsersTable() { + usersPanel.updateTable(false); + } + }; + return teamsPanel; + } + + private JPanel createSettingsPanel() { + settingsPanel = new SettingsPanel(gitblit); + return settingsPanel; + } + + private JPanel createStatusPanel() { + statusPanel = new StatusPanel(gitblit); + return statusPanel; + } + + public void login() throws IOException { + gitblit.login(); + + repositoriesPanel.updateTable(true); + feedsPanel.updateTable(true); + + if (gitblit.allowManagement()) { + if (gitblit.getProtocolVersion() >= 2) { + // refresh teams panel + teamsPanel.updateTable(false); + } else { + // remove teams panel + String teams = Translation.get("gb.teams"); + for (int i = 0; i < tabs.getTabCount(); i++) { + if (teams.equals(tabs.getTitleAt(i))) { + tabs.removeTabAt(i); + break; + } + } + } + usersPanel.updateTable(false); + } else { + // user does not have administrator privileges + // hide admin repository buttons + repositoriesPanel.disableManagement(); + + while (tabs.getTabCount() > 2) { + // remove all management/administration tabs + tabs.removeTabAt(2); + } + } + + if (gitblit.allowAdministration()) { + settingsPanel.updateTable(true); + statusPanel.updateTable(false); + } else { + // remove the settings and status tab + String[] titles = { Translation.get("gb.settings"), Translation.get("gb.status") }; + for (String title : titles) { + for (int i = 0; i < tabs.getTabCount(); i++) { + if (tabs.getTitleAt(i).equals(title)) { + tabs.removeTabAt(i); + break; + } + } + } + } + } + + @Override + public Insets getInsets() { + return Utils.INSETS; + } + + @Override + public void closeTab(Component c) { + gitblit = null; + } + + protected void subscribeFeeds(final List feeds) { + SubscriptionsDialog dialog = new SubscriptionsDialog(feeds) { + + private static final long serialVersionUID = 1L; + + @Override + public void save() { + gitblit.updateSubscribedFeeds(feeds); + listener.saveRegistration(gitblit.reg.name, gitblit.reg); + setVisible(false); + repositoriesPanel.updateTable(false); + } + }; + dialog.setLocationRelativeTo(GitblitPanel.this); + dialog.setVisible(true); + } +} \ No newline at end of file -- cgit v1.2.3