예제 #1
0
  private Canvas getActionLayout() {
    EnhancedVLayout actionLayout = new EnhancedVLayout(10);
    IButton deleteButton = new EnhancedIButton(MSG.common_button_delete(), ButtonColor.RED);
    // deleteButton.setIcon("subsystems/bundle/BundleVersionAction_Delete_16.png");
    deleteButton.addClickHandler(
        new ClickHandler() {
          public void onClick(ClickEvent clickEvent) {
            SC.ask(
                MSG.view_bundle_version_deleteConfirm(),
                new BooleanCallback() {
                  public void execute(Boolean aBoolean) {
                    if (aBoolean) {
                      bundleManager.deleteBundleVersion(
                          version.getId(),
                          false,
                          new AsyncCallback<Void>() {
                            public void onFailure(Throwable caught) {
                              CoreGUI.getErrorHandler()
                                  .handleError(
                                      MSG.view_bundle_version_deleteFailure(version.getVersion()),
                                      caught);
                            }

                            public void onSuccess(Void result) {
                              CoreGUI.getMessageCenter()
                                  .notify(
                                      new Message(
                                          MSG.view_bundle_version_deleteSuccessful(
                                              version.getVersion()),
                                          Message.Severity.Info));
                              // Bundle version is deleted, go back to main bundle view
                              CoreGUI.goToView(
                                  LinkManager.getBundleVersionLink(version.getBundle().getId(), 0),
                                  true);
                            }
                          });
                    }
                  }
                });
          }
        });
    actionLayout.addMember(deleteButton);

    if (!canDelete) {
      deleteButton.setDisabled(true);
    }

    return actionLayout;
  }
  @Override
  protected void configureTable() {
    updateSelectionStyle();
    getListGrid()
        .addCellClickHandler(
            new CellClickHandler() {
              public void onCellClick(CellClickEvent event) {
                updateSelectionStyle();
              }
            });

    List<ListGridField> fields = createFields();
    setListGridFields(fields.toArray(new ListGridField[fields.size()]));

    addTableAction(extendLocatorId("New"), MSG.common_button_new(), createNewAction());
    addTableAction(
        extendLocatorId("Delete"),
        MSG.common_button_delete(),
        getDeleteConfirmMessage(),
        createDeleteAction());

    super.configureTable();
  }
예제 #3
0
  @Override
  protected void configureTable() {
    getListGrid().setEmptyMessage(MSG.view_messageCenter_noRecentMessages());

    updateTitleCanvas(
        MSG.view_messageCenter_lastNMessages(
            String.valueOf(CoreGUI.getMessageCenter().getMaxMessages())));

    ListGridField severityField = new ListGridField(FIELD_SEVERITY);
    severityField.setType(ListGridFieldType.ICON);
    severityField.setAlign(Alignment.CENTER);
    severityField.setShowValueIconOnly(true);
    HashMap<String, String> severityIcons = new HashMap<String, String>(5);
    severityIcons.put(Severity.Blank.name(), getSeverityIcon(Severity.Blank));
    severityIcons.put(Severity.Info.name(), getSeverityIcon(Severity.Info));
    severityIcons.put(Severity.Warning.name(), getSeverityIcon(Severity.Warning));
    severityIcons.put(Severity.Error.name(), getSeverityIcon(Severity.Error));
    severityIcons.put(Severity.Fatal.name(), getSeverityIcon(Severity.Fatal));
    severityField.setValueIcons(severityIcons);
    severityField.setShowHover(true);
    severityField.setHoverCustomizer(
        new HoverCustomizer() {
          @Override
          public String hoverHTML(Object value, ListGridRecord record, int rowNum, int colNum) {
            try {
              Severity severity =
                  ((Message) record.getAttributeAsObject(FIELD_OBJECT)).getSeverity();
              switch (severity) {
                case Info:
                  return MSG.common_severity_info();
                case Warning:
                  return MSG.common_severity_warn();
                case Error:
                  return MSG.common_severity_error();
                case Fatal:
                  return MSG.common_severity_fatal();
              }
            } catch (Throwable e) {
              Log.error("Cannot get severity hover", e);
            }
            return null;
          }
        });
    severityField.setSortNormalizer(
        new SortNormalizer() {
          @Override
          public Object normalize(ListGridRecord record, String fieldName) {
            try {
              Severity severity =
                  ((Message) record.getAttributeAsObject(FIELD_OBJECT)).getSeverity();
              return Integer.valueOf(severity.ordinal());
            } catch (Throwable e) {
              Log.error("Cannot get sort nomalizer", e);
            }
            return Integer.valueOf(0);
          }
        });

    ListGridField timeField = new ListGridField(FIELD_TIME, MSG.view_messageCenter_messageTime());
    timeField.setType(ListGridFieldType.TIME);
    timeField.setAttribute("displayFormat", TimeFormatter.TOPADDEDTIME);
    timeField.setAlign(Alignment.LEFT);
    timeField.setShowHover(true);
    timeField.setHoverCustomizer(TimestampCellFormatter.getHoverCustomizer(FIELD_TIME));

    ListGridField messageField =
        new ListGridField(FIELD_CONCISEMESSAGE, MSG.common_title_message());

    severityField.setWidth(25);
    timeField.setWidth("15%");
    messageField.setWidth("*");

    getListGrid().setFields(severityField, timeField, messageField);

    setListGridDoubleClickHandler(
        new DoubleClickHandler() {
          @Override
          public void onDoubleClick(DoubleClickEvent event) {
            try {
              ListGrid listGrid = (ListGrid) event.getSource();
              ListGridRecord[] selectedRows = listGrid.getSelection();
              if (selectedRows != null && selectedRows.length > 0) {
                Message message =
                    (Message)
                        selectedRows[0].getAttributeAsObject(
                            FIELD_OBJECT); // show the first selected
                showDetails(message);
              }
            } catch (Throwable e) {
              Log.error("Cannot show details for message", e);
            }
          }
        });

    addTableAction(
        extendLocatorId("delete"),
        MSG.common_button_delete(),
        MSG.common_msg_areYouSure(),
        new AbstractTableAction(TableActionEnablement.ANY) {
          @Override
          public void executeAction(ListGridRecord[] selection, Object actionValue) {
            try {
              for (ListGridRecord record : selection) {
                Object doomed = record.getAttributeAsObject(FIELD_OBJECT);
                CoreGUI.getMessageCenter().getMessages().remove(doomed);
              }
              refresh();
            } catch (Throwable e) {
              Log.error("Cannot delete messages", e);
            }
          }
        });

    addTableAction(
        extendLocatorId("deleteAll"),
        MSG.common_button_delete_all(),
        MSG.common_msg_areYouSure(),
        new AbstractTableAction(TableActionEnablement.ALWAYS) {
          @Override
          public void executeAction(ListGridRecord[] selection, Object actionValue) {
            try {
              CoreGUI.getMessageCenter().getMessages().clear();
              refresh();
            } catch (Throwable e) {
              Log.error("Cannot delete all messages", e);
            }
          }
        });

    LinkedHashMap<String, Integer> maxMessagesMap = new LinkedHashMap<String, Integer>();
    maxMessagesMap.put("10", Integer.valueOf("10"));
    maxMessagesMap.put("25", Integer.valueOf("25"));
    maxMessagesMap.put("50", Integer.valueOf("50"));
    maxMessagesMap.put("100", Integer.valueOf("100"));
    maxMessagesMap.put("200", Integer.valueOf("200"));
    addTableAction(
        extendLocatorId("maxMessageMenu"),
        MSG.view_messageCenter_maxMessages(),
        null,
        maxMessagesMap,
        new AbstractTableAction(TableActionEnablement.ALWAYS) {
          @Override
          public void executeAction(ListGridRecord[] selection, Object actionValue) {
            try {
              Integer maxSize = (Integer) actionValue;
              CoreGUI.getMessageCenter().setMaxMessages(maxSize.intValue());
              updateTitleCanvas(MSG.view_messageCenter_lastNMessages(maxSize.toString()));
              refresh();
            } catch (Throwable e) {
              Log.error("Cannot set max messages", e);
            }
          }
        });

    /*
    // TODO only for testing, remove this when done testing
    addTableAction(extendLocatorId("test"), "TEST MSG", null,
        new AbstractTableAction(TableActionEnablement.ALWAYS) {
            @Override
            public void executeAction(ListGridRecord[] selection, Object actionValue) {
                for (Severity severity : java.util.EnumSet.allOf(Severity.class)) {
                    Message m = new Message(severity.name() + ':' + System.currentTimeMillis(), severity);
                    CoreGUI.getMessageCenter().notify(m);
                }
            }
        });
    */

    // initial population of the list with current messages
    try {
      refresh();
    } catch (Throwable e) {
      Log.error("Cannot perform initial refresh", e);
    }
  }
  @Override
  protected void configureTable() {
    addTableAction(
        MSG.common_button_delete(),
        MSG.view_inventory_resources_deleteConfirm(),
        new AbstractTableAction(TableActionEnablement.ANY) {

          // only enabled if all selected are a deletable type and if the user has delete permission
          // on the resources.
          public boolean isEnabled(ListGridRecord[] selection) {
            boolean isEnabled = super.isEnabled(selection);

            if (isEnabled) {
              for (ListGridRecord record : selection) {
                ResourceComposite resComposite =
                    (ResourceComposite) record.getAttributeAsObject("resourceComposite");
                Resource res = resComposite.getResource();
                if (!(isEnabled = res.getResourceType().isDeletable())) {
                  break;
                }
                ResourcePermission resPermission = resComposite.getResourcePermission();
                if (!(isEnabled = resPermission.isDeleteResource())) {
                  break;
                }
              }
            }
            return isEnabled;
          }

          public void executeAction(ListGridRecord[] selection, Object actionValue) {
            int[] resourceIds = TableUtility.getIds(selection);
            ResourceGWTServiceAsync resourceManager = GWTServiceLookup.getResourceService();

            resourceManager.deleteResources(
                resourceIds,
                new AsyncCallback<List<DeleteResourceHistory>>() {
                  public void onFailure(Throwable caught) {
                    if (caught instanceof CannotConnectToAgentException) {
                      CoreGUI.getMessageCenter()
                          .notify(
                              new Message(
                                  MSG.view_inventory_resources_deleteFailed2(), Severity.Warning));
                    } else {
                      CoreGUI.getErrorHandler()
                          .handleError(MSG.view_inventory_resources_deleteFailed(), caught);
                    }
                  }

                  public void onSuccess(List<DeleteResourceHistory> result) {
                    CoreGUI.getMessageCenter()
                        .notify(
                            new Message(
                                MSG.view_inventory_resources_deleteSuccessful(), Severity.Info));

                    refresh(true);
                    // refresh the entire gui so it encompasses any relevant tree view. Don't just
                    // call this.refresh(),
                    // because CoreGUI.refresh is more comprehensive.
                    CoreGUI.refresh();
                  }
                });
          }
        });

    addImportAndCreateButtons(false);

    super.configureTable();
  }