package com.cxy.redisclient.presentation.list;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Shell;
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.component.EditListener;
import com.cxy.redisclient.presentation.component.NewDataContent;
public class NewListContent extends NewDataContent {
private Table table;
private Button btnDelete;
private Button btnUp;
private Button btnDown;
private boolean headTail = true;
private boolean exist = true;
private Group grpWhenListNot;
private Group grpValues;
private TableColumn tblclmnNewColumn;
public NewListContent(int id, String server, int db, String key,
String dataTitle) {
super(id, server, db, key, dataTitle);
}
/**
* @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);
table.setHeaderVisible(true);;
table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 4));
table.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
tableItemSelected();
}
});
table.setLinesVisible(true);
table.addListener(SWT.MouseDown, new EditListener(table, true));
tblclmnNewColumn = new TableColumn(table, SWT.NONE);
tblclmnNewColumn.setText(RedisClient.i18nFile.getText(I18nFile.VALUE));
tblclmnNewColumn.setWidth(200);
Button 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) shell,
RedisClient.i18nFile.getText(I18nFile.INPUTVALUES),
RedisClient.i18nFile.getText(I18nFile.LISTINPUTFORMAT), "", null);
if (inputDialog.open() == InputDialog.OK) {
String values = inputDialog.getValue();
String[] listValues = values.split(";");
TableItem item = null;
for (String value : listValues) {
item = new TableItem(table, SWT.NONE);
item.setText(value);
}
if(item != null)
table.setSelection(item);
}
}
});
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) {
TableItem[] items = table.getSelection();
for (TableItem item : items) {
item.dispose();
}
tableItemSelected();
}
});
btnDelete.setEnabled(false);
btnDelete.setText(RedisClient.i18nFile.getText(I18nFile.DELETE));
btnUp = new Button(grpValues, SWT.NONE);
btnUp.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
btnUp.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getItems();
TableItem[] selectedItems = table.getSelection();
String selectedText = selectedItems[0].getText();
int selected = table.getSelectionIndex();
String upText = items[selected - 1].getText();
items[selected].setText(upText);
items[selected - 1].setText(selectedText);
table.setSelection(selected - 1);
if (selected == 1)
tableItemSelected();
}
});
btnUp.setEnabled(false);
btnUp.setText(RedisClient.i18nFile.getText(I18nFile.UP));
btnDown = new Button(grpValues, SWT.NONE);
btnDown.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1,
1));
btnDown.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getItems();
TableItem[] selectedItems = table.getSelection();
String selectedText = selectedItems[0].getText();
int selected = table.getSelectionIndex();
String downText = items[selected + 1].getText();
items[selected].setText(downText);
items[selected + 1].setText(selectedText);
table.setSelection(selected + 1);
if (selected == table.getItemCount() - 2)
tableItemSelected();
}
});
btnDown.setEnabled(false);
btnDown.setText(RedisClient.i18nFile.getText(I18nFile.DOWN));
Group grpOrderToAdd = new Group(dataComposite, SWT.NONE);
grpOrderToAdd.setLayout(new GridLayout(2, false));
grpOrderToAdd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
false, 4, 1));
grpOrderToAdd.setText(RedisClient.i18nFile.getText(I18nFile.LISTORDER));
Button button_1 = new Button(grpOrderToAdd, SWT.RADIO);
button_1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false,
1, 1));
button_1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
headTail = true;
}
});
button_1.setSelection(true);
button_1.setText(RedisClient.i18nFile.getText(I18nFile.HEADTAIL));
Button btnFromTailTo = new Button(grpOrderToAdd, SWT.RADIO);
btnFromTailTo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true,
false, 1, 1));
btnFromTailTo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
headTail = false;
}
});
btnFromTailTo.setText(RedisClient.i18nFile.getText(I18nFile.TAILHEAD));
grpWhenListNot = new Group(dataComposite, SWT.NONE);
grpWhenListNot.setLayout(new GridLayout(2, true));
grpWhenListNot.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
false, 4, 1));
grpWhenListNot.setText(RedisClient.i18nFile.getText(I18nFile.LISTNOTEXIST));
Button btnCreateList = new Button(grpWhenListNot, SWT.RADIO);
btnCreateList.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true,
false, 1, 1));
btnCreateList.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
exist = true;
}
});
btnCreateList.setSelection(true);
btnCreateList.setText(RedisClient.i18nFile.getText(I18nFile.CREATELIST));
Button btnNothingToDo = new Button(grpWhenListNot, SWT.RADIO);
btnNothingToDo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true,
false, 1, 1));
btnNothingToDo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
exist = false;
}
});
btnNothingToDo.setText(RedisClient.i18nFile.getText(I18nFile.DONOTHING));
}
public boolean isHeadTail() {
return headTail;
}
public boolean isExist() {
return exist;
}
protected Table getTable() {
return table;
}
protected void tableItemSelected() {
TableItem[] items = table.getSelection();
if (items.length == 1) {
btnDelete.setEnabled(true);
if (table.getSelectionIndex() != 0)
btnUp.setEnabled(true);
else
btnUp.setEnabled(false);
if (table.getSelectionIndex() != table.getItemCount() - 1)
btnDown.setEnabled(true);
else
btnDown.setEnabled(false);
} else if (items.length > 1) {
btnDelete.setEnabled(true);
btnUp.setEnabled(false);
btnDown.setEnabled(false);
} else {
btnDelete.setEnabled(false);
btnUp.setEnabled(false);
btnDown.setEnabled(false);
}
}
}