/*
* Project: xdccBee
* Copyright (C) 2009 snert@snert-lab.de,
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.snertlab.xdccBee.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import de.snertlab.xdccBee.messages.XdccBeeMessages;
import de.snertlab.xdccBee.tools.swt.filtertext.FilterTextComposite;
import de.snertlab.xdccBee.tools.swt.filtertext.IFilterTextClearTextListener;
/**
* @author holgi
*
*/
public class PacketFilterComposite extends Composite {
private Text txtFilter;
public PacketFilterComposite(Composite parent, FormData formData,
final PacketViewer packetViewer) {
super(parent, SWT.NONE);
setLayoutData(formData);
Layout layout = new GridLayout(4, false);
setLayout(layout);
GridData gridDataCompControls = new GridData(SWT.FILL, SWT.FILL, true,
false);
gridDataCompControls.verticalIndent = -5;
if (Application.isMac()) {
txtFilter = new Text(this, SWT.SEARCH | SWT.ICON_CANCEL
| SWT.ICON_SEARCH);
txtFilter.setLayoutData(gridDataCompControls);
Listener listener = new Listener() {
public void handleEvent(Event event) {
if (event.detail == SWT.ICON_CANCEL) {
packetViewer.setFileNameFilterText("");
}
}
};
txtFilter.addListener(SWT.DefaultSelection, listener);
} else {
FilterTextComposite filterTextComposite = new FilterTextComposite(
this);
filterTextComposite.setLayoutData(gridDataCompControls);
txtFilter = filterTextComposite.getFilterControl();
filterTextComposite
.addFilterTextClearTextListener(new IFilterTextClearTextListener() {
@Override
public void clearText() {
packetViewer.setFileNameFilterText("");
}
});
}
txtFilter.setMessage(XdccBeeMessages
.getString("FileFilterComposite_FILTER_DUMMY_TEXT")); //$NON-NLS-1$
txtFilter.addKeyListener(new KeyListener() {
@Override
public void keyReleased(KeyEvent e) {
packetViewer.setFileNameFilterText(txtFilter.getText());
}
@Override
public void keyPressed(KeyEvent e) {
// Do Nothing
}
});
final Button checkIgnoreCase = new Button(this, SWT.CHECK);
checkIgnoreCase.setLayoutData(makeGridDataCheckboxes());
checkIgnoreCase.setText("Ignore case");
checkIgnoreCase.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
packetViewer.setFilterIgnoreCase(checkIgnoreCase.getSelection());
packetViewer.refresh();
}
});
checkIgnoreCase.setSelection(true);
packetViewer.setFilterIgnoreCase(checkIgnoreCase.getSelection());
final Button checkRegExp = new Button(this, SWT.CHECK);
checkRegExp.setLayoutData(makeGridDataCheckboxes());
checkRegExp.setText("Regular expression");
checkRegExp.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
packetViewer.setFilterRegExp(checkRegExp.getSelection());
packetViewer.refresh();
}
});
Label lblSpacer = new Label(this, SWT.NONE); // Spacer
GridData gridDataSpacer = new GridData(SWT.FILL, SWT.CENTER, true,
false);
lblSpacer.setLayoutData(gridDataSpacer);
}
private GridData makeGridDataCheckboxes() {
GridData gridDataCheckbox = new GridData(SWT.LEFT, SWT.CENTER, false,
false);
gridDataCheckbox.verticalIndent = -5;
return gridDataCheckbox;
}
}