columnDropdown.setMenuCreator(new ContextMenuCreator() {
@Override
public Menu createMenu(Control parent) {
Menu menu = new Menu(parent);
MenuItem restoreDefaults = new MenuItem(menu, SWT.None);
restoreDefaults.setText(Messages.SearchNewsDialog_RESTORE_DEFAULT_COLUMNS);
restoreDefaults.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
NewsColumnViewModel defaultModel = NewsColumnViewModel.createDefault(true);
if (!defaultModel.equals(fColumnModel))
showColumns(defaultModel, true);
}
});
new MenuItem(menu, SWT.SEPARATOR);
NewsColumn[] columns = NewsColumn.values();
for (final NewsColumn column : columns) {
if (column.isSelectable()) {
MenuItem item = new MenuItem(menu, SWT.CHECK);
item.setText(column.getName());
if (fColumnModel.contains(column))
item.setSelection(true);
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (fColumnModel.contains(column))
fColumnModel.removeColumn(column);
else
fColumnModel.addColumn(column);
showColumns(fColumnModel, true);
}
});
}
}
return menu;
}
});
dialogToolBar.add(columnDropdown);
/* Separator */
dialogToolBar.add(new Separator());
/* Toggle Preview */
final String previewActionId = "org.rssowl.ui.internal.dialogs.search.PreviewAction"; //$NON-NLS-1$
IAction previewAction = new Action(Messages.SearchNewsDialog_PREVIEW_RESULTS, IAction.AS_CHECK_BOX) {
@Override
public void run() {
fIsPreviewVisible = !fIsPreviewVisible;
fSashForm.setWeights(fIsPreviewVisible ? THREE_SASH_WEIGHTS : TWO_SASH_WEIGHTS);
fBottomSash.setVisible(fIsPreviewVisible);
fSashForm.layout();
dialogToolBar.find(previewActionId).update(IAction.TOOL_TIP_TEXT);
/* Select and Show News if required */
if (fIsPreviewVisible && fResultViewer.getTable().getItemCount() > 0) {
/* Select first News if required */
if (fResultViewer.getSelection().isEmpty())
fResultViewer.getTable().select(0);
/* Set input and Focus */
fBrowserViewer.setInput(((IStructuredSelection) fResultViewer.getSelection()).getFirstElement());
hideBrowser(false);
fResultViewer.getTable().setFocus();
/* Make sure to show the selection */
fResultViewer.getTable().showSelection();
}
}
@Override
public ImageDescriptor getImageDescriptor() {
return OwlUI.getImageDescriptor("icons/etool16/browsermaximized.gif"); //$NON-NLS-1$
}
@Override
public String getToolTipText() {
if (fIsPreviewVisible)
return Messages.SearchNewsDialog_HIDE_PREVIEW;
return Messages.SearchNewsDialog_SHOW_PREVIEW;
}
};
previewAction.setId(previewActionId);
previewAction.setChecked(fIsPreviewVisible);
dialogToolBar.add(previewAction);
/* Separator */
dialogToolBar.add(new Separator());
/* Existing Saved Searches */
IAction savedSearches = new Action(Messages.SearchNewsDialog_SHOW_SAVED_SEARCH, IAction.AS_DROP_DOWN_MENU) {
@Override
public void run() {
OwlUI.positionDropDownMenu(this, dialogToolBar);
}
@Override
public ImageDescriptor getImageDescriptor() {
return OwlUI.SEARCHMARK;
}
@Override
public String getId() {
return SEARCHES_ACTION;
}
};
savedSearches.setMenuCreator(new ContextMenuCreator() {
@Override
public Menu createMenu(Control parent) {
Collection<ISearchMark> searchMarks = CoreUtils.loadSortedSearchMarks();
Menu menu = new Menu(parent);
/* Create new Saved Search */
MenuItem newSavedSearch = new MenuItem(menu, SWT.NONE);
newSavedSearch.setText(Messages.SearchNewsDialog_NEW_SAVED_SEARCH);
newSavedSearch.setImage(OwlUI.getImage(fResources, "icons/etool16/add.gif")); //$NON-NLS-1$