/*
* Copyright 2005 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.guvnor.client.ruleeditor.toolbar;
import org.drools.guvnor.client.messages.Constants;
import org.drools.guvnor.client.util.Format;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.Widget;
/**
* This contains the widgets used to action a rule asset
* (ie checkin, change state, close window)
*
* @author Michael Neale
*/
public class ActionToolbar extends Composite {
private Constants constants = GWT.create( Constants.class );
interface ActionToolbarBinder
extends
UiBinder<Widget, ActionToolbar> {
}
private static ActionToolbarBinder uiBinder = GWT.create( ActionToolbarBinder.class );
@UiField
MenuItem saveChanges;
@UiField
MenuItem saveChangesAndClose;
@UiField
MenuItem archive;
@UiField
MenuItem delete;
@UiField
MenuItem copy;
@UiField
MenuItem promoteToGlobal;
@UiField
MenuItem selectWorkingSets;
@UiField
MenuItem validate;
@UiField
MenuItem verify;
@UiField
MenuItem viewSource;
@UiField
MenuItem changeStatus;
@UiField
Label status;
private ActionToolbarButtonsConfigurationProvider actionToolbarButtonsConfigurationProvider;
public ActionToolbar(ActionToolbarButtonsConfigurationProvider actionToolbarButtonsConfigurationProvider,
String status) {
initWidget( uiBinder.createAndBindUi( this ) );
this.actionToolbarButtonsConfigurationProvider = actionToolbarButtonsConfigurationProvider;
setState( status );
applyToolBarConfiguration();
this.status.setVisible( this.actionToolbarButtonsConfigurationProvider.showStateLabel() );
}
/**
* Sets the visible status display.
*/
public void setState(String newStatus) {
status.setText( Format.format( constants.statusIs(),
newStatus ) );
}
private void applyToolBarConfiguration() {
saveChanges.setVisible( actionToolbarButtonsConfigurationProvider.showSaveButton() );
saveChangesAndClose.setVisible( actionToolbarButtonsConfigurationProvider.showSaveAndCloseButton() );
validate.setVisible( actionToolbarButtonsConfigurationProvider.showValidateButton() );
verify.setVisible( actionToolbarButtonsConfigurationProvider.showValidateButton() );
viewSource.setVisible( actionToolbarButtonsConfigurationProvider.showViewSourceButton() );
copy.setVisible( actionToolbarButtonsConfigurationProvider.showCopyButton() );
promoteToGlobal.setVisible( actionToolbarButtonsConfigurationProvider.showPromoteToGlobalButton() );
archive.setVisible( actionToolbarButtonsConfigurationProvider.showArchiveButton() );
delete.setVisible( actionToolbarButtonsConfigurationProvider.showDeleteButton() );
changeStatus.setVisible( actionToolbarButtonsConfigurationProvider.showChangeStatusButton() );
selectWorkingSets.setVisible( actionToolbarButtonsConfigurationProvider.showSelectWorkingSetsButton() );
}
public void setSelectWorkingSetsCommand(Command command) {
selectWorkingSets.setCommand( command );
}
public void setViewSourceCommand(Command command) {
viewSource.setCommand( command );
}
public void setVerifyCommand(Command command) {
verify.setCommand( command );
}
public void setValidateCommand(Command command) {
validate.setCommand( command );
}
public void setSaveChangesCommand(Command command) {
saveChanges.setCommand( command );
}
public void setSaveChangesAndCloseCommand(Command command) {
saveChangesAndClose.setCommand( command );
}
public void setChangeStatusCommand(Command command) {
changeStatus.setCommand( command );
}
public void setDeleteVisible(boolean b) {
delete.setVisible( b );
}
public void setArchiveVisible(boolean b) {
archive.setVisible( b );
}
public void setArciveCommand(final Command archiveCommand) {
archive.setCommand( new Command() {
public void execute() {
if ( Window.confirm( constants.AreYouSureYouWantToArchiveThisItem() + "\n" + constants.ArchiveThisAssetThisWillNotPermanentlyDeleteIt() ) ) {
archiveCommand.execute();
}
}
} );
}
public void setCopyCommand(Command command) {
copy.setCommand( command );
}
public void setDeleteCommand(final Command deleteCommand) {
delete.setCommand( new Command() {
public void execute() {
if ( Window.confirm( constants.DeleteAreYouSure() ) ) {
deleteCommand.execute();
}
}
} );
}
public void setPromtToGlobalCommand(Command command) {
promoteToGlobal.setCommand( command );
}
}