Example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromSafeConstant

List of usage examples for com.google.gwt.safehtml.shared SafeHtmlUtils fromSafeConstant

Introduction

In this page you can find the example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromSafeConstant.

Prototype

public static SafeHtml fromSafeConstant(String s) 

Source Link

Document

Returns a SafeHtml constructed from a safe string, i.e., without escaping the string.

Usage

From source file:com.novartis.pcs.ontology.webapp.client.view.ApproveRejectComposite.java

License:Apache License

@SuppressWarnings("unchecked")
protected void setupTable() {
    table.setWidth("100%");
    table.addStyleName("gwt-CellTable");
    table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);

    /* getValue gets called during update. Need to combine objects
     * and include a flag that is set when update starts. Using default
     * functionality with Shit key is better anyway and have include
     * note to user so they are aware of it. See addWidgets below.  
    Header<Boolean> checkHeader = new Header<Boolean>(new CheckboxCell()) {
      @Override//ww w . j  a  v  a  2s .c  om
      public Boolean getValue() {
    return false; //selection.getSelectedSet().containsAll(table.getVisibleItems());
            
      }
    };
            
    checkHeader.setUpdater(new ValueUpdater<Boolean>() {
      @Override
      public void update(Boolean value) {
    List<T> displayedItems = table.getVisibleItems();
    for (T pending : displayedItems) {
       selection.setSelected(pending, value);
    }
      }
    });
    */

    if (curator != null && curator.isAuthorised(entity)) {
        Column<T, Boolean> checkColumn = new Column<T, Boolean>(new DisableableCheckboxCell(true, false)) {
            @Override
            public Boolean getValue(T object) {
                return !object.getCreatedBy().equals(curator) ? selection.isSelected(object) : null;
            }
        };

        table.addColumn(checkColumn);
        table.setColumnWidth(checkColumn, 16, Unit.PX);

        table.setSelectionModel(selection, DefaultSelectionEventManager.<T>createCheckboxManager(0));
    } else {
        table.setSelectionModel(new NoSelectionModel<T>(keyProvider));
    }

    addTableColumns(table);
    table.addColumn(new CreatedDateColumn(), "Created");
    table.addColumn(new CreatedByColumn(), "Created By");

    if (curator != null) {
        IconActionCell.Delegate<T> delegate = new IconActionCell.Delegate<T>() {
            @Override
            public void execute(T entity) {
                editView.setEntity(entity);
                editView.show();
            }
        };

        Column<T, T> editColumn = new Column<T, T>(
                new IconActionCell<T>(ImageResources.INSTANCE.editIcon(), delegate)) {
            @Override
            public T getValue(T entity) {
                return entity;
            }
        };
        editColumn.setCellStyleNames("icon-action");
        table.addColumn(editColumn, SafeHtmlUtils.fromSafeConstant("&nbsp;"));
    }

    if (curator != null) {
        IconActionCell.Delegate<T> delegate = new IconActionCell.Delegate<T>() {
            @Override
            public void execute(final T entity) {
                if (entity != null && curator.equals(entity.getCreatedBy())) {
                    if (errorLabel.isVisible()) {
                        errorLabel.setVisible(false);
                    }
                    if (selection != null) {
                        selection.setSelected(entity, false);
                    }
                    processing.add(entity);
                    busyIndicator.busy();
                    service.delete(entity, new AsyncCallback<Void>() {
                        @Override
                        public void onFailure(Throwable caught) {
                            GWT.log("Failed to delete pending item", caught);
                            processing.remove(entity);
                            busyIndicator.idle();
                            if (caught instanceof InvalidEntityException) {
                                InvalidEntityException e = (InvalidEntityException) caught;
                                errorLabel.setText(e.getMessage() + ": " + e.getEntity());
                                errorLabel.setVisible(true);
                            } else {
                                ErrorView.instance().onUncaughtException(caught);
                            }
                        }

                        @Override
                        public void onSuccess(Void nothing) {
                            processing.remove(entity);
                            dataProvider.getList().remove(entity);
                            busyIndicator.idle();
                            fireDeleteEvent(entity);
                        }
                    });
                }
            }
        };

        Column<T, T> deleteColumn = new Column<T, T>(
                new IconActionCell<T>(ImageResources.INSTANCE.deleteIcon(), delegate)) {
            @Override
            public T getValue(T entity) {
                return curator.equals(entity.getCreatedBy()) ? entity : null;
            }
        };
        deleteColumn.setCellStyleNames("icon-action");
        table.addColumn(deleteColumn, SafeHtmlUtils.fromSafeConstant("&nbsp;"));
    }

    ListHandler<T> sortHandler = new ListHandler<T>(dataProvider.getList());
    for (int i = 0; i < table.getColumnCount(); i++) {
        Column<T, ?> column = table.getColumn(i);
        if (column.isSortable() && column instanceof Comparator<?>) {
            sortHandler.setComparator(column, (Comparator<T>) column);
        }
    }
    table.addColumnSortHandler(sortHandler);
    table.getColumnSortList().push(table.getColumn(curator != null && curator.isAuthorised(entity) ? 2 : 1));
}

From source file:com.novartis.pcs.ontology.webapp.client.view.CrossRefPopup.java

License:Apache License

@SuppressWarnings("unchecked")
private void addTableColumns() {
    /*/*from w ww  .  j a v  a2  s. c om*/
     List<String> typeNames = new ArrayList<String>();
     for(Synonym.Type type : Synonym.Type.values()) {
       typeNames.add(type.name());
    }
             
     Column<ControlledVocabularyTerm, String> typeColumn = 
     new Column<ControlledVocabularyTerm, String>(new SelectionCell(typeNames)) {
        @Override
        public String getValue(ControlledVocabularyTerm term) {
     Synonym.Type type = term.getSynonymType();
    if(type == null) {
       type = Synonym.Type.RELATED; 
    }
             
     return type.name();
        }
     };
             
     typeColumn.setFieldUpdater(new FieldUpdater<ControlledVocabularyTerm, String>() {
        @Override
        public void update(int index, ControlledVocabularyTerm term, String typeName) {
     Synonym.Type type = Synonym.Type.valueOf(typeName);  
    term.setSynonymType(type);
        }
     });
     */

    IconActionCell.Delegate<ControlledVocabularyTerm> delegate = new IconActionCell.Delegate<ControlledVocabularyTerm>() {
        @Override
        public void execute(ControlledVocabularyTerm term) {
            eventBus.fireEvent(new SearchEvent(term.getName()));

            if (selection != null) {
                selection.clear();
                selection.setSelected(term, true);
            }
        }
    };

    Column<ControlledVocabularyTerm, ControlledVocabularyTerm> searchColumn = new Column<ControlledVocabularyTerm, ControlledVocabularyTerm>(
            new IconActionCell<ControlledVocabularyTerm>(ImageResources.INSTANCE.searchIcon(), delegate)) {
        @Override
        public ControlledVocabularyTerm getValue(ControlledVocabularyTerm term) {
            return term;
        }
    };
    searchColumn.setCellStyleNames("icon-action");
    /*              
    Column<ControlledVocabularyTerm, ControlledVocabularyTerm> addColumn = 
     new Column<ControlledVocabularyTerm, ControlledVocabularyTerm>(new IconActionCell<ControlledVocabularyTerm>(ImageResources.INSTANCE.addIcon(), this)) {
       @Override
       public ControlledVocabularyTerm getValue(ControlledVocabularyTerm term) {
     return term;
       }
    };
    addColumn.setCellStyleNames("icon-action");
            
    // colspans the table header if we use the same Header object
    Header<String> actionHeader = new Header<String>(new TextCell()) {
      @Override
      public String getValue() {
    return "Action";
      }
    };
    */
    table.setWidth("100%");
    table.setPageSize(10);
    table.addStyleName("gwt-CellTable");
    table.addStyleName("spaced-vert");
    //table.setKeyboardPagingPolicy(KeyboardPagingPolicy.CHANGE_PAGE);
    table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);

    if (curator != null) {
        Column<ControlledVocabularyTerm, Boolean> checkColumn = new Column<ControlledVocabularyTerm, Boolean>(
                new CheckboxCell(true, false)) {
            @Override
            public Boolean getValue(ControlledVocabularyTerm term) {
                return selection.isSelected(term);
            }
        };

        table.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("&nbsp;"));
        table.setColumnWidth(checkColumn, 16, Unit.PX);

        table.setSelectionModel(selection,
                DefaultSelectionEventManager.<ControlledVocabularyTerm>createCheckboxManager(0));
    } else {
        table.setSelectionModel(new NoSelectionModel<ControlledVocabularyTerm>(keyProvider));
    }

    NameColumn nameColumn = new NameColumn();
    nameColumn.setFieldUpdater(new FieldUpdater<ControlledVocabularyTerm, String>() {
        @Override
        public void update(int index, ControlledVocabularyTerm term, String value) {
            linkedTermsView.show(term);
        }
    });
    nameColumn.setCellStyleNames("clickable-text");

    table.addColumn(searchColumn, SafeHtmlUtils.fromSafeConstant("&nbsp;"));
    table.addColumn(nameColumn, "Unmapped Term");
    table.addColumn(new ContextColumn(), "Context");
    table.addColumn(new SourceColumn(), "Source");
    table.addColumn(new UsageColumn(), "Usage");
    // table.addColumn(typeColumn, "Type");

    ListHandler<ControlledVocabularyTerm> sortHandler = new ListHandler<ControlledVocabularyTerm>(
            dataProvider.getList());
    for (int i = 1; i < table.getColumnCount(); i++) {
        Column<ControlledVocabularyTerm, ?> column = table.getColumn(i);
        if (column.isSortable() && column instanceof Comparator<?>) {
            sortHandler.setComparator(column, (Comparator<ControlledVocabularyTerm>) column);
        }
    }

    table.addColumnSortHandler(sortHandler);
    table.getColumnSortList().push(table.getColumn(table.getColumnCount() - 1));
    // Second time to reverse sort order
    table.getColumnSortList().push(table.getColumn(table.getColumnCount() - 1));
}

From source file:com.novartis.pcs.ontology.webapp.client.view.RelatedTermsView.java

License:Apache License

public void setCurator(final Curator curator) {
    final ReplaceRelationshipPopup replaceRelationshipView = new ReplaceRelationshipPopup(service, eventBus);

    IconActionCell.Delegate<Relationship> delegate = new IconActionCell.Delegate<Relationship>() {
        @Override//from  w  w  w  . j a  v a2  s  .  c  o m
        public void execute(final Relationship relationship) {
            switch (relationship.getStatus()) {
            case PENDING:
                service.delete(relationship, new AsyncCallback<Void>() {
                    @Override
                    public void onFailure(Throwable caught) {
                        GWT.log("Failed to delete pending relationship", caught);
                        if (caught instanceof InvalidEntityException) {
                            InvalidEntityException e = (InvalidEntityException) caught;
                            //errorLabel.setText(e.getMessage() + ": " + e.getEntity());
                            //errorLabel.setVisible(true);
                        } else {
                            ErrorView.instance().onUncaughtException(caught);
                        }
                    }

                    @Override
                    public void onSuccess(Void nothing) {
                        eventBus.fireEvent(new RelationshipDeletedEvent(relationship));
                        Term term = relationship.getTerm();
                        Term relatedTerm = relationship.getRelatedTerm();
                        if (term.equals(currentTerm) || relatedTerm.equals(currentTerm)) {
                            eventBus.fireEvent(new ViewTermEvent(currentTerm));
                        }
                    }
                });
                break;
            case APPROVED:
                replaceRelationshipView.setRelationship(relationship);
                replaceRelationshipView.show();
                /*
                service.obsoleteRelationship(relationship.getId(), 0, null, new AsyncCallback<Relationship>() {
                  @Override
                  public void onFailure(Throwable caught) {
                     GWT.log("Failed to obsolete relationship", caught);
                     if(caught instanceof InvalidEntityException) {
                InvalidEntityException e = (InvalidEntityException)caught;
                //errorLabel.setText(e.getMessage() + ": " + e.getEntity());
                //errorLabel.setVisible(true);
                     } else {
                ErrorView.instance().onUncaughtException(caught);
                     }
                  }
                        
                  @Override
                  public void onSuccess(Relationship relationship) {
                     eventBus.fireEvent(new RelationshipUpdatedEvent(relationship));
                     Term term = relationship.getTerm();
                     Term relatedTerm = relationship.getRelatedTerm();
                     if(term.equals(currentTerm) || relatedTerm.equals(currentTerm)) {
                eventBus.fireEvent(new ViewTermEvent(currentTerm));
                     }
                  }
                });
                */
                break;

            }
        }
    };

    Column<Relationship, Relationship> deleteColumn = new Column<Relationship, Relationship>(
            new IconActionCell<Relationship>(ImageResources.INSTANCE.deleteIcon(), delegate)) {
        @Override
        public Relationship getValue(Relationship relationship) {
            switch (relationship.getStatus()) {
            case PENDING:
                return curator.equals(relationship.getCreatedBy()) ? relationship : null;
            case APPROVED:
                return BigDecimal.ONE.equals(curator.getEntityApprovalWeight(Entity.TERM_RELATIONSHIP))
                        ? relationship
                        : null;
            }

            return null;
        }
    };
    deleteColumn.setCellStyleNames("icon-action");
    table.addColumn(deleteColumn, SafeHtmlUtils.fromSafeConstant("&nbsp;"));
}

From source file:com.novartis.pcs.ontology.webapp.client.view.TermSynonymsView.java

License:Apache License

public void setCurator(final Curator curator) {
    final ReplaceSynonymPopup replaceSynonymView = new ReplaceSynonymPopup(service, eventBus);

    IconActionCell.Delegate<Synonym> delegate = new IconActionCell.Delegate<Synonym>() {
        @Override/*  w ww .j a va 2 s.  co m*/
        public void execute(final Synonym synonym) {
            switch (synonym.getStatus()) {
            case PENDING:
                service.delete(synonym, new AsyncCallback<Void>() {
                    @Override
                    public void onFailure(Throwable caught) {
                        GWT.log("Failed to delete pending synonym", caught);
                        if (caught instanceof InvalidEntityException) {
                            InvalidEntityException e = (InvalidEntityException) caught;
                            //errorLabel.setText(e.getMessage() + ": " + e.getEntity());
                            //errorLabel.setVisible(true);
                        } else {
                            ErrorView.instance().onUncaughtException(caught);
                        }
                    }

                    @Override
                    public void onSuccess(Void nothing) {
                        eventBus.fireEvent(new SynonymDeletedEvent(synonym));
                    }
                });
                break;
            case APPROVED:
                replaceSynonymView.setSynonym(synonym);
                replaceSynonymView.show();

                /*
                service.obsoleteSynonym(synonym.getId(), 0, null, new AsyncCallback<Synonym>() {
                  @Override
                  public void onFailure(Throwable caught) {
                     GWT.log("Failed to obsolete synonym", caught);
                     if(caught instanceof InvalidEntityException) {
                InvalidEntityException e = (InvalidEntityException)caught;
                //errorLabel.setText(e.getMessage() + ": " + e.getEntity());
                //errorLabel.setVisible(true);
                     } else {
                ErrorView.instance().onUncaughtException(caught);
                     }
                  }
                        
                  @Override
                  public void onSuccess(Synonym synonym) {
                     eventBus.fireEvent(new SynonymUpdatedEvent(synonym));
                  }
                });
                */
                break;

            }
        }
    };

    Column<Synonym, Synonym> deleteColumn = new Column<Synonym, Synonym>(
            new IconActionCell<Synonym>(ImageResources.INSTANCE.deleteIcon(), delegate)) {
        @Override
        public Synonym getValue(Synonym synonym) {
            Datasource datasource = null;
            if (synonym.getControlledVocabularyTerm() != null) {
                datasource = synonym.getControlledVocabularyTerm().getControlledVocabulary().getDatasource();
            } else if (synonym.getDatasource() != null) {
                datasource = synonym.getDatasource();
            }

            if (datasource != null && datasource.isInternal()) {
                switch (synonym.getStatus()) {
                case PENDING:
                    return curator.equals(synonym.getCreatedBy()) ? synonym : null;
                case APPROVED:
                    return BigDecimal.ONE.equals(curator.getEntityApprovalWeight(Entity.TERM_SYNONYM)) ? synonym
                            : null;
                }
            }
            return null;
        }
    };
    deleteColumn.setCellStyleNames("icon-action");
    table.addColumn(deleteColumn, SafeHtmlUtils.fromSafeConstant("&nbsp;"));
}

From source file:com.sencha.gxt.explorer.client.databinding.BindingConverterExample.java

License:sencha.com license

@Override
public Widget asWidget() {
    if (panel == null) {
        Stock stock = new Stock("wAYNE eNTERPRISES", 93.55, 0.0, 0.0, null, "Manufacturing");

        final Driver driver = GWT.create(Driver.class);
        driver.initialize(this);
        driver.edit(stock);//from  w w w .  j  a  v  a  2  s  . c  o m

        SafeHtml html = SafeHtmlUtils.fromSafeConstant("<div style=\""
                + "padding-bottom: 10px; border-bottom: 1px dashed; margin-bottom: 10px; font-size: small;\">"
                + "This example illustrates how to perform automatic data conversion between a form field and "
                + "a backing data model using the GWT Editor framework." + "</div>");

        TextButton button = new TextButton("Show Converted Model Value", new SelectHandler() {

            @Override
            @SuppressWarnings("deprecation")
            public void onSelect(SelectEvent event) {
                Stock s = driver.flush();
                if (driver.hasErrors()) {
                    new MessageBox("Please correct the errors before converting.").show();
                    return;
                }

                String modelValue = s.getName();
                new MessageBox("Converted Value From Data Model",
                        modelValue != null ? modelValue : " no value ").show();
            }

        });

        VerticalLayoutContainer container = new VerticalLayoutContainer();
        container.add(new HTML(html), new VerticalLayoutData(1, -1));
        container.add(new FieldLabel(nameField, "Name"), new VerticalLayoutData(1, -1));

        panel = new ContentPanel();
        panel.setHeading("Data Binding Converter");
        panel.add(container, new MarginData(10));
        panel.addButton(button);
    }

    return panel;
}

From source file:com.sencha.gxt.explorer.client.grid.WordWrapGridExample.java

License:sencha.com license

@Override
public Widget asWidget() {

    if (fp == null) {
        fp = new FramedPanel();
        fp.setHeadingText("Word Wrap Grid");
        fp.getHeader().setIcon(ExampleImages.INSTANCE.table());
        fp.setPosition(10, 10);// ww  w  . ja va2 s .c  o  m
        fp.setPixelSize(600, 400);
        new Resizable(fp, Dir.E, Dir.SE, Dir.S);

        ToolButton tb = new ToolButton(ToolButton.QUESTION);
        ToolTipConfig ttc = new ToolTipConfig("Example Info",
                "This example illustrates word wrap in grid headings and rows.");
        ttc.setMaxWidth(225);
        tb.setToolTipConfig(ttc);
        fp.addTool(tb);

        List<ColumnConfig<Row, ?>> ccs = new LinkedList<ColumnConfig<Row, ?>>();

        for (int i = 0; i < COLUMN_COUNT; i++) {
            ValueProvider<Row, String> cvp = rvp.getColumnValueProvider(i);
            SafeHtml sh = wrapString(createDummyText());
            ColumnConfig<Row, String> cc = new ColumnConfig<Row, String>(cvp, 200, sh);
            // Use a custom cell renderer to support word wrap in the grid's cells
            cc.setCell(new AbstractCell<String>() {
                @Override
                public void render(Context context, String value, SafeHtmlBuilder sb) {
                    if (value == null || value.isEmpty()) {
                        sb.appendHtmlConstant("&nbsp;");
                    } else {
                        sb.append(wrapString(value));
                    }
                }
            });
            ccs.add(cc);
        }

        final ColumnModel<Row> cm = new ColumnModel<Row>(ccs);

        final ListStore<Row> ls = new ListStore<Row>(new RowKeyProvider());
        ls.setAutoCommit(true);

        int columnCount = ccs.size();
        for (int i = 0; i < ROW_COUNT; i++) {
            Row row = new Row(columnCount);
            for (int j = 0; j < columnCount; j++) {
                row.setValue(j, createDummyText());
            }
            ls.add(row);
        }

        final Grid<Row> g = new Grid<Row>(ls, cm, new WordWrapGridView());
        g.getView().setColumnHeader(new WordWrapColumnHeader<Row>(g, cm));
        g.getView().setColumnLines(true);

        final GridInlineEditing<Row> gie = new GridInlineEditing<Row>(g) {
            protected void onScroll(ScrollEvent event) {
                // Suppress default action, which may result in canceling edit
            }
        };
        gie.setClicksToEdit(ClicksToEdit.TWO);
        gie.addStartEditHandler(new StartEditHandler<Row>() {
            @Override
            public void onStartEdit(StartEditEvent<Row> event) {
                GridCell cell = event.getEditCell();
                ColumnConfig<Row, ?> cc = cm.getColumn(cell.getCol());
                Field<Object> editor = (Field<Object>) gie.getEditor(cc);
                Element rowElement = g.getView().getRow(cell.getRow());
                // Resize the inline editor to the height of the row and style it to match the text
                int height = rowElement.getOffsetHeight() - 1;
                editor.setHeight(height);
                XElement cellElement = g.getView().getCell(cell.getRow(), cell.getCol()).cast();
                Style style = ((TextAreaAppearance) editor.getCell().getAppearance())
                        .getInputElement(editor.getElement()).getStyle();
                String fontSize = cellElement.getComputedStyle("fontSize");
                if (fontSize != null) {
                    style.setProperty("fontSize", fontSize);
                }
                String fontFamily = cellElement.getComputedStyle("fontFamily");
                if (fontFamily != null) {
                    style.setProperty("fontFamily", fontFamily);
                }
                style.setOverflow(Overflow.HIDDEN);
            }
        });

        for (ColumnConfig<Row, ?> cc : ccs) {
            @SuppressWarnings("unchecked")
            ColumnConfig<Row, String> scc = (ColumnConfig<Row, String>) cc;
            final TextArea ta = new TextArea();
            ta.setPreventScrollbars(true);
            ta.addKeyDownHandler(new KeyDownHandler() {
                @Override
                public void onKeyDown(KeyDownEvent event) {
                    // Allow the enter key to end grid inline editing
                    if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
                        Scheduler.get().scheduleFinally(new RepeatingCommand() {
                            @Override
                            public boolean execute() {
                                gie.completeEditing();
                                ta.clear();
                                return false;
                            }
                        });
                    }
                }
            });
            gie.addEditor(scc, ta);
        }

        g.addViewReadyHandler(new ViewReadyHandler() {
            @Override
            public void onViewReady(ViewReadyEvent event) {
                Info.display("onViewReady", "heading width=" + g.getView().getHeader().getOffsetWidth()
                        + ", height=" + g.getView().getHeader().getOffsetHeight());
                g.getView().getHeader().addResizeHandler(new ResizeHandler() {
                    @Override
                    public void onResize(ResizeEvent event) {
                        Info.display("onResize",
                                "heading width=" + event.getWidth() + ", height=" + event.getHeight());
                    }
                });
            }
        });

        fp.setWidget(g);

        fp.addButton(new TextButton("Set Heading Text", new SelectHandler() {
            @Override
            public void onSelect(SelectEvent event) {
                final Window w = new Window();
                w.setHeadingText("Set Heading Text");
                w.setPixelSize(300, 200);
                w.setResizable(false);
                w.setModal(true);
                VerticalLayoutContainer vlc = new VerticalLayoutContainer();
                w.setWidget(vlc);
                final IntegerSpinnerField index = new IntegerSpinnerField();
                index.setMinValue(0);
                index.setMaxValue(COLUMN_COUNT - 1);
                index.setValue(0);
                index.setAllowBlank(false);
                index.setSelectOnFocus(true);
                vlc.add(new FieldLabel(index, "Column Index"), new VerticalLayoutData(1, -1, M1));
                final TextArea text = new TextArea();
                vlc.add(new FieldLabel(text, "Heading Text"), new VerticalLayoutData(1, 1, M2));
                w.addButton(new TextButton("Cancel", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        w.hide();
                    }
                }));
                w.addButton(new TextButton("OK", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        if (index.validate()) {
                            w.hide();
                            SafeHtml newHeading;
                            String newText = text.getValue();
                            if (newText == null) {
                                newHeading = SafeHtmlUtils.fromSafeConstant("&nbsp;");
                            } else {
                                newHeading = wrapString(newText);
                            }
                            ColumnModel<Row> columnModel = g.getColumnModel();
                            columnModel.setColumnHeader(index.getValue(), newHeading);
                        }
                    }
                }));
                w.show();
                w.setFocusWidget(index);
            }
        }));

        fp.addButton(new TextButton("Set Cell Text", new SelectHandler() {
            @Override
            public void onSelect(SelectEvent event) {
                final Window w = new Window();
                w.setHeadingText("Set Cell Text");
                w.setPixelSize(300, 200);
                w.setResizable(false);
                w.setModal(true);
                VerticalLayoutContainer vlc = new VerticalLayoutContainer();
                w.setWidget(vlc);
                final IntegerSpinnerField rowIndex = new IntegerSpinnerField();
                rowIndex.setMinValue(0);
                rowIndex.setMaxValue(ROW_COUNT - 1);
                rowIndex.setValue(0);
                rowIndex.setAllowBlank(false);
                rowIndex.setSelectOnFocus(true);
                vlc.add(new FieldLabel(rowIndex, "Row Index"), new VerticalLayoutData(1, -1, M1));
                final IntegerSpinnerField columnIndex = new IntegerSpinnerField();
                columnIndex.setMinValue(0);
                columnIndex.setMaxValue(COLUMN_COUNT - 1);
                columnIndex.setValue(0);
                columnIndex.setAllowBlank(false);
                columnIndex.setSelectOnFocus(true);
                vlc.add(new FieldLabel(columnIndex, "Column Index"), new VerticalLayoutData(1, -1, M1));
                final TextArea text = new TextArea();
                vlc.add(new FieldLabel(text, "Cell Text"), new VerticalLayoutData(1, 1, M2));
                w.addButton(new TextButton("Cancel", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        w.hide();
                    }
                }));
                w.addButton(new TextButton("OK", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        if (rowIndex.validate() && columnIndex.validate()) {
                            w.hide();
                            String newText = text.getValue();
                            if (newText == null) {
                                newText = "";
                            }
                            Row row = ls.get(rowIndex.getValue());
                            row.setValue(columnIndex.getValue(), newText);
                            ls.update(row);
                        }
                    }
                }));
                w.show();
                w.setFocusWidget(rowIndex);
            }
        }));

        fp.addButton(new TextButton("Set Column Width", new SelectHandler() {
            @Override
            public void onSelect(SelectEvent event) {
                final Window w = new Window();
                w.setHeadingText("Set Column Width");
                w.setPixelSize(300, 150);
                w.setResizable(false);
                w.setModal(true);
                VerticalLayoutContainer vlc = new VerticalLayoutContainer();
                w.setWidget(vlc);
                final IntegerSpinnerField columnIndex = new IntegerSpinnerField();
                columnIndex.setMinValue(0);
                columnIndex.setMaxValue(COLUMN_COUNT - 1);
                columnIndex.setValue(0);
                columnIndex.setAllowBlank(false);
                columnIndex.setSelectOnFocus(true);
                vlc.add(new FieldLabel(columnIndex, "Column Index"), new VerticalLayoutData(1, -1, M1));
                final IntegerSpinnerField width = new IntegerSpinnerField();
                width.setMinValue(0);
                width.setValue(50);
                width.setAllowBlank(false);
                width.setSelectOnFocus(true);
                vlc.add(new FieldLabel(width, "Column Width"), new VerticalLayoutData(1, -1, M2));
                w.addButton(new TextButton("Cancel", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        w.hide();
                    }
                }));
                w.addButton(new TextButton("OK", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        if (columnIndex.validate() && width.validate()) {
                            w.hide();
                            g.getColumnModel().setColumnWidth(columnIndex.getValue(), width.getValue());
                        }
                    }
                }));
                w.show();
                w.setFocusWidget(columnIndex);
            }
        }));

        fp.addButton(new TextButton("Set Heading Height", new SelectHandler() {
            @Override
            public void onSelect(SelectEvent event) {
                final Window w = new Window();
                w.setHeadingText("Set Heading Height");
                w.setPixelSize(300, 250);
                w.setResizable(false);
                w.setModal(true);
                VerticalLayoutContainer vlc = new VerticalLayoutContainer();
                w.setWidget(vlc);
                vlc.add(new HTML(
                        "<span style='font: 12px tahoma,arial,verdana,sans-serif;'>Sets the size of the heading to a fixed height. If this height is less than the height of the heading text, the heading text will be truncated.<br><br>To restore automatic sizing, specify a value of -1.<br><br></span>"),
                        new VerticalLayoutData(1, -1, M1));
                final IntegerSpinnerField height = new IntegerSpinnerField();
                height.setMinValue(-1);
                height.setValue(50);
                height.setAllowBlank(false);
                height.setSelectOnFocus(true);
                vlc.add(new FieldLabel(height, "Heading Height"), new VerticalLayoutData(1, -1, M2));
                w.addButton(new TextButton("Cancel", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        w.hide();
                    }
                }));
                w.addButton(new TextButton("OK", new SelectHandler() {
                    @Override
                    public void onSelect(SelectEvent event) {
                        if (height.validate()) {
                            w.hide();
                            g.getView().getHeader().setHeight(height.getValue());
                        }
                    }
                }));
                w.show();
                w.setFocusWidget(height);
            }
        }));

        fp.addButton(new TextButton("Get Heading Height", new SelectHandler() {
            @Override
            public void onSelect(SelectEvent event) {
                int headerHeight = g.getView().getHeader().getOffsetHeight();
                Info.display("getHeight", "height=" + headerHeight);
            }
        }));

        final ToggleButton fftb = new ToggleButton("Force Fit");
        fftb.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
            @Override
            public void onValueChange(ValueChangeEvent<Boolean> event) {
                if (fftb.getValue()) {
                    columnWidths.save(g);
                    g.getView().setForceFit(true);
                } else {
                    g.getView().setForceFit(false);
                    columnWidths.restore(g);
                }
                g.getView().layout();
            }
        });
        fp.addButton(fftb);

        fp.show();
    }

    return fp;
}

From source file:com.spshop.admin.client.sample.CwCellTable.java

License:Apache License

/**
 * Add the columns to the table./*  www . j  a v  a  2s  .c o  m*/
 */
private void initTableColumns(final SelectionModel<ContactInfo> selectionModel,
        ListHandler<ContactInfo> sortHandler) {
    // Checkbox column. This table will uses a checkbox column for selection.
    // Alternatively, you can call cellTable.setSelectionEnabled(true) to enable
    // mouse selection.
    Column<ContactInfo, Boolean> checkColumn = new Column<ContactInfo, Boolean>(new CheckboxCell(true, false)) {
        @Override
        public Boolean getValue(ContactInfo object) {
            // Get the value from the selection model.
            return selectionModel.isSelected(object);
        }
    };
    cellTable.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
    cellTable.setColumnWidth(checkColumn, 40, Unit.PX);

    // First name.
    Column<ContactInfo, String> firstNameColumn = new Column<ContactInfo, String>(new EditTextCell()) {
        @Override
        public String getValue(ContactInfo object) {
            return object.getFirstName();
        }
    };
    firstNameColumn.setSortable(true);
    sortHandler.setComparator(firstNameColumn, new Comparator<ContactInfo>() {
        public int compare(ContactInfo o1, ContactInfo o2) {
            return o1.getFirstName().compareTo(o2.getFirstName());
        }
    });
    cellTable.addColumn(firstNameColumn, constants.cwCellTableColumnFirstName());
    firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
        public void update(int index, ContactInfo object, String value) {
            // Called when the user changes the value.
            object.setFirstName(value);
            ContactDatabase.get().refreshDisplays();
        }
    });
    cellTable.setColumnWidth(firstNameColumn, 20, Unit.PCT);

    // Last name.
    Column<ContactInfo, String> lastNameColumn = new Column<ContactInfo, String>(new EditTextCell()) {
        @Override
        public String getValue(ContactInfo object) {
            return object.getLastName();
        }
    };
    lastNameColumn.setSortable(true);
    sortHandler.setComparator(lastNameColumn, new Comparator<ContactInfo>() {
        public int compare(ContactInfo o1, ContactInfo o2) {
            return o1.getLastName().compareTo(o2.getLastName());
        }
    });
    cellTable.addColumn(lastNameColumn, constants.cwCellTableColumnLastName());
    lastNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
        public void update(int index, ContactInfo object, String value) {
            // Called when the user changes the value.
            object.setLastName(value);
            ContactDatabase.get().refreshDisplays();
        }
    });
    cellTable.setColumnWidth(lastNameColumn, 20, Unit.PCT);

    // Category.
    final Category[] categories = ContactDatabase.get().queryCategories();
    List<String> categoryNames = new ArrayList<String>();
    for (Category category : categories) {
        categoryNames.add(category.getDisplayName());
    }
    SelectionCell categoryCell = new SelectionCell(categoryNames);
    Column<ContactInfo, String> categoryColumn = new Column<ContactInfo, String>(categoryCell) {
        @Override
        public String getValue(ContactInfo object) {
            return object.getCategory().getDisplayName();
        }
    };
    cellTable.addColumn(categoryColumn, constants.cwCellTableColumnCategory());
    categoryColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
        public void update(int index, ContactInfo object, String value) {
            for (Category category : categories) {
                if (category.getDisplayName().equals(value)) {
                    object.setCategory(category);
                }
            }
            ContactDatabase.get().refreshDisplays();
        }
    });
    cellTable.setColumnWidth(categoryColumn, 130, Unit.PX);

    // Address.
    Column<ContactInfo, String> addressColumn = new Column<ContactInfo, String>(new TextCell()) {
        @Override
        public String getValue(ContactInfo object) {
            return object.getAddress();
        }
    };
    addressColumn.setSortable(true);
    sortHandler.setComparator(addressColumn, new Comparator<ContactInfo>() {
        public int compare(ContactInfo o1, ContactInfo o2) {
            return o1.getAddress().compareTo(o2.getAddress());
        }
    });
    cellTable.addColumn(addressColumn, constants.cwCellTableColumnAddress());
    cellTable.setColumnWidth(addressColumn, 60, Unit.PCT);
}

From source file:com.tasktop.c2c.server.tasks.client.widgets.admin.customfields.CustomFieldValuesEditor.java

License:Open Source License

private void initTableColumns() {

    DelegateCell<String> moveUpCell = new DelegateCell<String>(new DelegateCell.RenderDelegate<String>() {
        @Override/*from   www .j a  va 2 s.  c  o  m*/
        public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
            return SafeHtmlUtils.fromSafeConstant("<span class=\"order-control\"><a class=\"up\"/></span>");
        }
    }, new DelegateCell.ActionDelegate<String>() {
        @Override
        public void execute(Cell.Context object) {
            int index = object.getIndex();
            if (index > 0) {
                dataProvider.getList().get(index).setSortkey((short) (index - 1));
                dataProvider.getList().get(index - 1).setSortkey((short) index);
                Collections.sort(dataProvider.getList());
                refreshDisplays();
            }
        }
    });

    Column<CustomFieldValue, String> moveUpColumn = new Column<CustomFieldValue, String>(moveUpCell) {

        @Override
        public String getValue(CustomFieldValue object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, CustomFieldValue object, SafeHtmlBuilder sb) {
            if (context.getIndex() != 0) {
                super.render(context, object, sb);
            }
        }
    };
    cellTable.addColumn(moveUpColumn);
    cellTable.setColumnWidth(moveUpColumn, 22, Unit.PX);

    DelegateCell<String> moveDownCell = new DelegateCell<String>(new DelegateCell.RenderDelegate<String>() {
        @Override
        public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
            return SafeHtmlUtils.fromSafeConstant("<span class=\"order-control\"><a class=\"down\"/></span>");
        }
    }, new DelegateCell.ActionDelegate<String>() {
        @Override
        public void execute(Cell.Context object) {
            Short index = (short) object.getIndex();
            if (index < dataProvider.getList().size() - 1) {
                dataProvider.getList().get(index).setSortkey((short) (index + 1));
                dataProvider.getList().get(index + 1).setSortkey((short) index);
                Collections.sort(dataProvider.getList());
                refreshDisplays();
            }
        }
    });

    Column<CustomFieldValue, String> moveDownColumn = new Column<CustomFieldValue, String>(moveDownCell) {

        @Override
        public String getValue(CustomFieldValue object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, CustomFieldValue object, SafeHtmlBuilder sb) {
            if (context.getIndex() != dataProvider.getList().size() - 1) {
                super.render(context, object, sb);
            }
        }
    };
    cellTable.addColumn(moveDownColumn);
    cellTable.setColumnWidth(moveDownColumn, 22, Unit.PX);

    Column<CustomFieldValue, String> nameColumn = new Column<CustomFieldValue, String>(new TextInputCell()) {

        @Override
        public String getValue(CustomFieldValue value) {
            return value.getValue();
        }
    };
    nameColumn.setFieldUpdater(new FieldUpdater<CustomFieldValue, String>() {

        @Override
        public void update(int index, CustomFieldValue customFieldValue, String value) {

            customFieldValue.setValue(value);
        }
    });
    cellTable.addColumn(nameColumn);

    DelegateCell<String> removeCell = new DelegateCell<String>(new DelegateCell.RenderDelegate<String>() {
        @Override
        public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
            final CustomFieldValue referenced = dataProvider.getList().get(context.getIndex());
            if (referenced != null && "---".equals(referenced.getValue())) {
                return SafeHtmlUtils.fromSafeConstant("<a class=\"delete-disabled\"><span/></a>");
            }
            return SafeHtmlUtils.fromSafeConstant("<a class=\"misc-icon cancel\"><span/></a>");
        }
    }, new DelegateCell.ActionDelegate<String>() {
        @Override
        public void execute(final Cell.Context object) {
            final CustomFieldValue toRemove = dataProvider.getList().get(object.getIndex());
            if (toRemove == null) {
                return;
            }
            if ("---".equals(toRemove.getValue())) {
                return;
            }
            dataProvider.getList().remove(toRemove);

        }
    });
    Column<CustomFieldValue, String> removeColumn = new Column<CustomFieldValue, String>(removeCell) {

        @Override
        public String getValue(CustomFieldValue object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, CustomFieldValue object, SafeHtmlBuilder sb) {
            if (dataProvider.getList().size() == 1) {
                sb.appendHtmlConstant("<a><span/></a>");
            } else {
                super.render(context, object, sb);
            }
        }
    };
    cellTable.addColumn(removeColumn);
    cellTable.setColumnWidth(removeColumn, 30, Unit.PX);

    DelegateCell<String> addCell = new DelegateCell<String>(new DelegateCell.RenderDelegate<String>() {
        @Override
        public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
            return SafeHtmlUtils.fromSafeConstant("<a class=\"misc-icon add right\"><span/></a>");
        }
    }, new DelegateCell.ActionDelegate<String>() {
        @Override
        public void execute(Cell.Context object) {
            addNewValue();
        }
    });
    Column<CustomFieldValue, String> addColumn = new Column<CustomFieldValue, String>(addCell) {
        @Override
        public String getValue(CustomFieldValue object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, CustomFieldValue object, SafeHtmlBuilder sb) {
            if (context.getIndex() == dataProvider.getList().size() - 1) {
                super.render(context, object, sb);
            } else {
                sb.appendHtmlConstant("<a><span/></a>");
            }
        }
    };
    cellTable.addColumn(addColumn);
    cellTable.setColumnWidth(addColumn, 30, Unit.PX);
}

From source file:com.tasktop.c2c.server.tasks.client.widgets.admin.products.ProjectAdminTasksEditView.java

License:Open Source License

private void createReleasesTable() {
    milestoneTable = new CellTable<Milestone>(10, resources);
    milestoneTable.setWidth("320px", true);
    DelegateCell<String> moveReleaseUpCell = new DelegateCell<String>(
            new DelegateCell.RenderDelegate<String>() {
                @Override//from   ww  w .j ava  2s  . co m
                public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
                    return SafeHtmlUtils
                            .fromSafeConstant("<span class=\"order-control\"><a class=\"up\"/></span>");
                }
            }, new DelegateCell.ActionDelegate<String>() {
                @Override
                public void execute(Cell.Context object) {
                    int index = object.getIndex();
                    if (index > 0) {
                        milestonesEditor.getList().get(index).setSortkey((short) (index - 1));
                        milestonesEditor.getList().get(index - 1).setSortkey((short) index);
                        Collections.sort(milestonesEditor.getList());
                        milestoneTable.setRowData(milestonesEditor.getList());
                    }
                }
            });
    Column<Milestone, String> moveReleaseUpColumn = new Column<Milestone, String>(moveReleaseUpCell) {

        @Override
        public String getValue(Milestone object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, Milestone object, SafeHtmlBuilder sb) {
            if (context.getIndex() != 0) {
                super.render(context, object, sb);
            }
        }
    };
    milestoneTable.addColumn(moveReleaseUpColumn);
    milestoneTable.setColumnWidth(moveReleaseUpColumn, 22, Unit.PX);

    DelegateCell<String> moveReleaseDownCell = new DelegateCell<String>(
            new DelegateCell.RenderDelegate<String>() {
                @Override
                public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
                    return SafeHtmlUtils
                            .fromSafeConstant("<span class=\"order-control\"><a class=\"down\"/></span>");
                }
            }, new DelegateCell.ActionDelegate<String>() {
                @Override
                public void execute(Cell.Context object) {
                    Short index = (short) object.getIndex();
                    if (index < milestonesEditor.getList().size() - 1) {
                        milestonesEditor.getList().get(index).setSortkey((short) (index + 1));
                        milestonesEditor.getList().get(index + 1).setSortkey(index);
                        Collections.sort(milestonesEditor.getList());
                        milestoneTable.setRowData(milestonesEditor.getList());
                    }
                }
            });
    Column<Milestone, String> moveReleaseDownColumn = new Column<Milestone, String>(moveReleaseDownCell) {

        @Override
        public String getValue(Milestone object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, Milestone object, SafeHtmlBuilder sb) {
            if (context.getIndex() != milestonesEditor.getList().size() - 1) {
                super.render(context, object, sb);
            }
        }
    };
    milestoneTable.addColumn(moveReleaseDownColumn);
    milestoneTable.setColumnWidth(moveReleaseDownColumn, 22, Unit.PX);

    DelegateCell<String> moveReleaseToTopCell = new DelegateCell<String>(
            new DelegateCell.RenderDelegate<String>() {
                @Override
                public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
                    return SafeHtmlUtils
                            .fromSafeConstant("<span class=\"order-control\"><a class=\"top\"/></span>");
                }
            }, new DelegateCell.ActionDelegate<String>() {
                @Override
                public void execute(Cell.Context object) {
                    int index = object.getIndex();
                    Milestone topRelease = milestonesEditor.getList().get(index);
                    milestonesEditor.getList().remove(topRelease);
                    milestonesEditor.getList().add(0, topRelease);
                    int i = 0;
                    for (Milestone milestone : milestonesEditor.getList()) {
                        milestone.setSortkey((short) i);
                        i++;
                    }
                    Collections.sort(milestonesEditor.getList());
                    milestoneTable.setRowData(milestonesEditor.getList());
                }
            });
    Column<Milestone, String> moveReleaseToTopColumn = new Column<Milestone, String>(moveReleaseToTopCell) {

        @Override
        public String getValue(Milestone object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, Milestone object, SafeHtmlBuilder sb) {
            if (context.getIndex() != 0) {
                super.render(context, object, sb);
            }
        }
    };
    milestoneTable.addColumn(moveReleaseToTopColumn);
    milestoneTable.setColumnWidth(moveReleaseToTopColumn, 22, Unit.PX);

    Column<Milestone, String> releaseVersionColumn = addColumn(
            new TextBoxCell(new TextBoxCell.TemplateDelegate() {
                @Override
                public SafeHtml getHtml(Context context, String string) {
                    SafeHtml releaseVerHtml = template.releaseVersion(tasksMessages.releaseVersion(), string);
                    String fieldName = "value";

                    if (ValidationUtils.hasError(context.getKey(), fieldName, errorTable)) {
                        String errorMsg = ValidationUtils.getErrorMessage(context.getKey(), fieldName,
                                errorTable);

                        return template.errorWrapper(releaseVerHtml, SafeHtmlUtils.fromString(errorMsg));
                    } else {
                        return releaseVerHtml;
                    }
                }
            }), new GetValue<Milestone, String>() {
                @Override
                public String getValue(Milestone object) {
                    return milestonesEditor.getEditors()
                            .get(milestonesEditor.getList().indexOf(object)).valueEditor.getValue();
                }
            });
    releaseVersionColumn.setFieldUpdater(new FieldUpdater<Milestone, String>() {
        @Override
        public void update(int index, Milestone object, String value) {
            Milestone currentDefaultMilestone = productDefaultRelease.getValue();
            for (Milestone milestone : presenter.getProduct().getMilestones()) {
                if (milestone.getId().equals(object.getId())) {
                    milestone.setValue(value);
                    break;
                }
            }
            for (Milestone milestone : presenter.getProduct().getMilestones()) {
                if (milestone.getId().equals(currentDefaultMilestone.getId())) {
                    productDefaultRelease.asEditor().getValue().setValue(value);
                    break;
                }
            }

            milestonesEditor.getEditors().get(index).valueEditor.setValue(value);
            productDefaultRelease.setAcceptableValues(presenter.getProduct().getMilestones());
        }
    });
    milestoneTable.addColumn(releaseVersionColumn);
    milestoneTable.setColumnWidth(releaseVersionColumn, 250, Unit.PX);

    DelegateCell<String> removeReleaseCell = new DelegateCell<String>(
            new DelegateCell.RenderDelegate<String>() {
                @Override
                public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
                    final Milestone referenced = milestonesEditor.getList().get(context.getIndex());
                    if (referenced != null && "---".equals(referenced.getValue())) {
                        return SafeHtmlUtils.fromSafeConstant("<a class=\"delete-disabled\"><span/></a>");
                    }
                    return SafeHtmlUtils.fromSafeConstant("<a class=\"misc-icon cancel\"><span/></a>");
                }
            }, new DelegateCell.ActionDelegate<String>() {
                @Override
                public void execute(final Cell.Context object) {
                    final Milestone toRemove = milestonesEditor.getList().get(object.getIndex());
                    if (toRemove == null) {
                        return;
                    }
                    if ("---".equals(toRemove.getValue())) {
                        return;
                    }
                    presenter.deleteMilestone(toRemove.getId(), new ClientCallback<Void>() {
                        @Override
                        public void onReturn(Void aVoid) {
                            for (Milestone milestone : presenter.getProduct().getMilestones()) {
                                if (milestone.getId().equals(toRemove.getId())) {
                                    presenter.getProduct().getMilestones().remove(milestone);
                                    break;
                                }
                            }
                            productDefaultRelease.setAcceptableValues(presenter.getProduct().getMilestones());
                            milestonesEditor.getList().remove(toRemove);
                            milestoneTable.setRowData(milestonesEditor.getList());
                        }
                    });
                }
            });
    Column<Milestone, String> removeReleaseColumn = new Column<Milestone, String>(removeReleaseCell) {

        @Override
        public String getValue(Milestone object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, Milestone object, SafeHtmlBuilder sb) {
            if (milestoneTable.getRowCount() == 1) {
                sb.appendHtmlConstant("<a><span/></a>");
            } else {
                super.render(context, object, sb);
            }
        }
    };
    milestoneTable.addColumn(removeReleaseColumn);
    milestoneTable.setColumnWidth(removeReleaseColumn, 30, Unit.PX);

    DelegateCell<String> addReleaseCell = new DelegateCell<String>(new DelegateCell.RenderDelegate<String>() {
        @Override
        public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
            return SafeHtmlUtils.fromSafeConstant("<a class=\"misc-icon add right\"><span/></a>");
        }
    }, new DelegateCell.ActionDelegate<String>() {
        @Override
        public void execute(Cell.Context object) {
            Milestone newMilestone = presenter.createNewTransientMilestone(milestonesEditor.getList());
            milestonesEditor.getList().add(newMilestone);
            milestoneTable.setRowData(milestonesEditor.getList());
            presenter.getProduct().getMilestones().add(ProjectAdminTasksUtil.duplicateMilestone(newMilestone));
            productDefaultRelease.setAcceptableValues(presenter.getProduct().getMilestones());
        }
    });
    Column<Milestone, String> addReleaseColumn = new Column<Milestone, String>(addReleaseCell) {
        @Override
        public String getValue(Milestone object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, Milestone object, SafeHtmlBuilder sb) {
            if (context.getIndex() == milestoneTable.getRowCount() - 1) {
                super.render(context, object, sb);
            } else {
                sb.appendHtmlConstant("<a><span/></a>");
            }
        }
    };
    milestoneTable.addColumn(addReleaseColumn);
    milestoneTable.setColumnWidth(addReleaseColumn, 30, Unit.PX);
}

From source file:com.tasktop.c2c.server.tasks.client.widgets.admin.products.ProjectAdminTasksEditView.java

License:Open Source License

private void createComponentsTable() {
    componentsTable = new CellTable<Component>(10, resources);
    componentListDataProvider.addDataDisplay(componentsTable);
    componentsTable.setWidth("540px", true);
    Column<Component, String> nameColumn = addColumn(new TextBoxCell(new TextBoxCell.TemplateDelegate() {
        @Override//from   w w w  . j  a v  a  2  s  . c o m
        public SafeHtml getHtml(Context context, String string) {

            SafeHtml componentNameHtml = template.componentName(commonProfileMessages.name(), string);
            String fieldName = "name";

            if (ValidationUtils.hasError(context.getKey(), fieldName, errorTable)) {
                String errorMsg = ValidationUtils.getErrorMessage(context.getKey(), fieldName, errorTable);

                return template.errorWrapper(componentNameHtml, SafeHtmlUtils.fromString(errorMsg));
            } else {
                return componentNameHtml;
            }
        }
    }), new GetValue<Component, String>() {
        @Override
        public String getValue(Component object) {
            return componentsEditor.getEditors().get(componentsEditor.getList().indexOf(object)).nameEditor
                    .getValue();
        }
    });
    nameColumn.setFieldUpdater(new FieldUpdater<Component, String>() {
        @Override
        public void update(int index, Component object, String value) {
            componentsEditor.getEditors().get(index).nameEditor.setValue(value);
        }
    });
    componentsTable.addColumn(nameColumn, SafeHtmlUtils.fromSafeConstant("<h4>Name</h4>"));
    componentsTable.setColumnWidth(nameColumn, 250, Unit.PX);
    Column<Component, String> descriptionColumn = addColumn(new TextBoxCell(new TextBoxCell.TemplateDelegate() {
        @Override
        public SafeHtml getHtml(Context context, String string) {
            SafeHtml componentDescHtml = template.componentDescription(tasksMessages.description(), string);
            String fieldName = "description";

            if (ValidationUtils.hasError(context.getKey(), fieldName, errorTable)) {
                String errorMsg = ValidationUtils.getErrorMessage(context.getKey(), fieldName, errorTable);

                return template.errorWrapper(componentDescHtml, SafeHtmlUtils.fromString(errorMsg));
            } else {
                return componentDescHtml;
            }
        }
    }), new GetValue<Component, String>() {
        @Override
        public String getValue(Component object) {
            return componentsEditor.getEditors()
                    .get(componentsEditor.getList().indexOf(object)).descriptionEditor.getValue();
        }
    });
    descriptionColumn.setFieldUpdater(new FieldUpdater<Component, String>() {
        @Override
        public void update(int index, Component object, String value) {
            componentsEditor.getEditors().get(index).descriptionEditor.setValue(value);
        }
    });
    componentsTable.addColumn(descriptionColumn,
            SafeHtmlUtils.fromSafeConstant("<h4>" + tasksMessages.description() + "</h4>"));
    componentsTable.setColumnWidth(descriptionColumn, 250, Unit.PX);

    DelegateCell<String> removeComponentCell = new DelegateCell<String>(
            new DelegateCell.RenderDelegate<String>() {
                @Override
                public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
                    return SafeHtmlUtils.fromSafeConstant("<a class=\"misc-icon cancel\"><span/></a>");
                }
            }, new DelegateCell.ActionDelegate<String>() {
                @Override
                public void execute(final Cell.Context object) {
                    presenter.deleteComponent(componentsEditor.getList().get(object.getIndex()).getId(),
                            new ClientCallback<Void>() {
                                @Override
                                public void onReturn(Void aVoid) {
                                    componentsEditor.getList().remove(object.getIndex());
                                    componentsTable.setRowData(componentsEditor.getList());
                                }
                            });
                }
            });
    Column<Component, String> removeComponentColumn = new Column<Component, String>(removeComponentCell) {

        @Override
        public String getValue(Component object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, Component object, SafeHtmlBuilder sb) {
            if (componentsTable.getRowCount() == 1) {
                sb.appendHtmlConstant("<a><span/></a>");
            } else {
                super.render(context, object, sb);
            }
        }
    };
    componentsTable.addColumn(removeComponentColumn);
    componentsTable.setColumnWidth(removeComponentColumn, 30, Unit.PX);

    DelegateCell<String> addComponentCell = new DelegateCell<String>(new DelegateCell.RenderDelegate<String>() {
        @Override
        public SafeHtml render(Cell.Context context, String value, SafeHtmlBuilder sb) {
            return SafeHtmlUtils.fromSafeConstant("<a class=\"misc-icon add right\"><span/></a>");
        }
    }, new DelegateCell.ActionDelegate<String>() {
        @Override
        public void execute(Cell.Context object) {
            componentsEditor.getList().add(presenter.createNewTransientComponent(componentsEditor.getList()));
            componentsTable.setRowData(componentsEditor.getList());
        }
    });
    Column<Component, String> addComponentColumn = new Column<Component, String>(addComponentCell) {
        @Override
        public String getValue(Component object) {
            return null;
        }

        @Override
        public void render(Cell.Context context, Component object, SafeHtmlBuilder sb) {
            if (context.getIndex() == componentsTable.getRowCount() - 1) {
                super.render(context, object, sb);
            } else {
                sb.appendHtmlConstant("<a><span/></a>");
            }
        }
    };
    componentsTable.addColumn(addComponentColumn);
    componentsTable.setColumnWidth(addComponentColumn, 25, Unit.PX);
}