/** * Copyright 2010 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.eclipse.rulebuilder.ui; import org.drools.ide.common.client.modeldriven.brl.FreeFormLine; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.events.IHyperlinkListener; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ImageHyperlink; public class ActionInsertFreeFormLineWidget extends Widget { private FreeFormLine action; private final boolean rhs; public ActionInsertFreeFormLineWidget(FormToolkit toolkit, Composite comp, RuleModeller ruleModeller, final FreeFormLine action, int i, boolean rhs) { super( comp, toolkit, ruleModeller, i ); this.rhs = rhs; GridLayout l = new GridLayout(); l.numColumns = 2; parent.setLayout( l ); createTextfield( comp, action ); addRemoveFieldAction( parent, i ); toolkit.paintBordersFor( parent ); this.action = action; } private void createTextfield(Composite comp, final FreeFormLine action) { final Text text = toolkit.createText( comp, action.text ); GridData gd = new GridData( GridData.FILL_HORIZONTAL ); gd.grabExcessHorizontalSpace = true; gd.minimumWidth = 100; text.setLayoutData( gd ); text.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent e) { getModeller().setDirty( true ); action.text = text.getText(); } } ); } private void addRemoveFieldAction(Composite constraintComposite, final int row) { ImageHyperlink delLink = addImage( constraintComposite, "icons/delete_item_small.gif" ); delLink.setToolTipText( "Remove this field action" ); delLink.addHyperlinkListener( new IHyperlinkListener() { public void linkActivated(HyperlinkEvent e) { MessageBox dialog = new MessageBox( Display.getCurrent().getActiveShell(), SWT.YES | SWT.NO | SWT.ICON_WARNING ); dialog.setMessage( "Remove this item?" ); dialog.setText( "Remove this item?" ); if ( dialog.open() == SWT.YES ) { if ( rhs ) { getModeller().getModel().removeRhsItem( row ); getModeller().setDirty( true ); getModeller().reloadRhs(); } else { getModeller().getModel().removeLhsItem( row ); getModeller().setDirty( true ); getModeller().reloadLhs(); } } } public void linkEntered(HyperlinkEvent e) { } public void linkExited(HyperlinkEvent e) { } } ); } }