/******************************************************************************* * Copyright (c) 2012-2015 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.part.console; import org.eclipse.che.ide.api.parts.ConsolePart; import org.eclipse.che.ide.api.parts.PartPresenter; import org.eclipse.che.ide.api.parts.base.BasePresenter; import org.eclipse.che.ide.workspace.WorkBenchPartControllerImpl; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.RepeatingCommand; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.inject.Inject; import com.google.inject.Singleton; import org.vectomatic.dom.svg.ui.SVGResource; import javax.annotation.Nonnull; /** * Template for the Console View Part. * * @author <a href="mailto:nzamosenchuk@exoplatform.com">Nikolay Zamosenchuk</a> */ @Singleton public class ConsolePartPresenter extends BasePresenter implements ConsolePartView.ActionDelegate, ConsolePart { private static final String TITLE = "Console"; private ConsolePartView view; /** Construct empty Part */ @Inject public ConsolePartPresenter(ConsolePartView view) { this.view = view; this.view.setTitle(TITLE); this.view.setDelegate(this); } /** {@inheritDoc} */ @Nonnull @Override public String getTitle() { return TITLE; } /** {@inheritDoc} */ @Override public ImageResource getTitleImage() { return null; } /** {@inheritDoc} */ @Override public SVGResource getTitleSVGImage() { return null; } /** {@inheritDoc} */ @Override public String getTitleToolTip() { return "Displays console output"; } /** {@inheritDoc} */ @Override public void go(AcceptsOneWidget container) { container.setWidget(view); } private void performPostOutputActions() { PartPresenter activePart = partStack.getActivePart(); if (activePart == null || !activePart.equals(this)) { partStack.setActivePart(this); } view.scrollBottom(); } /** * 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); } performPostOutputActions(); } /** {@inheritDoc} */ @Override public void clear() { view.clear(); } /** {@inheritDoc} */ @Override public void onClearClicked() { clear(); } /** {@inheritDoc} */ @Override public void onOpen() { super.onOpen(); Scheduler.get().scheduleFixedDelay(new RepeatingCommand() { @Override public boolean execute() { view.scrollBottom(); return false; } }, WorkBenchPartControllerImpl.DURATION); } @Override public void displayException(Exception e) { } @Override public void printInfo(String text) { view.printInfo(text); performPostOutputActions(); } @Override public void printWarn(String text) { view.printWarn(text); performPostOutputActions(); } @Override public void printError(String text) { view.printError(text); performPostOutputActions(); } }