package com.cxy.redisclient.presentation.key; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FillLayout; 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.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Text; import com.cxy.redisclient.domain.NodeType; import com.cxy.redisclient.dto.FindInfo; import com.cxy.redisclient.integration.I18nFile; import com.cxy.redisclient.presentation.RedisClient; import com.cxy.redisclient.presentation.component.RedisClientDialog; public class FindKeyDialog extends RedisClientDialog { private Text pattern; private Button btnFind; /** * Create the dialog. * @param parent * @param style */ public FindKeyDialog(Shell parent, Image image) { super(parent, image); } /** * Create contents of the dialog. */ protected void createContents() { shell.setText(RedisClient.i18nFile.getText(I18nFile.FIND)); shell.setLayout(new GridLayout(1, false)); TabFolder tabFolder = new TabFolder(shell, SWT.NONE); tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); TabItem tbtmFind = new TabItem(tabFolder, SWT.NONE); tbtmFind.setText(RedisClient.i18nFile.getText(I18nFile.FIND)); Composite composite = new Composite(tabFolder, SWT.NONE); tbtmFind.setControl(composite); composite.setLayout(new GridLayout(6, true)); Label lblFind = new Label(composite, SWT.NONE); lblFind.setText(RedisClient.i18nFile.getText(I18nFile.FINDDATA)); pattern = new Text(composite, SWT.BORDER); pattern.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 1)); pattern.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { String p = pattern.getText() == null?"":pattern.getText(); if(p.length() == 0) btnFind.setEnabled(false); else btnFind.setEnabled(true); } }); pattern.setFocus(); Group grpFindDirection = new Group(composite, SWT.NONE); grpFindDirection.setLayout(new GridLayout(1, false)); grpFindDirection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1)); grpFindDirection.setText(RedisClient.i18nFile.getText(I18nFile.FINDDIRECTION)); final Button btnForward = new Button(grpFindDirection, SWT.RADIO); btnForward.setSelection(true); btnForward.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { } }); btnForward.setText(RedisClient.i18nFile.getText(I18nFile.FORWARD)); Button btnBackward = new Button(grpFindDirection, SWT.RADIO); btnBackward.setText(RedisClient.i18nFile.getText(I18nFile.BACKWARD)); Group grpKeyType = new Group(composite, SWT.NONE); grpKeyType.setLayout(new GridLayout(1, false)); grpKeyType.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1)); grpKeyType.setText(RedisClient.i18nFile.getText(I18nFile.KEYTYPE)); final Button btnString = new Button(grpKeyType, SWT.CHECK); btnString.setSelection(true); btnString.setText(RedisClient.i18nFile.getText(I18nFile.STRING)); final Button btnHash = new Button(grpKeyType, SWT.CHECK); btnHash.setSelection(true); btnHash.setText(RedisClient.i18nFile.getText(I18nFile.HASH)); final Button btnList = new Button(grpKeyType, SWT.CHECK); btnList.setSelection(true); btnList.setText(RedisClient.i18nFile.getText(I18nFile.LIST)); final Button btnSet = new Button(grpKeyType, SWT.CHECK); btnSet.setSelection(true); btnSet.setText(RedisClient.i18nFile.getText(I18nFile.SET)); final Button btnSortedSet = new Button(grpKeyType, SWT.CHECK); btnSortedSet.setSelection(true); btnSortedSet.setText(RedisClient.i18nFile.getText(I18nFile.ZSET)); Composite composite1 = new Composite(shell, SWT.NONE); composite1.setLayout(new FillLayout(SWT.HORIZONTAL)); composite1.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1)); btnFind = new Button(composite1, SWT.NONE); btnFind.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { List<NodeType> types = new ArrayList<NodeType>(); if(btnString.getSelection()) types.add(NodeType.STRING); if(btnHash.getSelection()) types.add(NodeType.HASH); if(btnList.getSelection()) types.add(NodeType.LIST); if(btnSet.getSelection()) types.add(NodeType.SET); if(btnSortedSet.getSelection()) types.add(NodeType.SORTEDSET); if(types.size() == 0) MessageDialog.openError(shell, RedisClient.i18nFile.getText(I18nFile.ERROR),RedisClient.i18nFile.getText(I18nFile.SELECTTYPE)); else{ if(btnForward.getSelection()) result = new FindInfo(pattern.getText(), types, true); else result = new FindInfo(pattern.getText(), types, false); shell.dispose(); } } }); btnFind.setEnabled(false); btnFind.setText(RedisClient.i18nFile.getText(I18nFile.FIND)); Button btnCancel = new Button(composite1, SWT.NONE); btnCancel.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { result = null; shell.dispose(); } }); btnCancel.setText(RedisClient.i18nFile.getText(I18nFile.CANCEL)); super.createContents(); } }