/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * 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 org.guvnor.structure.client.editors.repository.list; import javax.inject.Inject; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; 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.Composite; import com.google.gwt.user.client.ui.Widget; import org.guvnor.structure.client.editors.repository.common.CopyRepositoryUrlBtn; import org.gwtbootstrap3.client.ui.Button; import org.gwtbootstrap3.client.ui.Heading; import org.gwtbootstrap3.client.ui.TextBox; import org.gwtbootstrap3.client.ui.html.Paragraph; import org.gwtbootstrap3.extras.select.client.ui.Option; import org.gwtbootstrap3.extras.select.client.ui.Select; import org.uberfire.ext.widgets.core.client.resources.i18n.CoreConstants; public class RepositoryItemViewImpl extends Composite implements RepositoryItemView { private static RepositoriesViewItemBinder uiBinder = GWT.create( RepositoriesViewItemBinder.class ); @UiField public Heading repoName; @UiField public Paragraph repoDesc; @UiField public TextBox gitDaemonURI; @UiField public CopyRepositoryUrlBtn myGitCopyButton; @UiField public Paragraph linksPanel; @UiField public Select branchesDropdown; @UiField public Button btnChangeBranch; @UiField public Button btnRemoveRepository; private RepositoryItemPresenter presenter; @Inject public RepositoryItemViewImpl() { initWidget( uiBinder.createAndBindUi( this ) ); myGitCopyButton.addDomHandler( ( e ) -> presenter.onGitUrlCopied( gitDaemonURI.getText() ), ClickEvent.getType() ); glueCopy( myGitCopyButton.getElement() ); } public static native void glueCopy( final com.google.gwt.user.client.Element element ) /*-{ var clip = new $wnd.ZeroClipboard(element); }-*/; @Override public void setRepositoryName( final String repositoryName ) { repoName.setText( repositoryName ); } @Override public void setRepositoryDescription( final String description ) { repoDesc.setText( description ); } @Override public void showAvailableProtocols() { linksPanel.setText( CoreConstants.INSTANCE.AvailableProtocols() ); } @Override public void setDaemonURI( final String uri ) { gitDaemonURI.setText( uri ); } @Override public void addProtocol( final String protocol ) { linksPanel.add( new ProtocolButton( protocol, new ClickHandler() { @Override public void onClick( ClickEvent event ) { presenter.onAnchorSelected( protocol ); } }, linksPanel.getWidgetCount() != 0 ) ); } @Override public void setPresenter( final RepositoryItemPresenter presenter ) { this.presenter = presenter; } @Override public void setUriId( final String uriId ) { gitDaemonURI.getElement().setId( uriId ); myGitCopyButton.init( true, uriId, gitDaemonURI.getText() ); } @Override public void clearBranches() { branchesDropdown.clear(); } @Override public void addBranch( final String branch ) { final Option option = new Option(); option.setText( branch ); option.setValue( branch ); branchesDropdown.add( option ); } @Override public void setSelectedBranch( final String currentBranch ) { branchesDropdown.setValue( currentBranch ); branchesDropdown.refresh(); } @Override public String getSelectedBranch() { return branchesDropdown.getValue(); } @Override public void setUpdateEnabled(boolean enabled) { btnChangeBranch.setEnabled(enabled); } @Override public void setDeleteEnabled(boolean enabled) { btnRemoveRepository.setEnabled(enabled); } @Override public void refresh() { branchesDropdown.refresh(); } @UiHandler( "btnRemoveRepository" ) public void onRemoveRepository( final ClickEvent event ) { presenter.onClickButtonRemoveRepository(); } @UiHandler( "btnChangeBranch" ) public void onUpdateRepository( final ClickEvent event ) { presenter.onUpdateRepository( branchesDropdown.getValue() ); } interface RepositoriesViewItemBinder extends UiBinder<Widget, RepositoryItemViewImpl> { } }