1 /*
2  * SVNPane.java
3  *
4  * Copyright (C) 2021 by RStudio, PBC
5  *
6  * Unless you have received this program directly from RStudio pursuant
7  * to the terms of a commercial license agreement with RStudio, then
8  * this program is licensed to you under the terms of version 3 of the
9  * GNU Affero General Public License. This program is distributed WITHOUT
10  * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
12  * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
13  *
14  */
15 package org.rstudio.studio.client.workbench.views.vcs.svn;
16 
17 import com.google.gwt.user.client.ui.Widget;
18 import com.google.inject.Inject;
19 
20 import org.rstudio.core.client.ElementIds;
21 import org.rstudio.core.client.resources.ImageResource2x;
22 import org.rstudio.core.client.widget.Toolbar;
23 import org.rstudio.core.client.widget.ToolbarButton;
24 import org.rstudio.core.client.widget.ToolbarMenuButton;
25 import org.rstudio.core.client.widget.ToolbarPopupMenu;
26 import org.rstudio.studio.client.common.icons.StandardIcons;
27 import org.rstudio.studio.client.common.vcs.StatusAndPath;
28 import org.rstudio.studio.client.workbench.commands.Commands;
29 import org.rstudio.studio.client.workbench.model.Session;
30 import org.rstudio.studio.client.workbench.ui.WorkbenchPane;
31 import org.rstudio.studio.client.workbench.views.vcs.common.ChangelistTable;
32 import org.rstudio.studio.client.workbench.views.vcs.svn.SVNPresenter.Display;
33 
34 import java.util.ArrayList;
35 
36 public class SVNPane extends WorkbenchPane implements Display
37 {
38    @Inject
SVNPane(SVNChangelistTablePresenter changelistTablePresenter, Session session, Commands commands)39    public SVNPane(SVNChangelistTablePresenter changelistTablePresenter,
40                   Session session,
41                   Commands commands)
42    {
43       super(session.getSessionInfo().getVcsName());
44 
45       changelistTablePresenter_ = changelistTablePresenter;
46       commands_ = commands;
47    }
48 
49    @Override
bringToFront()50    public void bringToFront()
51    {
52    }
53 
54    @Override
setProgress(boolean showProgress)55    public void setProgress(boolean showProgress)
56    {
57    }
58 
59    @Override
createMainToolbar()60    protected Toolbar createMainToolbar()
61    {
62       Toolbar toolbar = new Toolbar("SVN Tab");
63 
64       toolbar.addLeftWidget(commands_.vcsDiff().createToolbarButton());
65       toolbar.addLeftSeparator();
66       toolbar.addLeftWidget(commands_.vcsAddFiles().createToolbarButton());
67       toolbar.addLeftWidget(commands_.vcsRemoveFiles().createToolbarButton());
68       toolbar.addLeftSeparator();
69 
70       toolbar.addLeftWidget(commands_.vcsCommit().createToolbarButton());
71 
72       toolbar.addLeftSeparator();
73 
74       ToolbarPopupMenu moreMenu = new ToolbarPopupMenu();
75 
76       moreMenu.addItem(commands_.vcsRevert().createMenuItem(false));
77       moreMenu.addItem(commands_.vcsIgnore().createMenuItem(false));
78       moreMenu.addSeparator();
79       moreMenu.addItem(commands_.vcsResolve().createMenuItem(false));
80       moreMenu.addSeparator();
81       moreMenu.addItem(commands_.vcsPull().createMenuItem(false));
82       moreMenu.addItem(commands_.vcsCleanup().createMenuItem(false));
83       moreMenu.addSeparator();
84       moreMenu.addItem(commands_.vcsShowHistory().createMenuItem(false));
85       moreMenu.addSeparator();
86       moreMenu.addItem(commands_.showShellDialog().createMenuItem(false));
87 
88       toolbar.addLeftWidget(new ToolbarMenuButton(
89           "More",
90           ToolbarButton.NoTitle,
91           new ImageResource2x(StandardIcons.INSTANCE.more_actions2x()),
92           moreMenu));
93 
94       toolbar.addLeftSeparator();
95       toolbar.addRightWidget(commands_.vcsRefresh().createToolbarButton());
96 
97       return toolbar;
98    }
99 
100    @Override
setItems(ArrayList<StatusAndPath> items)101    public void setItems(ArrayList<StatusAndPath> items)
102    {
103       getChangelistTable().setItems(items);
104    }
105 
106    @Override
getSelectedItems()107    public ArrayList<StatusAndPath> getSelectedItems()
108    {
109       return changelistTablePresenter_.getSelectedItems();
110    }
111 
112    @Override
getChangelistTable()113    public ChangelistTable getChangelistTable()
114    {
115       return changelistTablePresenter_.getView();
116    }
117 
118    @Override
showContextMenu(final int clientX, final int clientY)119    public void showContextMenu(final int clientX, final int clientY)
120    {
121       final ToolbarPopupMenu menu = new ToolbarPopupMenu();
122 
123       menu.addItem(commands_.vcsDiff().createMenuItem(false));
124       menu.addSeparator();
125       menu.addItem(commands_.vcsAddFiles().createMenuItem(false));
126       menu.addItem(commands_.vcsRemoveFiles().createMenuItem(false));
127       menu.addSeparator();
128       menu.addItem(commands_.vcsRevert().createMenuItem(false));
129       menu.addItem(commands_.vcsIgnore().createMenuItem(false));
130       menu.addSeparator();
131       menu.addItem(commands_.vcsResolve().createMenuItem(false));
132       menu.addSeparator();
133       menu.addItem(commands_.vcsOpen().createMenuItem(false));
134 
135       menu.showRelativeTo(clientX, clientY, ElementIds.SVN_TAB_CONTEXT);
136    }
137 
138    @Override
createMainWidget()139    protected Widget createMainWidget()
140    {
141       return changelistTablePresenter_.getView();
142    }
143 
144    @Override
onBeforeSelected()145    public void onBeforeSelected()
146    {
147    }
148 
149    @Override
onSelected()150    public void onSelected()
151    {
152    }
153 
154    private final SVNChangelistTablePresenter changelistTablePresenter_;
155    private final Commands commands_;
156 }
157