/* * IgnoreDialog.java * * Copyright (C) 2009-12 by RStudio, Inc. * * Unless you have received this program directly from RStudio pursuant * to the terms of a commercial license agreement with RStudio, then * this program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ package org.rstudio.studio.client.common.vcs.ignore; import org.rstudio.core.client.widget.CaptionWithHelp; import org.rstudio.core.client.widget.DirectoryChooserTextBox; import org.rstudio.core.client.widget.ModalDialogBase; import org.rstudio.core.client.widget.ProgressIndicator; import org.rstudio.core.client.widget.ThemedButton; import org.rstudio.studio.client.workbench.views.source.editors.text.AceEditor; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; public class IgnoreDialog extends ModalDialogBase implements Ignore.Display { @Inject public IgnoreDialog() { dirChooser_ = new DirectoryChooserTextBox("Directory:", "", null); dirChooser_.addStyleName(RES.styles().dirChooser()); ignoresCaption_ = new CaptionWithHelp("Ignore:", "Specifying ignored files"); ignoresCaption_.setIncludeVersionInfo(false); ignoresCaption_.addStyleName(RES.styles().ignoresCaption()); editor_ = new AceEditor(); editor_.setUseWrapMode(false); editor_.setShowLineNumbers(false); saveButton_ = new ThemedButton("Save", (ClickHandler)null); addButton(saveButton_); addCancelButton(); setButtonAlignment(HasHorizontalAlignment.ALIGN_RIGHT); progressIndicator_ = addProgressIndicator(); } @Override public void setDialogCaption(String caption) { setText(caption); } @Override public void setIgnoresCaption(String caption) { ignoresCaption_.setCaption(caption); } @Override public void setHelpLinkName(String helpLinkName) { ignoresCaption_.setRStudioLinkName(helpLinkName); } @Override public ProgressIndicator progressIndicator() { return progressIndicator_; } @Override public HasClickHandlers saveButton() { return saveButton_; } @Override public void setCurrentPath(String path) { dirChooser_.setText(path); } @Override public String getCurrentPath() { return dirChooser_.getText(); } @Override public HandlerRegistration addPathChangedHandler( ValueChangeHandler<String> handler) { return dirChooser_.addValueChangeHandler(handler); } @Override public void setIgnored(String ignored) { editor_.setCode(ignored.trim(), false); } @Override public void focusIgnored() { editor_.focus(); } @Override public String getIgnored() { String ignored = editor_.getCode(); if (ignored.length() > 0) ignored = ignored.trim() + "\n"; return ignored; } @Override public void scrollToBottom() { editor_.scrollToBottom(); } @Override protected Widget createMainWidget() { VerticalPanel verticalPanel = new VerticalPanel(); verticalPanel.add(dirChooser_); verticalPanel.add(ignoresCaption_); final String aceWidth = "400px"; final String aceHeight = "300px"; Widget editorWidget = editor_.getWidget(); editorWidget.setSize(aceWidth, aceHeight); SimplePanel panel = new SimplePanel(); panel.addStyleName(RES.styles().editorFrame()); panel.setSize(aceWidth, aceHeight); panel.setWidget(editor_.getWidget()); verticalPanel.add(panel); return verticalPanel; } @Override protected void onDialogShown() { editor_.focus(); } static interface Styles extends CssResource { String dirChooser(); String ignoresCaption(); String editorFrame(); } static interface Resources extends ClientBundle { @Source("IgnoreDialog.css") Styles styles(); } static Resources RES = (Resources)GWT.create(Resources.class) ; public static void ensureStylesInjected() { RES.styles().ensureInjected(); } private final DirectoryChooserTextBox dirChooser_; private final CaptionWithHelp ignoresCaption_; private final AceEditor editor_ ; private final ThemedButton saveButton_; private final ProgressIndicator progressIndicator_; }