/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.svn.ide.sw; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.RadioButton; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; import com.google.inject.Singleton; import org.eclipse.che.ide.ui.window.Window; import org.eclipse.che.plugin.svn.ide.SubversionExtensionLocalizationConstants; import org.eclipse.che.plugin.svn.ide.SubversionExtensionResources; import java.util.List; /** * The implementation of {@link SwitchView}. * * @author Anatolii Bazko */ @Singleton public class SwitchViewImpl extends Window implements SwitchView { interface SwitchViewImplUiBinder extends UiBinder<Widget, SwitchViewImpl> {} private static SwitchViewImplUiBinder ourUiBinder = GWT.create(SwitchViewImplUiBinder.class); private final Button btnCancel; private final Button btnSwitch; @UiField RadioButton switchToTrunk; @UiField RadioButton switchToBranch; @UiField RadioButton switchToTag; @UiField RadioButton switchToOtherLocation; @UiField ListBox switchToLocation; @UiField TextBox location; @UiField Button selectOtherLocation; @UiField CheckBox ignoreAncestry; @UiField CheckBox force; @UiField CheckBox ignoreExternals; @UiField RadioButton switchToHeadRevision; @UiField RadioButton switchToRevision; @UiField TextBox revision; @UiField ListBox depth; @UiField ListBox workingCopyDepth; @UiField ListBox accept; @UiField(provided = true) SubversionExtensionResources resources; @UiField(provided = true) SubversionExtensionLocalizationConstants constants; private ActionDelegate delegate; @Inject public SwitchViewImpl(SubversionExtensionResources resources, SubversionExtensionLocalizationConstants constants) { this.resources = resources; this.constants = constants; this.ensureDebugId("svn-switch-window"); this.setTitle(constants.switchDescription()); this.setWidget(ourUiBinder.createAndBindUi(this)); this.depth.addItem("", ""); this.depth.addItem(this.constants.subversionDepthInfinityLabel(), "infinity"); this.depth.addItem(this.constants.subversionDepthImmediatesLabel(), "immediates"); this.depth.addItem(this.constants.subversionDepthFilesLabel(), "files"); this.depth.addItem(this.constants.subversionDepthEmptyLabel(), "empty"); this.depth.setSelectedIndex(1); this.workingCopyDepth.addItem("", ""); this.workingCopyDepth.addItem(this.constants.subversionWorkingCopyDepthInfinityLabel(), "infinity"); this.workingCopyDepth.addItem(this.constants.subversionWorkingCopyDepthImmediatesLabel(), "immediates"); this.workingCopyDepth.addItem(this.constants.subversionWorkingCopyDepthFilesLabel(), "files"); this.workingCopyDepth.addItem(this.constants.subversionWorkingCopyDepthEmptyLabel(), "empty"); this.workingCopyDepth.setSelectedIndex(0); this.accept.addItem(this.constants.subversionAcceptPostponeLabel(), "postpone"); this.accept.addItem(this.constants.subversionAcceptMineFullLabel(), "mine-full"); this.accept.addItem(this.constants.subversionAcceptTheirsFullLabel(), "theirs-full"); btnCancel = createButton(constants.buttonCancel(), "svn-switch-cancel", new ClickHandler() { @Override public void onClick(ClickEvent event) { delegate.onCancelClicked(); } }); addButtonToFooter(btnCancel); btnSwitch = createPrimaryButton(constants.buttonSwitch(), "svn-switch-switch", new ClickHandler() { @Override public void onClick(ClickEvent event) { delegate.onSwitchClicked(); } }); addButtonToFooter(btnSwitch); } @Override public void setDelegate(final ActionDelegate delegate) { this.delegate = delegate; } @Override public boolean isSwitchToTrunk() { return switchToTrunk.getValue(); } @Override public boolean isSwitchToBranch() { return switchToBranch.getValue(); } @Override public boolean isSwitchToTag() { return switchToTag.getValue(); } @Override public boolean isSwitchToOtherLocation() { return switchToOtherLocation.getValue(); } @Override public void close() { this.hide(); } @Override public void showWindow() { this.show(); } @Override public void setPredefinedLocations(List<String> locations) { switchToLocation.clear(); for (String l : locations) { switchToLocation.addItem(l); } } @Override public String getSwitchToLocation() { return switchToLocation.getSelectedValue(); } @Override public void setLocation(String location) { this.location.setValue(location); } @Override public void setLocationEnabled(boolean enabled) { location.setEnabled(enabled); } @Override public String getLocation() { return location.getValue(); } @Override public void setSwitchToLocationEnabled(boolean enabled) { switchToLocation.setEnabled(enabled); } @Override public boolean isIgnoreAncestry() { return ignoreAncestry.getValue(); } @Override public boolean isForce() { return force.getValue(); } @Override public boolean isIgnoreExternals() { return ignoreExternals.getValue(); } @Override public void setSwitchRevisionEnabled(boolean enabled) { revision.setEnabled(enabled); } @Override public String getRevision() { return revision.getText(); } @Override public boolean isSwitchToRevision() { return switchToRevision.getValue(); } @Override public boolean isSwitchToHeadRevision() { return switchToHeadRevision.getValue(); } @Override public void setSwitchButtonEnabled(boolean enabled) { btnSwitch.setEnabled(enabled); } @Override public void setSelectOtherLocationButtonEnabled(boolean enabled) { selectOtherLocation.setEnabled(enabled); } @Override public String getDepth() { return depth.getSelectedValue(); } @Override public String getWorkingCopyDepth() { return workingCopyDepth.getSelectedValue(); } @Override public String getAccept() { return accept.getSelectedValue(); } @Override public void setDepthEnabled(boolean enabled) { depth.setEnabled(enabled); } @Override public void setWorkingCopyDepthEnabled(boolean enabled) { workingCopyDepth.setEnabled(enabled); } @UiHandler("switchToBranch") public void onSwitchToBranchClicked(final ClickEvent event) { delegate.onSwitchToBranchChanged(); } @UiHandler("switchToTrunk") public void onSwitchToTrunkClicked(final ClickEvent event) { delegate.onSwitchToTrunkChanged(); } @UiHandler("switchToTag") public void onSwitchToTagClicked(final ClickEvent event) { delegate.onSwitchToTagChanged(); } @UiHandler("switchToOtherLocation") public void onSwitchToLocationClicked(final ClickEvent event) { delegate.onSwitchToOtherLocationChanged(); } @UiHandler("switchToLocation") public void onSwitchLocationChanged(final ChangeEvent event) { delegate.onSwitchLocationChanged(); } @UiHandler("switchToHeadRevision") public void onSwitchToHeadRevisionClicked(final ClickEvent event) { delegate.onSwitchToHeadRevisionChanged(); } @UiHandler("switchToRevision") public void onSwitchToRevisionClicked(final ClickEvent event) { delegate.onSwitchToRevisionChanged(); } @UiHandler("revision") public void onSwitchRevisionChanged(final KeyUpEvent event) { delegate.onRevisionUpdated(); } @UiHandler("selectOtherLocation") public void onSelectOtherLocationClicked(final ClickEvent event) { delegate.onSelectOtherLocationClicked(); } @UiHandler("depth") public void onDepthChanged(final ChangeEvent event) { delegate.onDepthChanged(); } @UiHandler("workingCopyDepth") public void onWorkingCopyDepthChanged(final ChangeEvent event) { delegate.onWorkingCopyDepthChanged(); } }