private void loadCustomizeTable() throws Exception {
    // Add stored customization data
    List<CustomizeData> custDatas = xViewerToCustomize.getCustomizeMgr().getSavedCustDatas();

    // Add table default customization data
    CustomizeData defaultTableCustData =
        xViewerToCustomize.getCustomizeMgr().getTableDefaultCustData();
    defaultTableCustData.setName(CustomizeManager.TABLE_DEFAULT_LABEL);
    custDatas.add(defaultTableCustData);

    // Add current customization data generated from actual table
    CustomizeData currentCustData =
        xViewerToCustomize.getCustomizeMgr().generateCustDataFromTable();
    currentCustData.setName(CustomizeManager.CURRENT_LABEL);
    custDatas.add(currentCustData);

    custTable.getViewer().setInput(custDatas);

    restoreCustTableSelection();

    // If selection not restored, select default
    if (getCustTableSelection() == null) {
      ArrayList<Object> sel = new ArrayList<Object>();
      sel.add(currentCustData);
      custTable
          .getViewer()
          .setSelection(new StructuredSelection(sel.toArray(new Object[sel.size()])));
      custTable.getViewer().getTree().setFocus();
    }

    updateSortTextField();
    updateColumnFilterField();
    updateButtonEnablements();
  }
 private void handleSetDefaultButton() {
   try {
     CustomizeData custData = getCustTableSelection();
     if (custData.getName().equals(CustomizeManager.TABLE_DEFAULT_LABEL)
         || custData.getName().equals(CustomizeManager.CURRENT_LABEL)) {
       XViewerLib.popup("ERROR", XViewerText.get("error.set_default"));
       return;
     }
     if (xViewerToCustomize.getCustomizeMgr().isCustomizationUserDefault(custData)) {
       if (MessageDialog.openConfirm(
           Display.getCurrent().getActiveShell(),
           XViewerText.get("button.remove_default"),
           MessageFormat.format(
               XViewerText.get("XViewerCustomizeDialog.prompt.remove_default"),
               custData.getName()))) {
         xViewerToCustomize.getCustomizeMgr().setUserDefaultCustData(custData, false);
       }
     } else if (MessageDialog.openConfirm(
         Display.getCurrent().getActiveShell(),
         XViewerText.get("button.set_default"),
         MessageFormat.format(
             XViewerText.get("XViewerCustomizeDialog.prompt.set_default"), custData.getName()))) {
       xViewerToCustomize.getCustomizeMgr().setUserDefaultCustData(custData, true);
     }
     loadCustomizeTable();
   } catch (Exception ex) {
     XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
   }
 }
 private void handleDeleteButton() {
   try {
     CustomizeData custSel = getCustTableSelection();
     if (custSel.getName().equals(CustomizeManager.TABLE_DEFAULT_LABEL)
         || custSel.getName().equals(CustomizeManager.CURRENT_LABEL)) {
       XViewerLib.popup("ERROR", XViewerText.get("error.delete_default"));
       return;
     }
     if (!custSel.isPersonal() && !xViewerToCustomize.getXViewerFactory().isAdmin()) {
       XViewerLib.popup("ERROR", XViewerText.get("error.delete_global"));
       return;
     }
     if (MessageDialog.openConfirm(
         Display.getCurrent().getActiveShell(),
         XViewerText.get("XViewerCustomizeDialog.prompt.delete.title"),
         MessageFormat.format(
             XViewerText.get("XViewerCustomizeDialog.prompt.delete"), custSel.getName()))) {
       xViewerToCustomize.getCustomizeMgr().deleteCustomization(custSel);
       loadCustomizeTable();
       updateButtonEnablements();
     }
   } catch (Exception ex) {
     XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
   }
 }
 private void handleRenameButton() {
   XViewerColumn xCol = getVisibleTableSelection().iterator().next();
   DialogWithEntry ed =
       new DialogWithEntry(
           Display.getCurrent().getActiveShell(),
           "Rename Column",
           null,
           "Enter new name",
           MessageDialog.QUESTION,
           new String[] {"OK", "Use Default", "Cancel"},
           0);
   int result = ed.open();
   if (result == 2) {
     return;
   }
   if (result == 0) {
     xViewerToCustomize.getCustomizeMgr().customizeColumnName(xCol, ed.getEntry());
   } else if (result == 1) {
     xViewerToCustomize.getCustomizeMgr().customizeColumnName(xCol, "");
   }
   visibleColTable.getViewer().update(xCol, null);
 }
 private void updateButtonEnablements() {
   CustomizeData custData = getCustTableSelection();
   setDefaultButton.setEnabled(
       xViewerToCustomize
               .getXViewerFactory()
               .getXViewerCustomizations()
               .isCustomizationPersistAvailable()
           && custTable.getViewer().getTree().isFocusControl()
           && custData != null
           && !custData.getName().equals(CustomizeManager.TABLE_DEFAULT_LABEL)
           && !custData.getName().equals(CustomizeManager.CURRENT_LABEL));
   if (custTable.getViewer().getTree().isFocusControl() && custData != null) {
     try {
       setDefaultButton.setText(
           xViewerToCustomize.getCustomizeMgr().isCustomizationUserDefault(custData)
               ? REMOVE_DEFAULT
               : SET_AS_DEFAULT);
     } catch (XViewerException ex) {
       XViewerLog.log(Activator.class, Level.SEVERE, ex);
     }
     setDefaultButton.getParent().layout();
   }
   deleteButton.setEnabled(
       xViewerToCustomize
               .getXViewerFactory()
               .getXViewerCustomizations()
               .isCustomizationPersistAvailable()
           && custTable.getViewer().getTree().isFocusControl()
           && custData != null);
   addItemButton.setEnabled(
       hiddenColTable.getViewer().getTree().isFocusControl() && getHiddenTableSelection() != null);
   removeItemButton.setEnabled(
       visibleColTable.getViewer().getTree().isFocusControl()
           && getVisibleTableSelection() != null);
   renameButton.setEnabled(
       visibleColTable.getViewer().getTree().isFocusControl()
           && getVisibleTableSelection() != null
           && getVisibleTableSelection().size() == 1);
   moveDownButton.setEnabled(
       visibleColTable.getViewer().getTree().isFocusControl()
           && getVisibleTableSelection() != null);
   moveUpButton.setEnabled(
       visibleColTable.getViewer().getTree().isFocusControl()
           && getVisibleTableSelection() != null);
   saveButton.setEnabled(
       xViewerToCustomize.getXViewerFactory().getXViewerCustomizations() != null
           && xViewerToCustomize
               .getXViewerFactory()
               .getXViewerCustomizations()
               .isCustomizationPersistAvailable());
 }
 private void handleSaveButton() {
   try {
     List<CustomizeData> custDatas = new ArrayList<CustomizeData>();
     for (CustomizeData custData : xViewerToCustomize.getCustomizeMgr().getSavedCustDatas()) {
       if (custData.isPersonal()) {
         custDatas.add(custData);
       } else if (xViewerToCustomize.getXViewerFactory().isAdmin()) {
         custDatas.add(custData);
       }
     }
     CustomizationDataSelectionDialog diag =
         new CustomizationDataSelectionDialog(xViewerToCustomize, custDatas);
     if (diag.open() == 0) {
       String name = diag.getEnteredName();
       try {
         CustomizeData diagSelectedCustomizeData = diag.getSelectedCustData();
         String diagEnteredNewName = diag.getEnteredName();
         CustomizeData custData = getConfigCustomizeCustData();
         if (diagEnteredNewName != null) {
           custData.setName(name);
           // Set currently selected to newly saved custData
           selectedCustTableCustData = custData;
         } else {
           custData.setName(diagSelectedCustomizeData.getName());
           custData.setGuid(diagSelectedCustomizeData.getGuid());
         }
         custData.setPersonal(!diag.isSaveGlobal());
         xViewerToCustomize.getCustomizeMgr().saveCustomization(custData);
       } catch (Exception ex) {
         XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
       }
     }
     loadCustomizeTable();
   } catch (Exception ex) {
     XViewerLog.logAndPopup(Activator.class, Level.SEVERE, ex);
   }
 }
 private void handleLoadConfigCustButton() {
   xViewerToCustomize.getCustomizeMgr().loadCustomization(getConfigCustomizeCustData());
   xViewerToCustomize.refresh();
 }