Example usage for com.google.gwt.user.client.ui Label addClickHandler

List of usage examples for com.google.gwt.user.client.ui Label addClickHandler

Introduction

In this page you can find the example usage for com.google.gwt.user.client.ui Label addClickHandler.

Prototype

public HandlerRegistration addClickHandler(ClickHandler handler) 

Source Link

Usage

From source file:org.sigmah.client.ui.view.project.logframe.grid.IndicatorListWidget.java

License:Open Source License

public IndicatorListWidget(EventBus eventBus, final int databaseId, final LogFrameElementDTO element) {
    this.eventBus = eventBus;
    this.databaseId = databaseId;
    this.element = element;

    table = new FlexTable();
    table.setWidth("100%");
    table.setStyleName("log-frame-indicators-table");
    updateTable();/*from  w w  w  .j a va2 s. com*/

    final Label newIndicatorLink = new Label(I18N.CONSTANTS.newIndicator());
    newIndicatorLink.addStyleName(CLICKABLE_STYLE);
    newIndicatorLink.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            showNewIndicatorForm();
        }
    });

    final Grid grid = new Grid(2, 1);
    grid.setCellSpacing(0);
    grid.setWidget(0, 0, table);
    grid.setWidget(1, 0, newIndicatorLink);

    initWidget(grid);

    eventBus.addHandler(UpdateEvent.getType(), new UpdateHandler() {

        @Override
        public void onUpdate(UpdateEvent event) {
            if (event.concern(UpdateEvent.INDICATOR_UPDATED)) {
                onIndicatorUpdatedExternally((Integer) event.getParam(0),
                        (Map<String, Object>) event.getParam(1));

            } else if (event.concern(UpdateEvent.INDICATOR_REMOVED)) {
                onIndicatorDeletedExternally((Integer) event.getParam(0));
            }
        }
    });
}

From source file:org.sigmah.client.ui.view.project.logframe.grid.IndicatorListWidget.java

License:Open Source License

private void updateRow(final int rowIndex, final IndicatorDTO indicator) {

    final Label label = new Label(indicator.getName());

    label.addClickHandler(new ClickHandler() {

        @Override//from   w  w w. ja  va  2 s .co m
        public void onClick(ClickEvent event) {
            onIndicatorClicked(rowIndex, indicator);
        }
    });
    label.addMouseOverHandler(new MouseOverHandler() {

        @Override
        public void onMouseOver(MouseOverEvent event) {
            label.addStyleName(CLICKABLE_STYLE);
        }
    });
    label.addMouseOutHandler(new MouseOutHandler() {

        @Override
        public void onMouseOut(MouseOutEvent event) {
            label.removeStyleName(CLICKABLE_STYLE);
        }
    });
    table.setWidget(rowIndex, 0, label);
    table.getFlexCellFormatter().setStyleName(rowIndex, 0, "log-frame-indicators-table-cell");

    table.setHTML(rowIndex, 1, indicator.getSourceOfVerification());
    table.getFlexCellFormatter().setStyleName(rowIndex, 1, "log-frame-indicators-table-cell");
}

From source file:org.sigmah.client.ui.view.project.logframe.ProjectLogFrameGrid.java

License:Open Source License

/**
 * Initializes table content.// www  . j a v  a2s  . c  om
 */
protected void initTable() {

    resetTable();

    // Table parameters.
    table.setCellPadding(0);
    table.setCellSpacing(0);

    // Columns sizes.
    table.getColumnFormatter().setWidth(0, "100px");
    table.getColumnFormatter().setWidth(1, "50px");
    table.getColumnFormatter().setWidth(2, "50px");
    table.getColumnFormatter().setWidth(3, "22%");
    table.getColumnFormatter().setWidth(4, "18%");
    table.getColumnFormatter().setWidth(5, "18%");
    table.getColumnFormatter().setWidth(6, "22%");

    // Columns headers labels.
    final Label interventionLogicLabel = new Label(I18N.CONSTANTS.logFrameInterventionLogic());
    final Label indicatorsLabel = new Label(I18N.CONSTANTS.indicators());
    final Label meansOfVerificationLabel = new Label(I18N.CONSTANTS.logFrameMeansOfVerification());
    final Label risksAndAssumptionsLabel = new Label(I18N.CONSTANTS.logFrameRisksAndAssumptions());

    table.getFlexCellFormatter().setColSpan(0, 1, 2);
    table.setWidget(0, 2, interventionLogicLabel);
    table.setWidget(0, 3, indicatorsLabel);
    table.setWidget(0, 4, meansOfVerificationLabel);
    table.setWidget(0, 5, risksAndAssumptionsLabel);

    // Rows headers labels (and actions).

    // Specific objectives.
    final Label specificObjectivesLabel = new Label(I18N.CONSTANTS.logFrameSpecificObjectives() + " ("
            + I18N.CONSTANTS.logFrameSpecificObjectivesCode() + ")");

    final Label specificObjectivesButton = new Label(I18N.CONSTANTS.logFrameAddRow());
    specificObjectivesButton.addStyleName(CSS_ADD_ACTION_STYLE_NAME);
    specificObjectivesButton.setTitle(I18N.CONSTANTS.logFrameAddOS());
    specificObjectivesButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addSpecificObjective();
        }
    });

    final Label specificObjectivesGroupsButton = new Label(I18N.CONSTANTS.logFrameAddGroup());
    specificObjectivesGroupsButton.addStyleName(CSS_ADD_GROUP_ACTION_STYLE_NAME);
    specificObjectivesGroupsButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addSpecificObjectivesGroup();
        }
    });

    // Are groups enabled ?
    if (!logFrameModel.getEnableSpecificObjectivesGroups()) {
        specificObjectivesGroupsButton.setVisible(false);
    }

    final Grid specificObjectivesGrid = new Grid(3, 1);
    specificObjectivesGrid.setWidth("100%");
    specificObjectivesGrid.setCellPadding(0);
    specificObjectivesGrid.setCellSpacing(0);
    specificObjectivesGrid.setWidget(0, 0, specificObjectivesLabel);

    if (!readOnly) {
        specificObjectivesGrid.setWidget(1, 0, specificObjectivesButton);
        specificObjectivesGrid.setWidget(2, 0, specificObjectivesGroupsButton);
    }

    // Expected results.
    final Label exceptedResultsLabel = new Label(I18N.CONSTANTS.logFrameExceptedResults() + " ("
            + I18N.CONSTANTS.logFrameExceptedResultsCode() + ")");

    final Label expectedResultsButton = new Label(I18N.CONSTANTS.logFrameAddRow());
    expectedResultsButton.addStyleName(CSS_ADD_ACTION_STYLE_NAME);
    expectedResultsButton.setTitle(I18N.CONSTANTS.logFrameAddER());
    expectedResultsButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addExpectedResult();
        }
    });

    final Label expectedResultsGroupsButton = new Label(I18N.CONSTANTS.logFrameAddGroup());
    expectedResultsGroupsButton.addStyleName(CSS_ADD_GROUP_ACTION_STYLE_NAME);
    expectedResultsGroupsButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addExpectedResultsGroup();
        }
    });

    // Are groups enabled ?
    if (!logFrameModel.getEnableExpectedResultsGroups()) {
        expectedResultsGroupsButton.setVisible(false);
    }

    final Grid exceptedResultsGrid = new Grid(3, 1);
    exceptedResultsGrid.setWidth("100%");
    exceptedResultsGrid.setCellPadding(0);
    exceptedResultsGrid.setCellSpacing(0);
    exceptedResultsGrid.setWidget(0, 0, exceptedResultsLabel);

    if (!readOnly) {
        exceptedResultsGrid.setWidget(1, 0, expectedResultsButton);
        exceptedResultsGrid.setWidget(2, 0, expectedResultsGroupsButton);
    }

    // Activities.
    final Label activitiesLabel = new Label(I18N.CONSTANTS.logFrameActivities());

    final Label activitiesButton = new Label(I18N.CONSTANTS.logFrameAddRow());
    activitiesButton.addStyleName(CSS_ADD_ACTION_STYLE_NAME);
    activitiesButton.setTitle(I18N.CONSTANTS.logFrameAddA());
    activitiesButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addActivity();
        }
    });

    final Label activitiesGroupsButton = new Label(I18N.CONSTANTS.logFrameAddGroup());
    activitiesGroupsButton.addStyleName(CSS_ADD_GROUP_ACTION_STYLE_NAME);
    activitiesGroupsButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addActivitiesGroup();
        }
    });

    // Are groups enabled ?
    if (!logFrameModel.getEnableActivitiesGroups()) {
        activitiesGroupsButton.setVisible(false);
    }

    final Grid activitiesGrid = new Grid(3, 1);
    activitiesGrid.setWidth("100%");
    activitiesGrid.setCellPadding(0);
    activitiesGrid.setCellSpacing(0);
    activitiesGrid.setWidget(0, 0, activitiesLabel);

    if (!readOnly) {
        activitiesGrid.setWidget(1, 0, activitiesButton);
        activitiesGrid.setWidget(2, 0, activitiesGroupsButton);
    }

    // Prerequisites.
    final Label prerequisitesLabel = new Label(I18N.CONSTANTS.logFramePrerequisites());

    final Label prerequisitesButton = new Label(I18N.CONSTANTS.logFrameAddRow());
    prerequisitesButton.addStyleName(CSS_ADD_ACTION_STYLE_NAME);
    prerequisitesButton.setTitle(I18N.CONSTANTS.logFrameAddP());
    prerequisitesButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addPrerequisite();
        }
    });

    final Label prerequisitesGroupButton = new Label(I18N.CONSTANTS.logFrameAddGroup());
    prerequisitesGroupButton.addStyleName(CSS_ADD_GROUP_ACTION_STYLE_NAME);
    prerequisitesGroupButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            addPrerequisitesGroup();
        }
    });

    // Are groups enabled ?
    if (!logFrameModel.getEnablePrerequisitesGroups()) {
        prerequisitesGroupButton.setVisible(false);
    }

    final Grid prerequisitesGrid = new Grid(3, 1);
    prerequisitesGrid.setWidth("100%");
    prerequisitesGrid.setCellPadding(0);
    prerequisitesGrid.setCellSpacing(0);
    prerequisitesGrid.setWidget(0, 0, prerequisitesLabel);

    if (!readOnly) {
        prerequisitesGrid.setWidget(1, 0, prerequisitesButton);
        prerequisitesGrid.setWidget(2, 0, prerequisitesGroupButton);
    }

    table.setWidget(1, 0, specificObjectivesGrid);
    table.setWidget(2, 0, exceptedResultsGrid);
    table.setWidget(3, 0, activitiesGrid);
    table.setWidget(4, 0, prerequisitesGrid);

    // Header styles.
    HTMLTableUtils.applyHeaderStyles(table, true);

    // Initializes grid views.
    columnsCount = 7;

    specificObjectivesView = new FlexTableView(table, columnsCount, 1);
    expectedResultsView = new FlexTableView(table, columnsCount, 2);
    activitiesView = new FlexTableView(table, columnsCount, 3);
    prerequisitesView = new FlexTableView(table, columnsCount, 4);

    specificObjectivesView.addDependency(expectedResultsView);
    specificObjectivesView.addDependency(activitiesView);
    specificObjectivesView.addDependency(prerequisitesView);

    expectedResultsView.addDependency(activitiesView);
    expectedResultsView.addDependency(prerequisitesView);

    activitiesView.addDependency(prerequisitesView);

    // Views listeners.

    specificObjectivesView.addFlexTableViewListener(new FlexTableViewListener() {

        @Override
        public void rowRemoved(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getSpecificObjectivesMax();
            if (max != null && max > 0 && max > specificObjectivesView.getRowsCount()) {
                specificObjectivesButton.setVisible(true);
            }
        }

        @Override
        public void rowAdded(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getSpecificObjectivesMax();
            if (max != null && max > 0 && max <= specificObjectivesView.getRowsCount()) {
                specificObjectivesButton.setVisible(false);
            }
        }

        @Override
        public void groupAdded(RowsGroup<?> group) {

            // Checks if the max number of groups is reached.
            final Integer max = logFrameModel.getSpecificObjectivesGroupsMax();
            if (max != null && max > 1 && max <= specificObjectivesView.getGroupsCount()) {
                specificObjectivesGroupsButton.setVisible(false);
            }
        }
    });

    expectedResultsView.addFlexTableViewListener(new FlexTableViewListener() {

        @Override
        public void rowRemoved(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getExpectedResultsMax();
            if (max != null && max > 0 && max > expectedResultsView.getRowsCount()) {
                expectedResultsButton.setVisible(true);
            }
        }

        @Override
        public void rowAdded(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getExpectedResultsMax();
            if (max != null && max > 0 && max <= expectedResultsView.getRowsCount()) {
                expectedResultsButton.setVisible(false);
            }
        }

        @Override
        public void groupAdded(RowsGroup<?> group) {

            // Checks if the max number of groups is reached.
            final Integer max = logFrameModel.getExpectedResultsGroupsMax();
            if (max != null && max > 1 && max <= expectedResultsView.getGroupsCount()) {
                expectedResultsGroupsButton.setVisible(false);
            }
        }
    });

    activitiesView.addFlexTableViewListener(new FlexTableViewListener() {

        @Override
        public void rowRemoved(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getActivitiesMax();
            if (max != null && max > 0 && max > activitiesView.getRowsCount()) {
                activitiesButton.setVisible(true);
            }
        }

        @Override
        public void rowAdded(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getActivitiesMax();
            if (max != null && max > 0 && max <= activitiesView.getRowsCount()) {
                activitiesButton.setVisible(false);
            }
        }

        @Override
        public void groupAdded(RowsGroup<?> group) {

            // Checks if the max number of groups is reached.
            final Integer max = logFrameModel.getActivitiesGroupsMax();
            if (max != null && max > 1 && max <= activitiesView.getGroupsCount()) {
                activitiesGroupsButton.setVisible(false);
            }
        }
    });

    prerequisitesView.addFlexTableViewListener(new FlexTableViewListener() {

        @Override
        public void rowRemoved(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getPrerequisitesMax();
            if (max != null && max > 0 && max > prerequisitesView.getRowsCount()) {
                prerequisitesButton.setVisible(true);
            }
        }

        @Override
        public void rowAdded(RowsGroup<?> group, Row<?> row) {

            // Checks if the max number of elements is reached.
            final Integer max = logFrameModel.getPrerequisitesMax();
            if (max != null && max > 0 && max <= prerequisitesView.getRowsCount()) {
                prerequisitesButton.setVisible(false);
            }
        }

        @Override
        public void groupAdded(RowsGroup<?> group) {

            // Checks if the max number of groups is reached.
            final Integer max = logFrameModel.getPrerequisitesGroupsMax();
            if (max != null && max > 1 && max <= prerequisitesView.getGroupsCount()) {
                prerequisitesGroupButton.setVisible(false);
            }
        }
    });
}

From source file:org.sigmah.client.ui.view.project.logframe.ProjectLogFrameGrid.java

License:Open Source License

/**
 * Builds the widget of the menus.//w  ww  . j a va  2 s  .c o  m
 * 
 * @param menu
 *          The actions menu.
 * @param label
 *          The label beside this menu.
 * @return The widget to display this menu.
 */
private Widget buildMenuWidget(final ActionsMenu menu, final Label label) {

    // Menu button.
    final Anchor anchor = new Anchor();
    anchor.setHTML("&nbsp;");
    anchor.addStyleName(CSS_MENU_BUTTON_STYLE_NAME);

    final ClickHandler clickHandler = new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            menu.show(anchor);
        }
    };

    final MouseOverHandler mouseOverHandler = new MouseOverHandler() {

        @Override
        public void onMouseOver(MouseOverEvent event) {
            anchor.addStyleName(CSS_MENU_BUTTON_ACTIVE_STYLE_NAME);
            if (label != null) {
                label.addStyleName(CSS_CODE_LABEL_ACTIVE_STYLE_NAME);
            }
        }
    };
    final MouseOutHandler mouseOutHandler = new MouseOutHandler() {

        @Override
        public void onMouseOut(MouseOutEvent event) {
            anchor.removeStyleName(CSS_MENU_BUTTON_ACTIVE_STYLE_NAME);
            if (label != null) {
                label.removeStyleName(CSS_CODE_LABEL_ACTIVE_STYLE_NAME);
            }
        }
    };

    anchor.addClickHandler(clickHandler);
    anchor.addMouseOverHandler(mouseOverHandler);
    anchor.addMouseOutHandler(mouseOutHandler);

    // Label.
    if (label != null) {
        label.addClickHandler(clickHandler);
        label.addMouseOverHandler(mouseOverHandler);
        label.addMouseOutHandler(mouseOutHandler);
    }

    return anchor;
}

From source file:org.sigmah.client.ui.widget.orgunit.OrgUnitTreeGrid.java

License:Open Source License

/**
 * Initializes a new {@code OrgUnitTreeGrid} widget.
 * //from   w w  w  .jav a  2 s .c o m
 * @param hasSelectionModel
 *          {@code true} if the tree grid widget manages a selection model, {@code false} if it does not.
 */
public OrgUnitTreeGrid(final boolean hasSelectionModel) {

    // --
    // Creates columns.
    // --

    final List<ColumnConfig> columns = new ArrayList<ColumnConfig>();

    // Name column.
    final ColumnConfig nameColumn = new ColumnConfig();
    nameColumn.setId(OrgUnitDTO.NAME);
    nameColumn.setHeaderText(I18N.CONSTANTS.projectName());
    nameColumn.setRenderer(new TreeGridCellRenderer<OrgUnitDTO>());
    nameColumn.setWidth(150);

    // Full Name column.
    final ColumnConfig fullNameColumn = new ColumnConfig();
    fullNameColumn.setId(OrgUnitDTO.FULL_NAME);
    fullNameColumn.setHeaderText(I18N.CONSTANTS.projectFullName());
    fullNameColumn.setWidth(250);
    fullNameColumn.setRenderer(new GridCellRenderer<OrgUnitDTO>() {

        @Override
        public Object render(final OrgUnitDTO model, final String property, final ColumnData config,
                final int rowIndex, final int colIndex, final ListStore<OrgUnitDTO> store,
                final Grid<OrgUnitDTO> grid) {

            final com.google.gwt.user.client.ui.Label visitButton = new com.google.gwt.user.client.ui.Label(
                    (String) model.get(property));
            visitButton.addStyleName(STYLE_FLEXIBILITY_ACTION);

            visitButton.addClickHandler(new ClickHandler() {

                @Override
                public void onClick(final ClickEvent event) {
                    if (eventsHandler != null) {
                        eventsHandler.onRowClickEvent(model);
                    }
                }
            });

            return visitButton;
        }
    });

    // Country column.
    final ColumnConfig countryColumn = new ColumnConfig();
    countryColumn.setId(OrgUnitDTO.OFFICE_LOCATION_COUNTRY);
    countryColumn.setHeaderText(I18N.CONSTANTS.projectCountry());
    countryColumn.setWidth(100);
    countryColumn.setRenderer(new GridCellRenderer<OrgUnitDTO>() {

        @Override
        public Object render(final OrgUnitDTO model, final String property, final ColumnData config,
                final int rowIndex, final int colIndex, final ListStore<OrgUnitDTO> store,
                final Grid<OrgUnitDTO> grid) {

            final CountryDTO country = (CountryDTO) model.get(property);

            return CountryDTO.toString(country);
        }
    });

    // Adds columns.
    if (hasSelectionModel) {
        // Tree selection model
        selectionModel = new TreeGridCheckboxSelectionModel<OrgUnitDTO>();
        columns.add(selectionModel.getColumn());
    }

    columns.add(nameColumn);
    columns.add(fullNameColumn);
    columns.add(countryColumn);

    // --
    // Tree store.
    // --

    final TreeStore<OrgUnitDTO> store = new TreeStore<OrgUnitDTO>();
    store.setSortInfo(new SortInfo(OrgUnitDTO.NAME, SortDir.ASC));

    store.setStoreSorter(new StoreSorter<OrgUnitDTO>() {

        @Override
        public int compare(final Store<OrgUnitDTO> store, final OrgUnitDTO m1, final OrgUnitDTO m2,
                final String property) {

            if (OrgUnitDTO.OFFICE_LOCATION_COUNTRY.equals(property)) {
                return ((CountryDTO) m1.get(property)).getName()
                        .compareToIgnoreCase(((CountryDTO) m2.get(property)).getName());
            } else {
                return super.compare(store, m1, m2, property);
            }
        }
    });

    // --
    // Tree grid.
    // --

    tree = new TreeGrid<OrgUnitDTO>(store, new ColumnModel(columns));
    tree.setBorders(true);
    tree.getStyle().setLeafIcon(OrgUnitImageBundle.ICONS.orgUnitSmall());
    tree.getStyle().setNodeCloseIcon(OrgUnitImageBundle.ICONS.orgUnitSmall());
    tree.getStyle().setNodeOpenIcon(OrgUnitImageBundle.ICONS.orgUnitSmallTransparent());
    tree.setTrackMouseOver(false);
    tree.addPlugin(createOrgUnitFilters());

    if (hasSelectionModel) {
        tree.setSelectionModel(selectionModel);
        tree.addPlugin(selectionModel);
    }

    // --
    // Expand all button.
    // --

    final Button expandButton = new Button(I18N.CONSTANTS.expandAll(), IconImageBundle.ICONS.expand(),
            new SelectionListener<ButtonEvent>() {

                @Override
                public void componentSelected(final ButtonEvent ce) {
                    tree.expandAll();
                }
            });

    // --
    // Collapse all button.
    // --

    final Button collapseButton = new Button(I18N.CONSTANTS.collapseAll(), IconImageBundle.ICONS.collapse(),
            new SelectionListener<ButtonEvent>() {

                @Override
                public void componentSelected(final ButtonEvent ce) {
                    tree.collapseAll();
                }
            });

    // --
    // Toolbar.
    // --

    toolbar = new ToolBar();
    toolbar.setAlignment(HorizontalAlignment.LEFT);

    toolbar.add(expandButton);
    toolbar.add(collapseButton);
}

From source file:org.sigmah.client.ui.widget.panel.FoldPanel.java

License:Open Source License

/**
 * Creates a new and empty fold panel./*w w  w. j  a v  a  2s .  c o  m*/
 */
public FoldPanel() {

    addStyleName("fold");

    final HorizontalPanel titleBar = new HorizontalPanel();
    titleBar.getElement().getStyle().setDisplay(Style.Display.NONE);
    titleBar.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);

    final Label heading = new Label();
    heading.addStyleName("fold-title");
    heading.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            if (state == STATE_EXPANDED)
                collapse();
            else
                expand(true);
        }
    });
    heading.addStyleName("fold-expanded");
    titleBar.add(heading);
    titleBar.setCellWidth(heading, "100%");

    final FlowPanel toolButtonPanel = new FlowPanel();
    titleBar.add(toolButtonPanel);

    final FlowPanel content = new FlowPanel();

    super.add(titleBar);
    super.add(content);
}

From source file:org.sigmah.shared.dto.element.FilesListElementDTO.java

License:Open Source License

/**
 * Defines the column model for the files list grid.
 * /*  w w w. ja  v  a  2s. c  om*/
 * @param enabled
 *          If the component is enabled.
 * @return The column model.
 */
private ColumnConfig[] getColumnModel(final boolean enabled) {
    final boolean canAdd = enabled && userCanPerformChangeType(ValueEventChangeType.ADD);
    final boolean canRemove = enabled && userCanPerformChangeType(ValueEventChangeType.REMOVE);

    // File's add date.
    final ColumnConfig dateColumn = new ColumnConfig();
    dateColumn.setId("date");
    dateColumn.setHeaderText(I18N.CONSTANTS.flexibleElementFilesListDate());
    dateColumn.setWidth(60);
    dateColumn.setRenderer(new GridCellRenderer<FileDTO>() {

        final DateTimeFormat format = DateUtils.DATE_SHORT;

        @Override
        public Object render(FileDTO model, String property, ColumnData config, int rowIndex, int colIndex,
                ListStore<FileDTO> store, Grid<FileDTO> grid) {
            final FileVersionDTO last = model.getLastVersion();
            return format.format(last.getAddedDate());
        }
    });

    // File's name.
    final ColumnConfig nameColumn = new ColumnConfig();
    nameColumn.setId("name");
    nameColumn.setHeaderText(I18N.CONSTANTS.flexibleElementFilesListName());
    nameColumn.setWidth(100);
    nameColumn.setRenderer(new GridCellRenderer<FileDTO>() {

        @Override
        public Object render(final FileDTO model, String property, ColumnData config, int rowIndex,
                int colIndex, ListStore<FileDTO> store, Grid<FileDTO> grid) {
            return createDownloadLink(model, null, transfertManager);
        }
    });

    // File's author.
    final ColumnConfig authorColumn = new ColumnConfig();
    authorColumn.setId("author");
    authorColumn.setHeaderText(I18N.CONSTANTS.flexibleElementFilesListAuthor());
    authorColumn.setWidth(100);
    authorColumn.setRenderer(new GridCellRenderer<FileDTO>() {

        @Override
        public Object render(FileDTO model, String property, ColumnData config, int rowIndex, int colIndex,
                ListStore<FileDTO> store, Grid<FileDTO> grid) {
            final FileVersionDTO last = model.getLastVersion();
            return last.getAuthorFirstName() != null ? last.getAuthorFirstName() + " " + last.getAuthorName()
                    : last.getAuthorName();
        }
    });

    // File's last version number.
    final ColumnConfig versionColumn = new ColumnConfig();
    versionColumn.setId("version");
    versionColumn.setHeaderText(I18N.CONSTANTS.flexibleElementFilesListVersion());
    versionColumn.setWidth(20);
    versionColumn.setRenderer(new GridCellRenderer<FileDTO>() {

        @Override
        public Object render(final FileDTO model, String property, ColumnData config, int rowIndex,
                int colIndex, ListStore<FileDTO> store, Grid<FileDTO> grid) {
            final FileVersionDTO last = model.getLastVersion();
            return last.getVersionNumber();
        }
    });

    // Upload new version.
    final ColumnConfig addVersionColumn = new ColumnConfig();
    addVersionColumn.setId("addVersion");
    addVersionColumn.setHeaderText(null);
    addVersionColumn.setWidth(60);
    addVersionColumn.setSortable(false);
    addVersionColumn.setRenderer(new GridCellRenderer<FileDTO>() {

        @Override
        public Object render(final FileDTO model, String property, ColumnData config, int rowIndex,
                int colIndex, ListStore<FileDTO> store, Grid<FileDTO> grid) {

            final ButtonFileUploadField uploadField = new ButtonFileUploadField();
            uploadField.setButtonCaption(I18N.CONSTANTS.flexibleElementFilesListUploadVersion());
            uploadField.setName(FileUploadUtils.DOCUMENT_CONTENT);
            uploadField.setButtonIcon(IconImageBundle.ICONS.attach());
            uploadField.setEnabled(canAdd);

            final FormPanel uploadFormPanel = new FormPanel();
            uploadFormPanel.setLayout(new FitLayout());
            uploadFormPanel.setBodyBorder(false);
            uploadFormPanel.setHeaderVisible(false);
            uploadFormPanel.setPadding(0);
            uploadFormPanel.setEncoding(Encoding.MULTIPART);
            uploadFormPanel.setMethod(Method.POST);
            uploadFormPanel.setAction(GWT.getModuleBaseURL() + "upload");

            final HiddenField<String> elementIdHidden = new HiddenField<String>();
            elementIdHidden.setName(FileUploadUtils.DOCUMENT_FLEXIBLE_ELEMENT);

            final HiddenField<String> projectIdHidden = new HiddenField<String>();
            projectIdHidden.setName(FileUploadUtils.DOCUMENT_PROJECT);

            final HiddenField<String> idHidden = new HiddenField<String>();
            idHidden.setName(FileUploadUtils.DOCUMENT_ID);

            final HiddenField<String> nameHidden = new HiddenField<String>();
            nameHidden.setName(FileUploadUtils.DOCUMENT_NAME);

            final HiddenField<String> authorHidden = new HiddenField<String>();
            authorHidden.setName(FileUploadUtils.DOCUMENT_AUTHOR);

            final HiddenField<String> versionHidden = new HiddenField<String>();
            versionHidden.setName(FileUploadUtils.DOCUMENT_VERSION);

            uploadFormPanel.add(uploadField);
            uploadFormPanel.add(elementIdHidden);
            uploadFormPanel.add(projectIdHidden);
            uploadFormPanel.add(authorHidden);
            uploadFormPanel.add(idHidden);
            uploadFormPanel.add(nameHidden);
            uploadFormPanel.add(versionHidden);

            uploadField.addListener(Events.OnChange, new Listener<DomEvent>() {

                @Override
                public void handleEvent(DomEvent be) {
                    be.getEvent().stopPropagation();

                    if (transfertManager.canUpload()) {
                        // Set hidden fields values.
                        elementIdHidden.setValue(String.valueOf(getId()));
                        projectIdHidden.setValue(String.valueOf(currentContainerDTO.getId()));
                        idHidden.setValue(String.valueOf(model.getId()));
                        nameHidden.setValue(uploadField.getValue());
                        authorHidden.setValue(String.valueOf(auth().getUserId()));
                        versionHidden.setValue(String.valueOf(model.getLastVersion().getVersionNumber() + 1));

                        // Debug form hidden values.
                        if (Log.isDebugEnabled()) {

                            final StringBuilder sb = new StringBuilder();
                            sb.append("Upload a new version with parameters: ");
                            sb.append("version number=");
                            sb.append(versionHidden.getValue());
                            sb.append(" ; file id=");
                            sb.append(idHidden.getValue());
                            sb.append(" ; file name=");
                            sb.append(nameHidden.getValue());
                            sb.append(" ; author id=");
                            sb.append(authorHidden.getValue());

                            Log.debug(sb.toString());
                        }

                        // Submits the form.
                        transfertManager.upload(uploadFormPanel, createUploadProgressListener());

                    } else {
                        N10N.warn(I18N.CONSTANTS.flexibleElementFilesListUploadUnable());
                    }
                }
            });

            return uploadFormPanel;
        }
    });

    // Versions list.
    final ColumnConfig historyColumn = new ColumnConfig();
    historyColumn.setId("history");
    historyColumn.setHeaderText(null);
    historyColumn.setWidth(20);
    historyColumn.setSortable(false);
    historyColumn.setRenderer(new GridCellRenderer<FileDTO>() {

        @Override
        public Object render(final FileDTO model, String property, ColumnData config, int rowIndex,
                int colIndex, ListStore<FileDTO> store, Grid<FileDTO> grid) {

            final com.google.gwt.user.client.ui.Label historyButton = new com.google.gwt.user.client.ui.Label(
                    I18N.CONSTANTS.flexibleElementFilesListHistory());
            historyButton.addStyleName("flexibility-action");
            historyButton.addClickHandler(new ClickHandler() {

                @Override
                public void onClick(ClickEvent e) {

                    final FileDetailsWindow versionsWindow = new FileDetailsWindow(dispatch, transfertManager,
                            canRemove);
                    versionsWindow.addListener(new FileDetailsWindow.FileDetailsWindowListener() {

                        @Override
                        public void versionDeleted(FileVersionDTO version) {
                            updateComponent();
                        }
                    });

                    versionsWindow.show(model);
                }
            });

            return historyButton;
        }
    });

    // Delete.
    final ColumnConfig deleteColumn = new ColumnConfig();
    deleteColumn.setId("delete");
    deleteColumn.setHeaderText(null);
    deleteColumn.setWidth(10);
    deleteColumn.setSortable(false);
    deleteColumn.setRenderer(new GridCellRenderer<FileDTO>() {

        @Override
        public Object render(final FileDTO model, String property, ColumnData config, int rowIndex,
                int colIndex, final ListStore<FileDTO> store, Grid<FileDTO> grid) {

            if (!enabled) {
                return new Label("-");
            }

            final Image image = IconImageBundle.ICONS.remove().createImage();
            image.setTitle(I18N.CONSTANTS.remove());
            image.addStyleName("flexibility-action");
            image.addClickHandler(new ClickHandler() {

                @Override
                public void onClick(final ClickEvent event) {

                    // Asks the client to confirm the file removal.
                    N10N.confirmation(I18N.CONSTANTS.flexibleElementFilesListDelete(),
                            I18N.MESSAGES.flexibleElementFilesListConfirmDelete(model.getName()),
                            new ConfirmCallback() {

                                /**
                                 * OK action.
                                 */
                                @Override
                                public void onAction() {

                                    // Deletes it.
                                    dispatch.execute(new Delete(model, currentContainerDTO.getId(), getId()),
                                            new CommandResultHandler<VoidResult>() {

                                                @Override
                                                public void onCommandFailure(final Throwable caught) {
                                                    N10N.error(
                                                            I18N.CONSTANTS
                                                                    .flexibleElementFilesListDeleteError(),
                                                            I18N.CONSTANTS
                                                                    .flexibleElementFilesListDeleteErrorDetails());
                                                }

                                                @Override
                                                public void onCommandSuccess(final VoidResult result) {
                                                    store.remove(model);
                                                    uploadField.setEnabled(true);
                                                    uploadField.reset();
                                                    if (store.getCount() == 0) {
                                                        handlerManager
                                                                .fireEvent(new RequiredValueEvent(false, true));
                                                    }
                                                }
                                            }, new LoadingMask(mainPanel));
                                }
                            });

                }
            });

            return image;
        }
    });

    if (canRemove) {
        return new ColumnConfig[] { dateColumn, nameColumn, authorColumn, versionColumn, addVersionColumn,
                historyColumn, deleteColumn };

    } else {
        return new ColumnConfig[] { dateColumn, nameColumn, authorColumn, versionColumn, addVersionColumn,
                historyColumn };
    }
}

From source file:org.sigmah.shared.dto.element.FilesListElementDTO.java

License:Open Source License

/**
 * Create a download link for the given file.
 * /*from w  ww.ja  v a 2 s .c  om*/
 * @param file
 *          The file to download.
 * @return The download link.
 */
private static com.google.gwt.user.client.ui.Label createDownloadLink(final FileDTO file, final Integer version,
        final TransfertManager transfertManager) {

    final FileVersionDTO versionDTO;
    if (version != null) {
        versionDTO = file.getVersion(version);
    } else {
        versionDTO = file.getLastVersion();
    }

    if (versionDTO == null) {
        return null;
    }

    if (!versionDTO.isAvailable()) {
        return new com.google.gwt.user.client.ui.Label(versionDTO.getName() + '.' + versionDTO.getExtension()
                + ' ' + I18N.CONSTANTS.flexibleElementFilesListNotUploadedYet());
    }

    final com.google.gwt.user.client.ui.Label downloadButton = new com.google.gwt.user.client.ui.Label(
            versionDTO.getName() + '.' + versionDTO.getExtension());
    downloadButton.addStyleName("flexibility-action");

    // Buttons listeners.
    downloadButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent e) {
            transfertManager.canDownload(versionDTO, new AsyncCallback<Boolean>() {

                @Override
                public void onFailure(Throwable caught) {
                    N10N.error(I18N.CONSTANTS.flexibleElementFilesListDownloadError(),
                            I18N.CONSTANTS.flexibleElementFilesListDownloadErrorDetails());
                }

                @Override
                public void onSuccess(Boolean result) {
                    if (result) {
                        transfertManager.download(versionDTO, new ProgressListener() {

                            @Override
                            public void onProgress(double progress, double speed) {
                            }

                            @Override
                            public void onFailure(Cause cause) {
                                N10N.error(I18N.CONSTANTS.flexibleElementFilesListDownloadError(),
                                        I18N.CONSTANTS.flexibleElementFilesListDownloadErrorDetails());
                            }

                            @Override
                            public void onLoad(String result) {
                            }
                        });
                    } else {
                        N10N.error(I18N.CONSTANTS.flexibleElementFilesListDownloadError(),
                                I18N.CONSTANTS.flexibleElementFilesListDownloadUnable());
                    }
                }
            });
        }
    });

    return downloadButton;
}

From source file:org.sigmah.shared.dto.element.TripletsListElementDTO.java

License:Open Source License

@Override
public Object renderHistoryToken(final HistoryTokenListDTO token) {

    final Label details = new Label();
    details.addStyleName("history-details");

    if (token.getTokens().size() == 1) {
        details.setText("1 " + I18N.CONSTANTS.historyModification());
    } else {//from  w ww .jav a2 s  . com
        details.setText(token.getTokens().size() + " " + I18N.CONSTANTS.historyModifications());
    }

    details.addClickHandler(new ClickHandler() {

        private Window window;

        @Override
        public void onClick(ClickEvent e) {

            if (window == null) {

                // Builds window.
                window = new Window();
                window.setAutoHide(true);
                window.setModal(false);
                window.setPlain(true);
                window.setHeaderVisible(true);
                window.setClosable(true);
                window.setLayout(new FitLayout());
                window.setWidth(750);
                window.setHeight(400);
                window.setBorders(false);
                window.setResizable(true);

                // Builds grid.
                final ListStore<TripletValueDTO> store = new ListStore<TripletValueDTO>();
                final com.extjs.gxt.ui.client.widget.grid.Grid<TripletValueDTO> grid = new com.extjs.gxt.ui.client.widget.grid.Grid<TripletValueDTO>(
                        store, new ColumnModel(Arrays.asList(getColumnModel())));
                grid.getView().setForceFit(true);
                grid.setBorders(false);
                grid.setAutoExpandColumn("name");

                window.add(grid);

                // Fills store.
                for (final HistoryTokenDTO t : token.getTokens()) {

                    final List<String> l = ValueResultUtils.splitElements(t.getValue());

                    final TripletValueDTO triplet = new TripletValueDTO();
                    triplet.setCode(l.get(0));
                    triplet.setName(l.get(1));
                    triplet.setPeriod(l.get(2));
                    triplet.setType(t.getType());

                    store.add(triplet);
                }
            }

            window.setPagePosition(e.getNativeEvent().getClientX(), e.getNativeEvent().getClientY());
            window.show();
        }

        private ColumnConfig[] getColumnModel() {

            // Change type.
            final ColumnConfig typeColumn = new ColumnConfig();
            typeColumn.setId("type");
            typeColumn.setHeaderText(I18N.CONSTANTS.historyModificationType());
            typeColumn.setWidth(150);
            typeColumn.setSortable(false);
            typeColumn.setRenderer(new GridCellRenderer<TripletValueDTO>() {

                @Override
                public Object render(TripletValueDTO model, String property, ColumnData config, int rowIndex,
                        int colIndex, ListStore<TripletValueDTO> store, Grid<TripletValueDTO> grid) {

                    if (model.getType() != null) {
                        switch (model.getType()) {
                        case ADD:
                            return I18N.CONSTANTS.historyAdd();
                        case EDIT:
                            return I18N.CONSTANTS.historyEdit();
                        case REMOVE:
                            return I18N.CONSTANTS.historyRemove();
                        default:
                            return "-";
                        }
                    } else {
                        return "-";
                    }
                }
            });

            // Code.
            final ColumnConfig codeColumn = new ColumnConfig();
            codeColumn.setId("code");
            codeColumn.setHeaderText(I18N.CONSTANTS.flexibleElementTripletsListCode());
            codeColumn.setWidth(200);

            // Name.
            final ColumnConfig nameColumn = new ColumnConfig();
            nameColumn.setId("name");
            nameColumn.setHeaderText(I18N.CONSTANTS.flexibleElementTripletsListName());
            nameColumn.setWidth(200);

            // Period.
            final ColumnConfig periodColumn = new ColumnConfig();
            periodColumn.setId("period");
            periodColumn.setHeaderText(I18N.CONSTANTS.flexibleElementTripletsListPeriod());
            periodColumn.setWidth(200);

            return new ColumnConfig[] { typeColumn, codeColumn, nameColumn, periodColumn };
        }
    });

    return details;
}

From source file:org.sonar.plugins.design.ui.dependencies.client.DependenciesTable.java

License:Open Source License

private void addDependencyRow(final FlexTable grid, final int row, final long resourceId, final String name) {
    Label link = new Label(name);
    link.setStyleName("link");
    link.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent clickEvent) {
            Links.openResourcePopup(String.valueOf(resourceId));
        }/*from  w  w w . j a v a 2  s  . c o m*/
    });
    grid.setWidget(row, 1, link);
}