Java tutorial
/******************************************************************************* * Copyright (c) 2010, 2012 Tasktop Technologies * Copyright (c) 2010, 2011 SpringSource, a division of VMware * * 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: * Tasktop Technologies - initial API and implementation ******************************************************************************/ package com.tasktop.c2c.server.profile.web.ui.client.view.components; import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; 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.user.client.Element; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasOneWidget; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.UIObject; import com.google.gwt.user.client.ui.Widget; import com.tasktop.c2c.server.common.profile.web.client.place.ProjectHomePlace; import com.tasktop.c2c.server.common.web.client.view.AbstractComposite; import com.tasktop.c2c.server.profile.domain.project.Project; import com.tasktop.c2c.server.profile.domain.project.ProjectService; import com.tasktop.c2c.server.profile.web.ui.client.gin.AppGinjector; import com.tasktop.c2c.server.profile.web.ui.client.resources.ProfileMessages; import com.tasktop.c2c.server.scm.domain.ScmRepository; import com.tasktop.c2c.server.wiki.domain.Page; import com.tasktop.c2c.server.wiki.web.ui.client.place.ProjectWikiViewPagePlace; import com.tasktop.c2c.server.wiki.web.ui.client.presenter.WikiPageContentPresenter; import com.tasktop.c2c.server.wiki.web.ui.client.view.WikiPageContentView; public class ProjectView extends AbstractComposite { private static ProjectView instance = null; public static ProjectView getInstance() { if (instance == null) { instance = new ProjectView(); } return instance; } interface Binder extends UiBinder<Widget, ProjectView> { } private static Binder uiBinder = GWT.create(Binder.class); private Project project = null; @UiField Label description; @UiField Panel scmPanel; @UiField TextBox mavenUrlTextBox; @UiField TextBox mavenDavUrlTextBox; @UiField Anchor readMoreAnchor; @UiField HTMLPanel wikiWrapper; @UiField Anchor wikiHomePageLink; @UiField public HasOneWidget wikiContentPanel; @UiField public SimpleActivityView activityView; @UiField DivElement scmSectionDiv; @UiField DivElement mavenSectionDiv; private ProfileMessages profileMessages = AppGinjector.get.instance().getProfileMessages(); private ProjectView() { initWidget(uiBinder.createAndBindUi(this)); setupSelectOnClick(mavenUrlTextBox); setupSelectOnClick(mavenDavUrlTextBox); readMoreAnchor.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (wikiContentPanel.getWidget() != null) { Element element = wikiContentPanel.getWidget().getElement(); Window.scrollTo(element.getAbsoluteLeft(), element.getAbsoluteTop()); } } }); wikiHomePageLink.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { Window.scrollTo(0, 0); } }); } public void setProject(Project project) { this.project = project; description.setText(project.getDescription()); wikiHomePageLink.setHref(ProjectWikiViewPagePlace .createPlaceForPage(project.getIdentifier(), ProjectHomePlace.WIKI_HOME_PAGE).getHref()); } public void setScmRepositories(List<ScmRepository> repositories) { scmPanel.clear(); if (repositories != null) { String organizationIdentifier = project.getOrganization() != null ? project.getOrganization().getIdentifier() : null; for (ScmRepository repository : repositories) { scmPanel.add(new ProjectScmRepositoryRow(repository, organizationIdentifier)); } } } /** * Set the wiki page for the project. Null page implies the page has not been created. * * @param page */ public void setProjectWikiPage(Page page) { setHasWikiHome(page != null); if (page != null) { WikiPageContentPresenter wikiPagePresenter = new WikiPageContentPresenter(new WikiPageContentView()); ProjectWikiViewPagePlace place = ProjectWikiViewPagePlace.createPlaceWithData(project, page); place.setEnableEdit(false); place.setEnableDelete(false); wikiPagePresenter.setPlace(place); wikiPagePresenter.setEnableMetadata(false); wikiPagePresenter.setEnableHeader(false); wikiPagePresenter.go(wikiContentPanel); } } private void setHasWikiHome(boolean hasWikiHome) { wikiHomePageLink.setVisible(hasWikiHome); if (!hasWikiHome) { wikiContentPanel.setWidget(new Label(profileMessages.wikiHomePage())); } } public static void setupSelectOnClick(final TextBox box) { box.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (box.getSelectionLength() == 0) { box.selectAll(); } } }); } public void setHasWikiService(boolean hasWiki) { readMoreAnchor.setVisible(hasWiki); wikiWrapper.setVisible(hasWiki); } public void setMavenService(ProjectService mavenService) { boolean hasMaven = mavenService != null; UIObject.setVisible(mavenSectionDiv, hasMaven); if (hasMaven) { mavenUrlTextBox.setText(mavenService.getUrl()); mavenDavUrlTextBox.setText("dav:" + mavenService.getUrl()); } else { mavenUrlTextBox.setText(""); mavenDavUrlTextBox.setText(""); } } public void setHasScmService(boolean hasScm) { UIObject.setVisible(scmSectionDiv, hasScm); } }