/******************************************************************************* * 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.command.toolbar.processes; import com.google.gwt.user.client.ui.Widget; import org.eclipse.che.ide.ui.dropdown.BaseListItem; import org.eclipse.che.ide.ui.dropdown.DropdownListItemRenderer; /** Renders widgets for representing a {@link Process}. */ class ProcessItemRenderer implements DropdownListItemRenderer { private final BaseListItem<Process> item; private final StopProcessHandler stopHandler; private final RerunProcessHandler reRunHandler; private ProcessWidget headerWidget; private ProcessWidget listWidget; ProcessItemRenderer(BaseListItem<Process> listItem, StopProcessHandler stopProcessHandler, RerunProcessHandler reRunProcessHandler) { item = listItem; stopHandler = stopProcessHandler; reRunHandler = reRunProcessHandler; } @Override public Widget renderHeaderWidget() { if (headerWidget == null) { headerWidget = new ProcessWidget(item, stopHandler, reRunHandler); } return headerWidget; } @Override public Widget renderListWidget() { if (listWidget == null) { listWidget = new ProcessWidget(item, stopHandler, reRunHandler); } return listWidget; } /** Informs rendered widgets that related process has been stopped. */ void notifyProcessStopped() { headerWidget.toggleStopped(); listWidget.toggleStopped(); } interface StopProcessHandler { /** Called when stopping {@code process} is requested. */ void onStopProcess(Process process); } interface RerunProcessHandler { /** Called when rerunning {@code process} is requested. */ void onRerunProcess(Process process); } }