/*
* 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.guvnor.client.decisiontable;
import org.drools.guvnor.client.common.SmallLabel;
import org.drools.guvnor.client.messages.Constants;
import org.drools.ide.common.client.modeldriven.dt.ActionCol;
import org.drools.ide.common.client.modeldriven.dt.AttributeCol;
import org.drools.ide.common.client.modeldriven.dt.ConditionCol;
import org.drools.ide.common.client.modeldriven.dt.GuidedDecisionTable;
import org.drools.ide.common.client.modeldriven.dt.MetadataCol;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
/**
*
* @author rikkola
*
*/
public class GroupingsPanel extends HorizontalPanel {
private Constants constants = ((Constants) GWT.create( Constants.class ));
private final ListBox columnsListBox = new ListBox();
private final GuidedDecisionTable guidedDecisionTable;
private final Command refreshCommand;
public GroupingsPanel(final GuidedDecisionTable guidedDecisionTable,
final Command refreshCommand) {
this.guidedDecisionTable = guidedDecisionTable;
this.refreshCommand = refreshCommand;
initColumnsListBox();
add( new SmallLabel( constants.GroupByColumn() ) );
add( columnsListBox );
add( getOkButton() );
}
private void initColumnsListBox() {
columnsListBox.addItem( constants.Description(),
"desc" ); //NON-NLS
addListItems();
if ( guidedDecisionTable.getGroupField() == null ) {
columnsListBox.setSelectedIndex( columnsListBox.getItemCount() - 1 );
}
}
private Button getOkButton() {
Button ok = new Button( constants.Apply() );
ok.addClickHandler( new ClickHandler() {
public void onClick(ClickEvent w) {
guidedDecisionTable.setGroupField( columnsListBox.getValue( columnsListBox.getSelectedIndex() ) );
refreshCommand.execute();
}
} );
return ok;
}
private void addListItems() {
addMetaDataColumns();
addAttributeColumns();
addConditionColumns();
addActionColumns();
addNone();
}
private void addNone() {
columnsListBox.addItem( constants.none(),
"" );
}
private void addActionColumns() {
for ( ActionCol c : guidedDecisionTable.getActionCols() ) {
columnsListBox.addItem( c.getHeader(),
c.getHeader() );
if ( c.getHeader().equals( guidedDecisionTable.getGroupField() ) ) {
columnsListBox.setSelectedIndex( columnsListBox.getItemCount() - 1 );
}
}
}
private void addConditionColumns() {
for ( ConditionCol c : guidedDecisionTable.getConditionCols() ) {
columnsListBox.addItem( c.getHeader(),
c.getHeader() );
if ( c.getHeader().equals( guidedDecisionTable.getGroupField() ) ) {
columnsListBox.setSelectedIndex( columnsListBox.getItemCount() - 1 );
}
}
}
private void addAttributeColumns() {
for ( AttributeCol c : guidedDecisionTable.getAttributeCols() ) {
columnsListBox.addItem( c.attr,
c.attr );
if ( c.attr.equals( guidedDecisionTable.getGroupField() ) ) {
columnsListBox.setSelectedIndex( columnsListBox.getItemCount() - 1 );
}
}
}
private void addMetaDataColumns() {
for ( MetadataCol c : guidedDecisionTable.getMetadataCols() ) {
columnsListBox.addItem( c.attr,
c.attr );
if ( c.attr.equals( guidedDecisionTable.getGroupField() ) ) {
columnsListBox.setSelectedIndex( columnsListBox.getItemCount() - 1 );
}
}
}
public void refresh() {
columnsListBox.clear();
addListItems();
}
}