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