@Override
 public void populatePopupMenu(JPopupMenu menu) {
   List<? extends QuickFix> fixes = errors.get(getSelectedRow()).getQuickFixes();
   if (!fixes.isEmpty()) {
     JMenu fixMenu = new ResourceMenu("quick_fixes");
     for (QuickFix fix : fixes) {
       fixMenu.add(fix.getAction());
     }
     menu.add(fixMenu);
     menu.addSeparator();
   }
   super.populatePopupMenu(menu);
 }
        @Override
        public Component getTableCellRendererComponent(
            JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
          if (value instanceof ProcessSetupError) {
            JLabel label =
                (JLabel)
                    super.getTableCellRendererComponent(
                        table,
                        ((ProcessSetupError) value).getMessage(),
                        isSelected,
                        hasFocus,
                        row,
                        column);
            switch (((ProcessSetupError) value).getSeverity()) {
              case WARNING:
                label.setIcon(IMAGE_WARNING);
                break;
              case ERROR:
                label.setIcon(IMAGE_ERROR);
                break;
              default:
                label.setIcon(null); // cannot happen				
            }

            return label;
          } else if (value instanceof Port) {
            JLabel label =
                (JLabel)
                    super.getTableCellRendererComponent(
                        table, ((Port) value).getSpec(), isSelected, hasFocus, row, column);
            label.setIcon(
                ((Port) value)
                    .getPorts()
                    .getOwner()
                    .getOperator()
                    .getOperatorDescription()
                    .getSmallIcon());
            return label;
          } else if (value instanceof Operator) {
            JLabel label =
                (JLabel)
                    super.getTableCellRendererComponent(
                        table, ((Operator) value).getName(), isSelected, hasFocus, row, column);
            label.setIcon(((Operator) value).getOperatorDescription().getSmallIcon());
            return label;
          } else {
            if (column == 1) {
              JLabel label =
                  (JLabel)
                      super.getTableCellRendererComponent(
                          table, value, isSelected, hasFocus, row, column);
              if (value == null) {
                label.setIcon(IMAGE_NO_QUICKFIX);
                label.setText(
                    I18N.getMessage(
                        I18N.getGUIBundle(), "gui.errortable.no_quickfix_available.label"));
              }
              if (value instanceof List) {
                label.setIcon(IMAGE_QUICKFIX);
                label.setText(
                    I18N.getMessage(
                        I18N.getGUIBundle(),
                        "gui.errortable.choose_quickfix.label",
                        ((List) value).size()));
              }
              if (value instanceof QuickFix) {
                QuickFix quickFix = (QuickFix) value;
                label.setIcon((Icon) quickFix.getAction().getValue(Action.SMALL_ICON));
                label.setText(quickFix.toString());
              }
              return label;
            } else {
              JLabel label =
                  (JLabel)
                      super.getTableCellRendererComponent(
                          table, value, isSelected, hasFocus, row, column);
              label.setIcon(null);
              return label;
            }
          }
        }