diff options
Diffstat (limited to 'src/main/java/com/gitblit/client/GitblitPanel.java')
-rw-r--r-- | src/main/java/com/gitblit/client/GitblitPanel.java | 228 |
1 files changed, 228 insertions, 0 deletions
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<FeedModel> 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<FeedModel> 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<FeedModel> 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 |