package com.cxy.redisclient.presentation.string;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabItem;
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.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
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.service.NodeService;
public class StringDataContent extends DataContent {
private NodeService service = new NodeService();
private String value;
private Button btnOk;
private Label label;
private Button btnCancel;
private Button btnWatch;
private Button btnRefresh;
public StringDataContent(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
}
@Override
protected void initData(Composite dataComposite) {
label = new Label(dataComposite, SWT.NONE);
label.setText(RedisClient.i18nFile.getText(I18nFile.VALUE));
label.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 1, 1));
final Text text_value = new Text(dataComposite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI);
text_value.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
value = service.readString(id, db, key);
text_value.setText(value);
text_value.selectAll();
text_value.setFocus();
new Label(dataComposite, SWT.NONE);
new Label(dataComposite, SWT.NONE);
new Label(dataComposite, SWT.NONE);
Composite composite = new Composite(dataComposite, SWT.NONE);
composite.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
composite.setLayout(new GridLayout(4, false));
btnOk = new Button(composite, SWT.NONE);
btnOk.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
btnOk.setText(RedisClient.i18nFile.getText(I18nFile.APPLY));
setApply(false);
btnCancel = new Button(composite, SWT.NONE);
btnCancel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
btnCancel.setEnabled(false);
btnCancel.setText(RedisClient.i18nFile.getText(I18nFile.CANCEL));
text_value.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
String newValue = text_value.getText() == null ? "" : text_value.getText();
if (newValue.equals(value)) {
setApply(false);
btnCancel.setEnabled(false);
} else {
setApply(true);
btnCancel.setEnabled(true);
}
}
});
btnOk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String key = getKey();
value = text_value.getText();
service.updateString(id, db, key, value);
setApply(false);
btnCancel.setEnabled(false);
}
});
btnCancel.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
text_value.setText(value);
setApply(false);
btnCancel.setEnabled(false);
}
});
btnRefresh = new Button(composite, SWT.NONE);
btnRefresh.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
value = service.readString(id, db, key);
text_value.setText(value);
}
});
btnRefresh.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
false, 1, 1));
btnRefresh.setEnabled(true);
btnRefresh.setText(RedisClient.i18nFile.getText(I18nFile.REFRESH));
btnWatch = new Button(composite, SWT.NONE);
btnWatch.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
false, 1, 1));
btnWatch.setText(RedisClient.i18nFile.getText(I18nFile.WATCH));
btnWatch.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
WatchDialog dialog = new WatchDialog(shell.getParent()
.getShell(), image, text_value.getText());
dialog.open();
}
});
}
@Override
public void refreshLangUI() {
label.setText(RedisClient.i18nFile.getText(I18nFile.VALUE));
btnOk.setText(RedisClient.i18nFile.getText(I18nFile.APPLY));
btnCancel.setText(RedisClient.i18nFile.getText(I18nFile.CANCEL));
btnRefresh.setText(RedisClient.i18nFile.getText(I18nFile.REFRESH));
btnWatch.setText(RedisClient.i18nFile.getText(I18nFile.WATCH));
super.refreshLangUI();
}
public boolean isApply() {
return btnOk.isEnabled();
}
@Override
public Button getApplyButtion() {
return btnOk;
}
}