Package com.cxy.redisclient.presentation.list

Source Code of com.cxy.redisclient.presentation.list.ListDataContent

package com.cxy.redisclient.presentation.list;

import org.eclipse.jface.dialogs.InputDialog;
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.Group;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
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.presentation.component.EditListener;
import com.cxy.redisclient.presentation.component.PagingListener;
import com.cxy.redisclient.service.ListService;

public class ListDataContent extends DataContent {
  private Table table;
  private Button btnAppendTail;
  private Button btnDeleteHead;
  private Button btnDeleteTail;
  private ListService service = new ListService();
  private Status status;
  private Button btnInsertHead;
  private Button btnApply;
  private Button btnCancel;
  private Button btnRefresh;
  private Button btnWatch;
  private CurrentData currentData = new CurrentData();
  private EditListener listener;
  private Text editor;
  private PagingListener pageListener;

  private Group grpValues;

  private TableColumn tblclmnNewColumn;
 
  public ListDataContent(CTabItem tabItem, Image image, int id, String server, int db, String key,
      String dataTitle) {
    super(tabItem, image, id, server, db, key, dataTitle);
    status = Status.Normal;
  }

  /**
   * @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, 2, 5));
    table.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        tableItemSelected();
      }
    });
    table.setLinesVisible(true);
    listener = new EditListener(table, true);
    table.addListener(SWT.MouseDown, listener);
    pageListener = new PagingListener(table, new ListPage(id, db, key));
    table.addListener(SWT.SetData, pageListener);

    tblclmnNewColumn = new TableColumn(table, SWT.NONE);
    tblclmnNewColumn.setText(RedisClient.i18nFile.getText(I18nFile.VALUE));
    tblclmnNewColumn.setWidth(200);

    btnInsertHead = new Button(grpValues, SWT.NONE);
    btnInsertHead.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
    btnInsertHead.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        InputDialog dialog = new InputDialog(shell.getParent().getShell(), RedisClient.i18nFile.getText(I18nFile.INSERTHEAD), RedisClient.i18nFile.getText(I18nFile.INPUTVALUES), "", null);
        if(dialog.open() == InputDialog.OK){
            String value = dialog.getValue();
            service.addHead(id, db, key, value);
            refresh();
        }
      }
    });
    btnInsertHead.setText(RedisClient.i18nFile.getText(I18nFile.INSERTHEAD));

    btnAppendTail = new Button(grpValues, SWT.NONE);
    btnAppendTail.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false,
        1, 1));
    btnAppendTail.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        InputDialog dialog = new InputDialog(shell.getParent().getShell(), RedisClient.i18nFile.getText(I18nFile.APPENDTAIL), RedisClient.i18nFile.getText(I18nFile.INPUTVALUES), "", null);
        if(dialog.open() == InputDialog.OK){
            String value = dialog.getValue();
            service.addTail(id, db, key, value);
            pageListener.setCount();
            table.clear(table.getItemCount()-1);
            table.setSelection(table.getItemCount()-1);
            table.setSelection(-1);
            currentData.setItem(null);
            status = Status.Normal;
          statusChanged();
        }
      }
    });
    btnAppendTail.setText(RedisClient.i18nFile.getText(I18nFile.APPENDTAIL));

    btnDeleteHead = new Button(grpValues, SWT.NONE);
    btnDeleteHead.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
    btnDeleteHead.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        service.removeFirst(id, db, key);
        refresh();
      }
    });
    btnDeleteHead.setText(RedisClient.i18nFile.getText(I18nFile.DELETEHEAD));

    btnDeleteTail = new Button(grpValues, SWT.NONE);
    btnDeleteTail.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1,
        1));
    btnDeleteTail.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        service.removeLast(id, db, key);
        pageListener.setCount();
        table.getItem(table.getItemCount()-1);
        table.setSelection(table.getItemCount()-1);
          table.setSelection(-1);
          currentData.setItem(null);
          status = Status.Normal;
        statusChanged();
      }
    });
    btnDeleteTail.setText(RedisClient.i18nFile.getText(I18nFile.DELETETAIL));
   
    btnApply = new Button(grpValues, SWT.NONE);
    btnApply.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        TableItem[] items = table.getSelection();
        service.setValue(id, db, key, table.getSelectionIndex(), items[0].getText());
        table.setSelection(-1);
        currentData.setItem(null);
        status = Status.Normal;
        statusChanged();
      }
    });
    btnApply.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
    setApply(false);
    btnApply.setText(RedisClient.i18nFile.getText(I18nFile.APPLY));
   
    btnCancel = new Button(grpValues, SWT.NONE);
    btnCancel.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        switch(status){
        case Normal:
          break;
        case Update:
          table.setSelection(-1);
          status = Status.Normal;
          currentData.setItem(null);
          statusChanged();
          break;
        case Updating:
          currentData.reset();
          status = Status.Update;
          listener.clickRow(currentData.getItem(), 0);
          addModifyTextListener();
          statusChanged();
          break;
        }
       
      }
    });
    btnCancel.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1));
    btnCancel.setEnabled(false);
    btnCancel.setText(RedisClient.i18nFile.getText(I18nFile.CANCEL));
   
    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.setEnabled(true);
    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) {
        WatchDialog dialog = new WatchDialog(shell.getParent()
            .getShell(), image, currentData.getValue());
        dialog.open();
      }
    });
   
   
   
  }
  @Override
  public void refreshLangUI() {
    grpValues.setText(RedisClient.i18nFile.getText(I18nFile.VALUES));
    tblclmnNewColumn.setText(RedisClient.i18nFile.getText(I18nFile.VALUE));
    btnInsertHead.setText(RedisClient.i18nFile.getText(I18nFile.INSERTHEAD));
    btnAppendTail.setText(RedisClient.i18nFile.getText(I18nFile.APPENDTAIL));
    btnDeleteHead.setText(RedisClient.i18nFile.getText(I18nFile.DELETEHEAD));
    btnDeleteTail.setText(RedisClient.i18nFile.getText(I18nFile.DELETETAIL));
    btnApply.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();
  }

  protected void tableItemSelected() {
    TableItem[] items = table.getSelection();
    addModifyTextListener();
   
    if(currentData.isItemChanged(items[0])){
      switch(status){
      case Normal:
        status = Status.Update;
        statusChanged();
       
        break;
     
      case Update:
        break;
       
      case Updating:
        service.setValue(id, db, key, table.indexOf(currentData.getItem()), currentData.getItem().getText());
        status = Status.Update;
        statusChanged();
        break;
      }
      currentData.setItem(items[0]);
    }
  }
 
  public void statusChanged(){
    switch(status){
    case Normal:
      btnInsertHead.setEnabled(true);
      btnAppendTail.setEnabled(true);
     
      btnDeleteHead.setEnabled(true);
      btnDeleteTail.setEnabled(true);
      setApply(false);
      btnCancel.setEnabled(false);
      btnRefresh.setEnabled(true);
      btnWatch.setEnabled(false);
      break;
     
    case Update:
      btnInsertHead.setEnabled(true);
      btnAppendTail.setEnabled(true);
     
      btnDeleteHead.setEnabled(true);
      btnDeleteTail.setEnabled(true);
      setApply(false);
      btnCancel.setEnabled(true);
      btnRefresh.setEnabled(true);
      btnWatch.setEnabled(true);
      break;
     
    case Updating:
      btnInsertHead.setEnabled(false);
      btnAppendTail.setEnabled(false);
     
      btnDeleteHead.setEnabled(false);
      btnDeleteTail.setEnabled(false);
      setApply(true);
      btnCancel.setEnabled(true);
      btnRefresh.setEnabled(false);
      btnWatch.setEnabled(false);
      break;
   
    }
   
  }
  private void addModifyTextListener() {
    editor = listener.getText();
    if(!editor.isDisposed()){
      editor.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
          switch(status){
          case Normal:
            break;
         
          case Update:
            status = Status.Updating;
            statusChanged();
           
            break;
          case Updating:
            break;
          }
        }
      });
    }
  }

  private void refresh() {
    pageListener.setCount();
    table.clearAll();
    table.setSelection(0);
    table.setSelection(-1);
    currentData.setItem(null);
    status = Status.Normal;
    statusChanged();
  }
  @Override
  public Button getApplyButtion() {
    return btnApply;
  }
}
TOP

Related Classes of com.cxy.redisclient.presentation.list.ListDataContent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.