/* * Copyright 2017 Red Hat, Inc. and/or its affiliates. * * 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.workbench.screens.guided.dtable.client.widget.table.columns.control; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.Widget; import org.drools.workbench.models.guided.dtable.shared.model.AttributeCol52; import org.drools.workbench.screens.guided.dtable.client.resources.i18n.GuidedDecisionTableConstants; import org.drools.workbench.screens.guided.dtable.client.widget.DefaultValueWidgetFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.GuidedDecisionTableModellerView; import org.drools.workbench.screens.guided.rule.client.editor.RuleAttributeWidget; import org.gwtbootstrap3.client.ui.CheckBox; import org.gwtbootstrap3.client.ui.html.Span; public class AttributeColumnConfigRow { protected AttributeColumnConfigRowView view; private CheckBox useRowNumberCheckBox; private CheckBox reverseOrderCheckBox; private CheckBox hideColumnCheckBox; public AttributeColumnConfigRow() { view = new AttributeColumnConfigRowView(); } public void init(AttributeCol52 attributeColumn, final GuidedDecisionTableModellerView.Presenter presenter) { view.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); view.addColumnLabel(attributeColumn); final AttributeCol52 originalColumn = attributeColumn; if (attributeColumn.getAttribute().equals(RuleAttributeWidget.SALIENCE_ATTR)) { useRowNumberCheckBox = view.addUseRowNumberCheckBox(attributeColumn, presenter.isActiveDecisionTableEditable(), new ClickHandler() { @Override public void onClick(ClickEvent event) { final AttributeCol52 editedColumn = originalColumn.cloneColumn(); editedColumn.setUseRowNumber(useRowNumberCheckBox.getValue()); reverseOrderCheckBox.setEnabled(useRowNumberCheckBox.getValue()); presenter.getActiveDecisionTable().updateColumn(originalColumn, editedColumn); } }); view.add(new Span("(")); reverseOrderCheckBox = view.addReverseOrderCheckBox(attributeColumn, presenter.isActiveDecisionTableEditable(), new ClickHandler() { @Override public void onClick(ClickEvent event) { final AttributeCol52 editedColumn = originalColumn.cloneColumn(); editedColumn.setReverseOrder(reverseOrderCheckBox.getValue()); presenter.getActiveDecisionTable().updateColumn(originalColumn, editedColumn); } }); view.add(new Span(")")); } view.addDefaultValue(attributeColumn, presenter.isActiveDecisionTableEditable(), new DefaultValueWidgetFactory.DefaultValueChangedEventHandler() { @Override public void onDefaultValueChanged(DefaultValueWidgetFactory.DefaultValueChangedEvent event) { final AttributeCol52 editedColumn = originalColumn.cloneColumn(); editedColumn.setDefaultValue(event.getEditedDefaultValue()); presenter.getActiveDecisionTable().updateColumn(originalColumn, editedColumn); } }); hideColumnCheckBox = view.addHideColumnCheckBox(attributeColumn, new ClickHandler() { @Override public void onClick(ClickEvent event) { final AttributeCol52 editedColumn = originalColumn.cloneColumn(); editedColumn.setHideColumn(hideColumnCheckBox.getValue()); presenter.getActiveDecisionTable().updateColumn(originalColumn, editedColumn); } }); addRemoveAttributeButton(attributeColumn, presenter); } private void addRemoveAttributeButton(final AttributeCol52 attributeColumn, final GuidedDecisionTableModellerView.Presenter presenter) { final ClickHandler handler = event -> { final String confirmationMessage = GuidedDecisionTableConstants.INSTANCE.DeleteActionColumnWarning(attributeColumn.getAttribute()); if (view.confirmDeleteColumnActionDialogue(confirmationMessage)) { presenter.getActiveDecisionTable().deleteColumn(attributeColumn); } }; final boolean isEditable = presenter.isActiveDecisionTableEditable(); view.addRemoveAttributeButton(handler, isEditable); } public Widget getView() { return view; } }