/* * 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; import org.drools.guvnor.client.common.DirtyableComposite; import org.drools.guvnor.client.common.FormStylePopup; import org.drools.guvnor.client.common.LoadingPopup; import org.drools.guvnor.client.common.SmallLabel; import org.drools.guvnor.client.messages.Constants; import org.drools.guvnor.client.resources.Images; import org.drools.guvnor.client.rpc.BuilderResult; import org.drools.guvnor.client.rpc.BuilderResultLine; import org.drools.guvnor.client.util.Format; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** * This widget wraps a rule asset widget, and provides actions to validate and view source. * @author Michael Neale */ public class RuleValidatorWrapper extends DirtyableComposite implements SaveEventListener, EditorWidget { private static Constants constants = GWT.create( Constants.class ); private static Images images = GWT.create( Images.class ); private VerticalPanel layout = new VerticalPanel(); private Widget editor; public RuleValidatorWrapper(Widget editor) { this.editor = editor; layout.add( editor ); layout.setWidth( "100%" ); layout.setHeight( "100%" ); initWidget( layout ); } /** * This will show a popup of error messages in compilation. */ public static void showBuilderErrors(BuilderResult result) { if ( result == null || result.lines == null || result.lines.length == 0 ) { FormStylePopup pop = new FormStylePopup(); pop.setWidth( 200 + "px" ); pop.setTitle( constants.ValidationResultsDotDot() ); HorizontalPanel h = new HorizontalPanel(); h.add( new SmallLabel( Format.format( "<img src='{0}'/><i>{1}</i>", new Image( images.greenTick() ).getUrl(), constants.ItemValidatedSuccessfully() ) ) ); //NON-NLS pop.addRow( h ); pop.show(); } else { FormStylePopup pop = new FormStylePopup( images.packageBuilder(), constants.ValidationResults() ); FlexTable errTable = new FlexTable(); errTable.setStyleName( "build-Results" ); //NON-NLS for ( int i = 0; i < result.lines.length; i++ ) { int row = i; final BuilderResultLine res = result.lines[i]; errTable.setWidget( row, 0, new Image( images.error() ) ); if ( res.assetFormat.equals( "package" ) ) { errTable.setText( row, 1, constants.packageConfigurationProblem() + res.message ); } else { errTable.setText( row, 1, "[" + res.assetName + "] " + res.message ); } } ScrollPanel scroll = new ScrollPanel( errTable ); scroll.setWidth( "100%" ); pop.addRow( scroll ); pop.show(); } LoadingPopup.close(); } public void onSave() { if ( editor instanceof SaveEventListener ) { SaveEventListener el = (SaveEventListener) editor; el.onSave(); } } public void onAfterSave() { if ( editor instanceof SaveEventListener ) { SaveEventListener el = (SaveEventListener) editor; el.onAfterSave(); } } }