/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.nebula.widgets.xviewer.customize;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.nebula.widgets.xviewer.XViewer;
import org.eclipse.nebula.widgets.xviewer.XViewerText;
import org.eclipse.nebula.widgets.xviewer.core.model.ColumnDateFilter;
import org.eclipse.nebula.widgets.xviewer.core.model.DateRangeType;
import org.eclipse.nebula.widgets.xviewer.core.model.XViewerColumn;
import org.eclipse.nebula.widgets.xviewer.core.util.Strings;
import org.eclipse.nebula.widgets.xviewer.util.internal.XViewerLib;
import org.eclipse.nebula.widgets.xviewer.util.internal.dialog.ColumnFilterDialog;
import org.eclipse.swt.widgets.Display;
/**
* UI for the display of column filter data
*
* @author Donald G. Dunne
*/
public class ColumnFilterDataUI {
private final XViewer xViewer;
public ColumnFilterDataUI(XViewer xViewer) {
this.xViewer = xViewer;
}
public void createWidgets() {
// provided for subclass implementation
}
public void promptSetFilter(XViewerColumn column) {
String columnName = column.getId().replaceFirst(".*\\.", "");
ColumnFilterDialog ed =
new ColumnFilterDialog(Display.getCurrent().getActiveShell(), XViewerText.get("ColumnFilterDataUI.title"), //$NON-NLS-1$
XViewerText.get("ColumnFilterDataUI.prompt", columnName), MessageDialog.QUESTION, //$NON-NLS-1$
new String[] {
XViewerText.get("button.ok"), //$NON-NLS-1$
XViewerText.get("button.clear"), //$NON-NLS-1$
XViewerText.get("button.clear_all"), //$NON-NLS-1$
XViewerText.get("button.cancel")}, //$NON-NLS-1$
0, column);
String str = xViewer.getCustomizeMgr().getColumnFilterData().getFilterText(column.getId());
if (str != null && !str.equals("")) { //$NON-NLS-1$
ed.setEntry(str);
}
int result = ed.open();
if (result == 0) {
xViewer.getCustomizeMgr().setColumnFilterText(column.getId(), ed.getEntry());
xViewer.getCustomizeMgr().setColumnDateFilter(column.getId(), ed.getDateRangeType(), ed.getDate1(),
ed.getDate2());
} else if (result == 1) {
xViewer.getCustomizeMgr().setColumnFilterText(column.getId(), null);
xViewer.getCustomizeMgr().setColumnDateFilter(column.getId(), DateRangeType.None, null, null);
} else if (result == 2) {
xViewer.getCustomizeMgr().clearAllColumnFilters();
}
}
public void appendToStatusLabel(StringBuffer sb) {
for (String colId : xViewer.getCustomizeMgr().getColumnFilterData().getColIds()) {
String filterText = xViewer.getCustomizeMgr().getColumnFilterData().getFilterText(colId);
if (Strings.isValid(filterText)) {
sb.append("[" + colId + " = " + filterText + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
ColumnDateFilter dateFilter = xViewer.getCustomizeMgr().getColumnFilterData().getDateFilter(colId);
if (dateFilter != null) {
sb.append("[" + colId + " = " + dateFilter.getType().name() + " ");
sb.append(XViewerLib.getDateFromPattern(dateFilter.getDate1(), XViewerLib.MMDDYYHHMM));
if (dateFilter.getType() == DateRangeType.Between_Dates) {
sb.append(" and " + XViewerLib.getDateFromPattern(dateFilter.getDate2(), XViewerLib.MMDDYYHHMM));
}
sb.append("]");
}
}
}
}