package com.cxy.redisclient.presentation.set;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
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.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import com.cxy.redisclient.integration.I18nFile;
import com.cxy.redisclient.presentation.RedisClient;
import com.cxy.redisclient.presentation.WatchDialog;
import com.cxy.redisclient.presentation.component.DataContent;
import com.cxy.redisclient.presentation.component.EditListener;
import com.cxy.redisclient.presentation.component.PagingListener;
import com.cxy.redisclient.service.SetService;
public class SetDataContent extends DataContent {
private Table table;
private Button btnDelete;
private PagingListener pageListener;
private SetService service = new SetService();
private Group grpValues;
private Button btnAdd;
private Button btnRefresh;
private Button btnWatch;
private TableColumn tblclmnNewColumn;
public SetDataContent(CTabItem tabItem, Image image, int id, String server, int db, String key,
String dataTitle) {
super(tabItem, image, id, server, db, key, dataTitle);
// TODO Auto-generated constructor stub
}
/**
* @wbp.parser.entryPoint
*/
@Override
protected void initData(Composite dataComposite) {
grpValues = new Group(dataComposite, SWT.NONE);
grpValues.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4,
1));
grpValues.setText(RedisClient.i18nFile.getText(I18nFile.VALUES));
grpValues.setLayout(new GridLayout(4, false));
table = new Table(grpValues, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.VIRTUAL);
table.setHeaderVisible(true);
table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 4));
table.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
tableItemSelected();
}
});
table.setLinesVisible(true);
table.addListener(SWT.MouseDown, new EditListener(table, false));
pageListener = new PagingListener(table, new SetPage(id, db, key));
table.addListener(SWT.SetData, pageListener);
tblclmnNewColumn = new TableColumn(table, SWT.NONE);
tblclmnNewColumn.setText(RedisClient.i18nFile.getText(I18nFile.VALUE));
tblclmnNewColumn.setWidth(200);
btnAdd = new Button(grpValues, SWT.NONE);
btnAdd.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
btnAdd.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
InputDialog inputDialog = new InputDialog(shell.getParent().getShell(),
RedisClient.i18nFile.getText(I18nFile.INPUTVALUES),
RedisClient.i18nFile.getText(I18nFile.LISTINPUTFORMAT), "", null);
if (inputDialog.open() == InputDialog.OK) {
String values = inputDialog.getValue();
String[] setValues = values.split(";");
long size = service.addValues(id, db, key, setValues);
if(size == 0)
MessageDialog.openInformation(shell.getParent().getShell(), RedisClient.i18nFile.getText(I18nFile.INPUTVALUES), RedisClient.i18nFile.getText(I18nFile.ADDSETVALUES));
refresh();
}
}
});
btnAdd.setText(RedisClient.i18nFile.getText(I18nFile.ADD));
btnDelete = new Button(grpValues, SWT.NONE);
btnDelete.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false,
1, 1));
btnDelete.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Set<String> values = new HashSet<String>();
TableItem[] items = table.getSelection();
for (TableItem item : items) {
values.add(item.getText());
}
service.remove(id, db, key, values);
for (TableItem item : items) {
item.dispose();
}
tableItemSelected();
}
});
btnDelete.setEnabled(false);
btnDelete.setText(RedisClient.i18nFile.getText(I18nFile.DELETE));
btnRefresh = new Button(grpValues, SWT.NONE);
btnRefresh.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
refresh();
}
});
btnRefresh.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
btnRefresh.setText(RedisClient.i18nFile.getText(I18nFile.REFRESH));
btnWatch = new Button(grpValues, SWT.NONE);
btnWatch.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
btnWatch.setText(RedisClient.i18nFile.getText(I18nFile.WATCH));
btnWatch.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
WatchDialog dialog = new WatchDialog(shell.getParent()
.getShell(), image, items[0].getText());
dialog.open();
}
});
}
@Override
public void refreshLangUI() {
grpValues.setText(RedisClient.i18nFile.getText(I18nFile.VALUES));
tblclmnNewColumn.setText(RedisClient.i18nFile.getText(I18nFile.VALUE));
btnAdd.setText(RedisClient.i18nFile.getText(I18nFile.ADD));
btnDelete.setText(RedisClient.i18nFile.getText(I18nFile.DELETE));
btnRefresh.setText(RedisClient.i18nFile.getText(I18nFile.REFRESH));
btnWatch.setText(RedisClient.i18nFile.getText(I18nFile.WATCH));
super.refreshLangUI();
}
protected void tableItemSelected() {
TableItem[] items = table.getSelection();
if (items != null && items.length >= 1) {
btnDelete.setEnabled(true);
btnWatch.setEnabled(true);
} else {
btnDelete.setEnabled(false);
btnWatch.setEnabled(false);
}
}
private void refresh() {
pageListener.setCount();
table.clearAll();
table.setSelection(-1);
tableItemSelected();
}
@Override
public Button getApplyButtion() {
return null;
}
}