List of usage examples for com.google.gwt.view.client SingleSelectionModel SingleSelectionModel
public SingleSelectionModel()
From source file:org.jbpm.datamodeler.editor.client.editors.DataModelBrowser.java
License:Apache License
public void setDataModel(DataModelTO dataModel) { this.dataModel = dataModel; this.dataObjects = dataModel.getDataObjects(); modelName.setText(dataModel.getName()); // We create a new selection model due to a bug found in GWT when we change e.g. from one data object with 9 rows // to one with 3 rows and the table was sorted. // Several tests has been done and the final workaround (not too bad) we found is to // 1) sort the table again // 2) create a new selection model // 3) populate the table with new items // 3) select the first row SingleSelectionModel selectionModel2 = new SingleSelectionModel<DataObjectTO>(); dataObjectsTable.setSelectionModel(selectionModel2); selectionModel2.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override//from w ww . j a v a2s . c o m public void onSelectionChange(SelectionChangeEvent event) { if (!skipNextOnChange) { DataObjectTO selectedObjectTO = ((SingleSelectionModel<DataObjectTO>) dataObjectsTable .getSelectionModel()).getSelectedObject(); notifyObjectSelected(selectedObjectTO); } skipNextOnChange = false; } }); ArrayList<DataObjectTO> sortBuffer = new ArrayList<DataObjectTO>(); sortBuffer.addAll(dataObjects); Collections.sort(sortBuffer, new DataObjectComparator()); dataObjectsProvider.getList().clear(); dataObjectsProvider.getList().addAll(sortBuffer); dataObjectsProvider.flush(); dataObjectsProvider.refresh(); dataObjectsTable.getColumnSortList() .push(new ColumnSortList.ColumnSortInfo(dataObjectsTable.getColumn(1), true)); if (dataObjects.size() > 0) { dataObjectsTable.setKeyboardSelectedRow(0); selectionModel2.setSelected(sortBuffer.get(0), true); } // Set the first row selected again. Sounds crazy, but it's part of the workaround, don't remove this line. if (dataObjects.size() > 0) { dataObjectsTable.setKeyboardSelectedRow(0); } }
From source file:org.jbpm.datamodeler.editor.client.editors.DataObjectBrowser.java
License:Apache License
public DataObjectBrowser() { initWidget(uiBinder.createAndBindUi(this)); objectName.setText(Constants.INSTANCE.objectEditor_objectUnknown()); dataObjectPropertiesProvider.setList(dataObjectProperties); //Init data objects table dataObjectPropertiesTable.setEmptyTableWidget( new com.github.gwtbootstrap.client.ui.Label(Constants.INSTANCE.objectEditor_emptyTable())); //Init delete column ClickableImageResourceCell clickableImageResourceCell = new ClickableImageResourceCell(true); final TooltipCellDecorator<ImageResource> decorator = new TooltipCellDecorator<ImageResource>( clickableImageResourceCell); decorator.setText(Constants.INSTANCE.objectEditor_action_deleteProperty()); final Column<ObjectPropertyTO, ImageResource> deletePropertyColumnImg = new Column<ObjectPropertyTO, ImageResource>( decorator) {// www . j a va 2 s .c o m @Override public ImageResource getValue(final ObjectPropertyTO global) { return ImagesResources.INSTANCE.Delete(); } }; deletePropertyColumnImg.setFieldUpdater(new FieldUpdater<ObjectPropertyTO, ImageResource>() { public void update(final int index, final ObjectPropertyTO property, final ImageResource value) { deleteDataObjectProperty(property, index); } }); dataObjectPropertiesTable.addColumn(deletePropertyColumnImg); dataObjectPropertiesTable.setColumnWidth(deletePropertyColumnImg, 20, Style.Unit.PX); //Init property name column final TextColumn<ObjectPropertyTO> propertyNameColumn = new TextColumn<ObjectPropertyTO>() { @Override public void render(Cell.Context context, ObjectPropertyTO object, SafeHtmlBuilder sb) { SafeHtml startDiv = new SafeHtml() { @Override public String asString() { return "<div style=\"cursor: pointer;\">"; } }; SafeHtml endDiv = new SafeHtml() { @Override public String asString() { return "</div>"; } }; sb.append(startDiv); super.render(context, object, sb); sb.append(endDiv); } @Override public String getValue(final ObjectPropertyTO objectProperty) { return objectProperty.getName(); } }; propertyNameColumn.setSortable(true); dataObjectPropertiesTable.addColumn(propertyNameColumn, Constants.INSTANCE.objectEditor_columnName()); //dataObjectPropertiesTable.setColumnWidth(propertyNameColumn, 100, Style.Unit.PX); ColumnSortEvent.ListHandler<ObjectPropertyTO> propertyNameColHandler = new ColumnSortEvent.ListHandler<ObjectPropertyTO>( dataObjectPropertiesProvider.getList()); propertyNameColHandler.setComparator(propertyNameColumn, new ObjectPropertyComparator("name")); dataObjectPropertiesTable.addColumnSortHandler(propertyNameColHandler); //Init property type column final Column<ObjectPropertyTO, String> propertyTypeColumn = new Column<ObjectPropertyTO, String>(typeCell) { @Override public String getValue(final ObjectPropertyTO objectProperty) { return propertyTypeDisplay(objectProperty); } }; propertyTypeColumn.setSortable(true); dataObjectPropertiesTable.addColumn(propertyTypeColumn, Constants.INSTANCE.objectEditor_columnType()); //dataObjectPropertiesTable.setColumnWidth(propertyTypeColumn, 100, Style.Unit.PX); ColumnSortEvent.ListHandler<ObjectPropertyTO> propertyTypeColHandler = new ColumnSortEvent.ListHandler<ObjectPropertyTO>( dataObjectPropertiesProvider.getList()); propertyTypeColHandler.setComparator(propertyTypeColumn, new ObjectPropertyComparator("className")); dataObjectPropertiesTable.addColumnSortHandler(propertyTypeColHandler); dataObjectPropertiesTable.getColumnSortList().push(propertyTypeColumn); dataObjectPropertiesTable.getColumnSortList().push(propertyNameColumn); //Init the selection model SingleSelectionModel<ObjectPropertyTO> selectionModel = new SingleSelectionModel<ObjectPropertyTO>(); dataObjectPropertiesTable.setSelectionModel(selectionModel); selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { ObjectPropertyTO selectedPropertyTO = ((SingleSelectionModel<ObjectPropertyTO>) dataObjectPropertiesTable .getSelectionModel()).getSelectedObject(); notifyFieldSelected(selectedPropertyTO); } }); dataObjectPropertiesTable .setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.BOUND_TO_SELECTION); dataObjectPropertiesProvider.addDataDisplay(dataObjectPropertiesTable); dataObjectPropertiesProvider.refresh(); newPropertyIsMultiple.setVisible(false); newPropertyIsMultiple.setValue(false); newPropertyBasicType.setValue(true); newPropertyButton.setIcon(IconType.PLUS_SIGN); }
From source file:org.jbpm.datamodeler.editor.client.editors.DataObjectBrowser.java
License:Apache License
private void setDataObject(DataObjectTO dataObject) { this.dataObject = dataObject; objectName.setText(dataObject.getName() + "::" + dataObject.getPackageName()); //We create a new selection model due to a bug found in GWT when we change e.g. from one data object with 9 rows // to one with 3 rows and the table was sorted. //Several tests has been done and the final workaround (not too bad) we found is to // 1) sort the table again // 2) create a new selection model // 3) populate the table with new items // 3) select the first row SingleSelectionModel selectionModel2 = new SingleSelectionModel<ObjectPropertyTO>(); dataObjectPropertiesTable.setSelectionModel(selectionModel2); selectionModel2.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override// w w w . ja v a 2 s . c om public void onSelectionChange(SelectionChangeEvent event) { ObjectPropertyTO selectedPropertyTO = ((SingleSelectionModel<ObjectPropertyTO>) dataObjectPropertiesTable .getSelectionModel()).getSelectedObject(); notifyFieldSelected(selectedPropertyTO); } }); ArrayList<ObjectPropertyTO> sortBuffer = new ArrayList<ObjectPropertyTO>(); sortBuffer.addAll(dataObject.getProperties()); Collections.sort(sortBuffer, new ObjectPropertyComparator("name")); dataObjectProperties = dataObject.getProperties(); dataObjectPropertiesProvider.getList().clear(); dataObjectPropertiesProvider.getList().addAll(sortBuffer); dataObjectPropertiesProvider.flush(); dataObjectPropertiesProvider.refresh(); dataObjectPropertiesTable.getColumnSortList() .push(new ColumnSortList.ColumnSortInfo(dataObjectPropertiesTable.getColumn(1), true)); if (dataObjectProperties.size() > 0) { dataObjectPropertiesTable.setKeyboardSelectedRow(0); selectionModel2.setSelected(sortBuffer.get(0), true); } //set the first row selected again. Sounds crazy, but's part of the workaround, don't remove this line. if (dataObjectProperties.size() > 0) { dataObjectPropertiesTable.setKeyboardSelectedRow(0); } if (dataObjectProperties.size() == 0) { //there are no properties. //fire an empty property seleccion event in order to notify the notifyFieldSelected(null); } }
From source file:org.kie.guvnor.guided.dtable.client.wizard.pages.ActionSetFieldsPageViewImpl.java
License:Apache License
private void initialiseAvailablePatterns() { availablePatternsContainer.add(availablePatternsWidget); availablePatternsWidget.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); availablePatternsWidget.setMinimumWidth(180); final Label lstEmpty = new Label(Constants.INSTANCE.DecisionTableWizardNoAvailablePatterns()); lstEmpty.setStyleName(WizardCellListResources.INSTANCE.cellListStyle().cellListEmptyItem()); availablePatternsWidget.setEmptyListWidget(lstEmpty); final SingleSelectionModel<Pattern52> selectionModel = new SingleSelectionModel<Pattern52>(); availablePatternsWidget.setSelectionModel(selectionModel); selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override/*from w ww . j a va 2s .c om*/ public void onSelectionChange(final SelectionChangeEvent event) { availablePatternsSelection = selectionModel.getSelectedObject(); presenter.selectPattern(availablePatternsSelection); } }); }
From source file:org.kie.guvnor.guided.dtable.client.wizard.pages.FactPatternConstraintsPageViewImpl.java
License:Apache License
private void initialiseAvailablePatterns() { availablePatternsContainer.add(availablePatternsWidget); availablePatternsWidget.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); availablePatternsWidget.setMinimumWidth(175); final Label lstEmpty = new Label(Constants.INSTANCE.DecisionTableWizardNoAvailablePatterns()); lstEmpty.setStyleName(WizardCellListResources.INSTANCE.cellListStyle().cellListEmptyItem()); availablePatternsWidget.setEmptyListWidget(lstEmpty); final SingleSelectionModel<Pattern52> selectionModel = new SingleSelectionModel<Pattern52>(); availablePatternsWidget.setSelectionModel(selectionModel); selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override/*from ww w .j av a 2 s . c o m*/ public void onSelectionChange(final SelectionChangeEvent event) { availablePatternsSelection = selectionModel.getSelectedObject(); presenter.selectPattern(availablePatternsSelection); } }); }
From source file:org.kie.uberfire.plugin.client.editor.DynamicMenuEditor.java
License:Apache License
private void initTable(final AbstractCellTable<DynamicMenuItem> exampleTable) { exampleTable.setEmptyTableWidget(new Label("No menu items.")); final TextColumn<DynamicMenuItem> activityCol = new TextColumn<DynamicMenuItem>() { @Override//www . ja v a 2s .c o m public String getValue(DynamicMenuItem object) { return String.valueOf(object.getActivityId()); } }; exampleTable.addColumn(activityCol, "Activity"); final TextColumn<DynamicMenuItem> labelCol = new TextColumn<DynamicMenuItem>() { @Override public String getValue(DynamicMenuItem object) { return object.getMenuLabel(); } }; exampleTable.addColumn(labelCol, "Label"); final ButtonCell buttonCell = new ButtonCell(IconType.REMOVE, ButtonType.DANGER, ButtonSize.MINI); final TooltipCellDecorator<String> decorator = new TooltipCellDecorator<String>(buttonCell); decorator.setText("delete row, if click"); Column<DynamicMenuItem, String> buttonCol = new Column<DynamicMenuItem, String>(decorator) { @Override public String getValue(DynamicMenuItem object) { return "delete"; } }; buttonCol.setFieldUpdater(new FieldUpdater<DynamicMenuItem, String>() { @Override public void update(final int index, final DynamicMenuItem object, final String value) { dataProvider.getList().remove(object); dataProvider.flush(); dataProvider.refresh(); } }); exampleTable.addColumn(buttonCol); final SingleSelectionModel<DynamicMenuItem> selectionModel = new SingleSelectionModel<DynamicMenuItem>(); selectionModel.addSelectionChangeHandler(new Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { DynamicMenuItem person = selectionModel.getSelectedObject(); DynamicMenuEditor.this.driver.edit(person); } }); exampleTable .setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.BOUND_TO_SELECTION); exampleTable.setSelectionModel(selectionModel); dataProvider.addDataDisplay(exampleTable); }
From source file:org.kie.workbench.common.screens.datamodeller.client.widgets.DataModelBrowser.java
License:Apache License
public DataModelBrowser() { initWidget(uiBinder.createAndBindUi(this)); modelName.setText(Constants.INSTANCE.modelBrowser_modelUnknown()); dataObjectsProvider.setList(dataObjects); dataObjectsTable.setEmptyTableWidget( new com.github.gwtbootstrap.client.ui.Label(Constants.INSTANCE.modelBrowser_emptyTable())); // Init delete column ClickableImageResourceCell clickableImageResourceCell = new ClickableImageResourceCell(true); final TooltipCellDecorator<ImageResource> decorator = new TooltipCellDecorator<ImageResource>( clickableImageResourceCell); decorator.setText(Constants.INSTANCE.modelBrowser_action_deleteDataObject()); final Column<DataObjectTO, ImageResource> deleteDataObjectColumnImg = new Column<DataObjectTO, ImageResource>( decorator) {//from w ww . j a v a 2 s . co m @Override public ImageResource getValue(final DataObjectTO global) { return ImagesResources.INSTANCE.Delete(); } }; deleteDataObjectColumnImg.setFieldUpdater(new FieldUpdater<DataObjectTO, ImageResource>() { public void update(final int index, final DataObjectTO object, final ImageResource value) { deleteDataObject(object, index); } }); dataObjectsTable.addColumn(deleteDataObjectColumnImg); dataObjectsTable.setColumnWidth(deleteDataObjectColumnImg, 20, Style.Unit.PX); // Init data object column final TextColumn<DataObjectTO> dataObjectColumn = new TextColumn<DataObjectTO>() { @Override public void render(Cell.Context context, DataObjectTO object, SafeHtmlBuilder sb) { SafeHtml startDiv = new SafeHtml() { @Override public String asString() { return "<div style=\"cursor: pointer;\">"; } }; SafeHtml endDiv = new SafeHtml() { @Override public String asString() { return "</div>"; } }; sb.append(startDiv); super.render(context, object, sb); sb.append(endDiv); } @Override public String getValue(final DataObjectTO dataObject) { return DataModelerUtils.getDataObjectUILabel(dataObject); } }; dataObjectColumn.setSortable(true); dataObjectsTable.addColumn(dataObjectColumn, Constants.INSTANCE.modelBrowser_columnName()); ColumnSortEvent.ListHandler<DataObjectTO> dataObjectNameColHandler = new ColumnSortEvent.ListHandler<DataObjectTO>( dataObjectsProvider.getList()); dataObjectNameColHandler.setComparator(dataObjectColumn, new DataObjectComparator()); dataObjectsTable.addColumnSortHandler(dataObjectNameColHandler); dataObjectsTable.getColumnSortList().push(dataObjectColumn); //Init the selection model SingleSelectionModel<DataObjectTO> selectionModel = new SingleSelectionModel<DataObjectTO>(); selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { if (!skipNextOnChange) { DataObjectTO selectedObjectTO = ((SingleSelectionModel<DataObjectTO>) dataObjectsTable .getSelectionModel()).getSelectedObject(); notifyObjectSelected(selectedObjectTO); } skipNextOnChange = false; } }); dataObjectsTable .setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.BOUND_TO_SELECTION); dataObjectsTable.setSelectionModel(selectionModel); dataObjectsProvider.addDataDisplay(dataObjectsTable); dataObjectsProvider.refresh(); newEntityButton.setIcon(IconType.PLUS_SIGN); }
From source file:org.kie.workbench.common.screens.datamodeller.client.widgets.DataModelBrowser.java
License:Apache License
private void loadDataModel(DataModelTO dataModel) { this.dataObjects = dataModel.getDataObjects(); modelName.setText(dataModel.getName()); // We create a new selection model due to a bug found in GWT when we change e.g. from one data object with 9 rows // to one with 3 rows and the table was sorted. // Several tests has been done and the final workaround (not too bad) we found is to // 1) sort the table again // 2) create a new selection model // 3) populate the table with new items // 3) select the first row SingleSelectionModel selectionModel2 = new SingleSelectionModel<DataObjectTO>(); dataObjectsTable.setSelectionModel(selectionModel2); selectionModel2.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override//from w ww .jav a2 s .c o m public void onSelectionChange(SelectionChangeEvent event) { if (!skipNextOnChange) { DataObjectTO selectedObjectTO = ((SingleSelectionModel<DataObjectTO>) dataObjectsTable .getSelectionModel()).getSelectedObject(); notifyObjectSelected(selectedObjectTO); } skipNextOnChange = false; } }); ArrayList<DataObjectTO> sortBuffer = new ArrayList<DataObjectTO>(); sortBuffer.addAll(dataObjects); Collections.sort(sortBuffer, new DataObjectComparator()); dataObjectsProvider.getList().clear(); dataObjectsProvider.getList().addAll(sortBuffer); dataObjectsProvider.flush(); dataObjectsProvider.refresh(); dataObjectsTable.getColumnSortList() .push(new ColumnSortList.ColumnSortInfo(dataObjectsTable.getColumn(1), true)); if (dataObjects.size() > 0) { dataObjectsTable.setKeyboardSelectedRow(0); selectionModel2.setSelected(sortBuffer.get(0), true); } // Set the first row selected again. Sounds crazy, but it's part of the workaround, don't remove this line. if (dataObjects.size() > 0) { dataObjectsTable.setKeyboardSelectedRow(0); } }
From source file:org.kie.workbench.common.screens.datamodeller.client.widgets.DataObjectBrowser.java
License:Apache License
public DataObjectBrowser() { initWidget(uiBinder.createAndBindUi(this)); objectButton.setType(ButtonType.LINK); objectButton.addClickHandler(new ClickHandler() { @Override/* w w w . j av a2 s . c o m*/ public void onClick(ClickEvent event) { lastSelectedRow = dataObjectPropertiesTable.getKeyboardSelectedRow(); showingObject = true; ObjectProperty currentSelection = ((SingleSelectionModel<ObjectProperty>) dataObjectPropertiesTable .getSelectionModel()).getSelectedObject(); if (currentSelection != null) { dataObjectPropertiesTable.getSelectionModel().setSelected(currentSelection, false); } notifyObjectSelected(); } }); dataObjectPropertiesProvider.setList(new ArrayList<ObjectProperty>()); //Init data objects table dataObjectPropertiesTable.setEmptyTableWidget( new com.github.gwtbootstrap.client.ui.Label(Constants.INSTANCE.objectBrowser_emptyTable())); //Init property name column final TextColumn<ObjectProperty> propertyNameColumn = new TextColumn<ObjectProperty>() { @Override public void render(Cell.Context context, ObjectProperty object, SafeHtmlBuilder sb) { SafeHtml startDiv = new SafeHtml() { @Override public String asString() { return "<div style=\"cursor: pointer;\">"; } }; SafeHtml endDiv = new SafeHtml() { @Override public String asString() { return "</div>"; } }; sb.append(startDiv); super.render(context, object, sb); sb.append(endDiv); } @Override public String getValue(final ObjectProperty objectProperty) { return objectProperty.getName(); } }; propertyNameColumn.setSortable(true); dataObjectPropertiesTable.addColumn(propertyNameColumn, Constants.INSTANCE.objectBrowser_columnName()); //dataObjectPropertiesTable.setColumnWidth(propertyNameColumn, 100, Style.Unit.PX); dataObjectPropertiesTable.setColumnWidth(propertyNameColumn, 30, Style.Unit.PCT); ColumnSortEvent.ListHandler<ObjectProperty> propertyNameColHandler = new ColumnSortEvent.ListHandler<ObjectProperty>( dataObjectPropertiesProvider.getList()); propertyNameColHandler.setComparator(propertyNameColumn, new ObjectPropertyComparator("name")); dataObjectPropertiesTable.addColumnSortHandler(propertyNameColHandler); //Init property Label column final TextColumn<ObjectProperty> propertyLabelColumn = new TextColumn<ObjectProperty>() { @Override public void render(Cell.Context context, ObjectProperty object, SafeHtmlBuilder sb) { SafeHtml startDiv = new SafeHtml() { @Override public String asString() { return "<div style=\"cursor: pointer;\">"; } }; SafeHtml endDiv = new SafeHtml() { @Override public String asString() { return "</div>"; } }; sb.append(startDiv); super.render(context, object, sb); sb.append(endDiv); } @Override public String getValue(final ObjectProperty objectProperty) { return AnnotationValueHandler.getStringValue(objectProperty, MainDomainAnnotations.LABEL_ANNOTATION, MainDomainAnnotations.VALUE_PARAM); } }; propertyLabelColumn.setSortable(true); dataObjectPropertiesTable.addColumn(propertyLabelColumn, Constants.INSTANCE.objectBrowser_columnLabel()); dataObjectPropertiesTable.setColumnWidth(propertyLabelColumn, 30, Style.Unit.PCT); ColumnSortEvent.ListHandler<ObjectProperty> propertyLabelColHandler = new ColumnSortEvent.ListHandler<ObjectProperty>( dataObjectPropertiesProvider.getList()); propertyNameColHandler.setComparator(propertyLabelColumn, new ObjectPropertyComparator("label")); dataObjectPropertiesTable.addColumnSortHandler(propertyLabelColHandler); //Init property type browsing column ClickableImageResourceCell typeImageCell = new ClickableImageResourceCell(true, 25); final TooltipCellDecorator<ImageResource> typeImageDecorator = new TooltipCellDecorator<ImageResource>( typeImageCell); typeImageDecorator.setText(Constants.INSTANCE.objectBrowser_action_goToDataObjectDefinition()); final Column<ObjectProperty, ImageResource> typeImageColumn = new Column<ObjectProperty, ImageResource>( typeImageDecorator) { @Override public ImageResource getValue(final ObjectProperty property) { if (!property.isBaseType() && !getDataObject().getClassName().equals(property.getClassName()) && !getDataModel().isExternal(property.getClassName())) { return ImagesResources.INSTANCE.BrowseObject(); } else { return null; } } }; typeImageColumn.setFieldUpdater(new FieldUpdater<ObjectProperty, ImageResource>() { public void update(final int index, final ObjectProperty property, final ImageResource value) { onTypeCellSelection(property); } }); dataObjectPropertiesTable.addColumn(typeImageColumn); //Init property type column final TextColumn<ObjectProperty> propertyTypeColumn = new TextColumn<ObjectProperty>() { @Override public void render(Cell.Context context, ObjectProperty object, SafeHtmlBuilder sb) { SafeHtml startDiv = new SafeHtml() { @Override public String asString() { return "<div style=\"cursor: pointer;\">"; } }; SafeHtml endDiv = new SafeHtml() { @Override public String asString() { return "</div>"; } }; sb.append(startDiv); super.render(context, object, sb); sb.append(endDiv); } @Override public String getValue(final ObjectProperty objectProperty) { return propertyTypeDisplay(objectProperty); } }; propertyTypeColumn.setSortable(true); dataObjectPropertiesTable.addColumn(propertyTypeColumn, Constants.INSTANCE.objectBrowser_columnType()); dataObjectPropertiesTable.setColumnWidth(propertyTypeColumn, 40, Style.Unit.PCT); //Init delete column ClickableImageResourceCell deleteImageCell = new ClickableImageResourceCell(true, 25); final TooltipCellDecorator<ImageResource> decorator = new TooltipCellDecorator<ImageResource>( deleteImageCell); decorator.setPlacement(Placement.LEFT); decorator.setText(Constants.INSTANCE.objectBrowser_action_deleteProperty()); final Column<ObjectProperty, ImageResource> deletePropertyColumnImg = new Column<ObjectProperty, ImageResource>( decorator) { @Override public ImageResource getValue(final ObjectProperty global) { if (!isReadonly()) { return ImagesResources.INSTANCE.Delete(); } else { return null; } } }; deletePropertyColumnImg.setFieldUpdater(new FieldUpdater<ObjectProperty, ImageResource>() { public void update(final int index, final ObjectProperty property, final ImageResource value) { if (!isReadonly()) { checkAndDeleteDataObjectProperty(property, index); } } }); dataObjectPropertiesTable.addColumn(deletePropertyColumnImg); ColumnSortEvent.ListHandler<ObjectProperty> propertyTypeColHandler = new ColumnSortEvent.ListHandler<ObjectProperty>( dataObjectPropertiesProvider.getList()); propertyTypeColHandler.setComparator(propertyTypeColumn, new ObjectPropertyComparator("className")); dataObjectPropertiesTable.addColumnSortHandler(propertyTypeColHandler); dataObjectPropertiesTable.getColumnSortList().push(propertyNameColumn); //Init the selection model SingleSelectionModel<ObjectProperty> selectionModel = new SingleSelectionModel<ObjectProperty>(); dataObjectPropertiesTable.setSelectionModel(selectionModel); selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { ObjectProperty selectedProperty = ((SingleSelectionModel<ObjectProperty>) dataObjectPropertiesTable .getSelectionModel()).getSelectedObject(); notifyFieldSelected(selectedProperty); } }); dataObjectPropertiesTable .setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.BOUND_TO_SELECTION); dataObjectPropertiesTable.addCellPreviewHandler(new CellPreviewEvent.Handler<ObjectProperty>() { @Override public void onCellPreview(CellPreviewEvent<ObjectProperty> event) { if (showingObject && "click".equals(event.getNativeEvent().getType())) { int selectedRow = dataObjectPropertiesTable.getKeyboardSelectedRow(); if (lastSelectedRow >= 0 && lastSelectedRow == selectedRow) { ObjectProperty selectedProperty = dataObjectPropertiesProvider.getList().get(selectedRow); ((SingleSelectionModel<ObjectProperty>) dataObjectPropertiesTable.getSelectionModel()) .setSelected(selectedProperty, true); } showingObject = false; } } }); dataObjectPropertiesProvider.addDataDisplay(dataObjectPropertiesTable); dataObjectPropertiesProvider.refresh(); newPropertyButton.setIcon(IconType.PLUS_SIGN); setReadonly(true); }
From source file:org.kie.workbench.common.screens.datamodeller.client.widgets.DataObjectBrowser.java
License:Apache License
private void setDataObject(DataObject dataObject) { this.dataObject = dataObject; refreshObjectSelector(dataObject);/*from w ww.j a va 2 s . c om*/ //We create a new selection model due to a bug found in GWT when we change e.g. from one data object with 9 rows // to one with 3 rows and the table was sorted. //Several tests has been done and the final workaround (not too bad) we found is to // 1) sort the table again // 2) create a new selection model // 3) populate the table with new items // 3) select the first row SingleSelectionModel selectionModel2 = new SingleSelectionModel<ObjectProperty>(); dataObjectPropertiesTable.setSelectionModel(selectionModel2); selectionModel2.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { ObjectProperty selectedProperty = ((SingleSelectionModel<ObjectProperty>) dataObjectPropertiesTable .getSelectionModel()).getSelectedObject(); notifyFieldSelected(selectedProperty); } }); List<ObjectProperty> dataObjectProperties = (dataObject != null) ? DataModelerUtils.getManagedProperties(dataObject) : Collections.<ObjectProperty>emptyList(); ArrayList<ObjectProperty> sortBuffer = new ArrayList<ObjectProperty>(); if (dataObject != null) { sortBuffer.addAll(dataObjectProperties); } Collections.sort(sortBuffer, new ObjectPropertyComparator("name")); dataObjectPropertiesProvider.getList().clear(); dataObjectPropertiesProvider.getList().addAll(sortBuffer); dataObjectPropertiesProvider.flush(); dataObjectPropertiesProvider.refresh(); dataObjectPropertiesTable.getColumnSortList() .push(new ColumnSortList.ColumnSortInfo(dataObjectPropertiesTable.getColumn(2), true)); if (dataObjectProperties.size() > 0) { dataObjectPropertiesTable.setKeyboardSelectedRow(0); selectionModel2.setSelected(sortBuffer.get(0), true); } //set the first row selected again. Sounds crazy, but's part of the workaround, don't remove this line. if (dataObjectProperties.size() > 0) { dataObjectPropertiesTable.setKeyboardSelectedRow(0); } }