/******************************************************************************* * 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.ide.ext.git.client.outputconsole; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; import org.eclipse.che.ide.api.app.AppContext; import org.eclipse.che.ide.api.resources.Project; import org.eclipse.che.ide.api.theme.Style; import org.eclipse.che.ide.ext.git.client.GitLocalizationConstant; import org.eclipse.che.ide.ext.git.client.GitResources; import org.vectomatic.dom.svg.ui.SVGResource; import java.util.ArrayList; import java.util.List; /** * Git output View Part. * * @author Vitaly Parfonov */ public class GitOutputConsolePresenter implements GitOutputPartView.ActionDelegate, GitOutputConsole { private final GitOutputPartView view; private final GitResources resources; private final String title; private final List<ActionDelegate> actionDelegates = new ArrayList<>(); /** Construct empty Part */ @Inject public GitOutputConsolePresenter(GitOutputPartView view, GitResources resources, AppContext appContext, GitLocalizationConstant locale, @Assisted String title) { this.view = view; this.view.setDelegate(this); this.title = title; this.resources = resources; final Project project = appContext.getRootProject(); if (project != null) { view.print(locale.consoleProjectName(project.getName()) + "\n"); } } /** {@inheritDoc} */ @Override public void go(AcceptsOneWidget container) { container.setWidget(view); } /** * Print text on console. * * @param text * text that need to be shown */ public void print(String text) { String[] lines = text.split("\n"); for (String line : lines) { view.print(line.isEmpty() ? " " : line); } view.scrollBottom(); for (ActionDelegate actionDelegate : actionDelegates) { actionDelegate.onConsoleOutput(this); } } @Override public void print(String text, String color) { view.print(text, color); view.scrollBottom(); for (ActionDelegate actionDelegate : actionDelegates) { actionDelegate.onConsoleOutput(this); } } @Override public void printError(String text) { print(text, Style.getVcsConsoleErrorColor()); } /** {@inheritDoc} */ public void clear() { view.clear(); } /** {@inheritDoc} */ @Override public void onClearClicked() { clear(); } @Override public void onScrollClicked() { view.scrollBottom(); } @Override public String getTitle() { return title; } @Override public SVGResource getTitleIcon() { return resources.gitOutput(); } @Override public boolean isFinished() { return true; } @Override public void stop() { } @Override public void close() { actionDelegates.clear(); } @Override public void addActionDelegate(ActionDelegate actionDelegate) { actionDelegates.add(actionDelegate); } }