/*******************************************************************************
* 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.api.command;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import org.eclipse.che.ide.api.mvp.Presenter;
/**
* Page allows to edit command.
*
* @author Artem Zatsarynnyi
* @author Valeriy Svydenko
*/
public interface CommandPage extends Presenter {
/**
* Resets the page with the given {@code command}.
* <p>Typically, implementors should hold the given {@code command} and edit it directly.
* <p>This method is called every time when user selects an appropriate
* command in 'Commands' dialog but before the actual displaying of the page.
*/
void resetFrom(CommandImpl command);
/**
* Called every time when user selects an appropriate command in 'Commands' dialog.
* <p>Typically, should be used for initializing page.
* <p>{@inheritDoc}
*/
@Override
void go(AcceptsOneWidget container);
/** Called when currently edited command has been saved. */
void onSave();
/**
* Whether the page has been changed or not?
*
* @return {@code true} if page is changed, and {@code false} - otherwise
*/
boolean isDirty();
/** Sets {@link DirtyStateListener}. */
void setDirtyStateListener(DirtyStateListener listener);
/** Sets {@link FieldStateActionDelegate} that should be operated all panels. */
void setFieldStateActionDelegate(FieldStateActionDelegate delegate);
interface FieldStateActionDelegate {
/** Sets a state of the visibility for the Preview URL panel. */
void updatePreviewURLState(boolean isVisible);
}
/** Listener that should be called every time when any modifications on the page has been performed. */
interface DirtyStateListener {
void onDirtyStateChanged();
}
}