Package com.cxy.redisclient.presentation.component

Source Code of com.cxy.redisclient.presentation.component.NewDataContent

package com.cxy.redisclient.presentation.component;

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.Label;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;

import com.cxy.redisclient.integration.ConfigFile;
import com.cxy.redisclient.integration.I18nFile;
import com.cxy.redisclient.presentation.RedisClient;

public abstract class NewDataContent {
  protected Composite shell;
  private final String separator = ConfigFile.getSeparator();
 
  public Composite getShell() {
    return shell;
  }

  protected int id;
  protected String server;
  protected int db;
  protected String key;
 
  private String dataTitle;
 
  protected Text inputKey;
 
  private TabItem dataTabItem;
  private TabItem ttlTabItem;
 
  protected Button btnExpire;
  protected Text ttl;
  protected Label labelTTL;

  protected Composite ttlComposite;

  private Label label;

  private Label label_2;

  private Label lblKey;
 
  public NewDataContent(int id, String server, int db, String key, String dataTitle){
    this.id = id;
    this.server = server;
    this.db = db;
    this.key = key;
    this.dataTitle = dataTitle;
  }
 
  public void setShell(Composite shell){
    this.shell = shell;
  }
  public void initContents(){
    TabFolder tabFolder = new TabFolder(shell, SWT.NONE);
    tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
   
    Composite dataComposite = initDataTabItem(tabFolder);
    initData(dataComposite);
   
    initTTLTabItem(tabFolder);
  }

  protected Composite initDataTabItem(TabFolder tabFolder){
    dataTabItem = new TabItem(tabFolder, SWT.NONE);
    dataTabItem.setText(RedisClient.i18nFile.getText(dataTitle));

    Composite dataComposite = new Composite(tabFolder, SWT.NONE);
    dataTabItem.setControl(dataComposite);
    dataComposite.setLayout(new GridLayout(4, true));

    label = new Label(dataComposite, SWT.NONE);
    label.setText(RedisClient.i18nFile.getText(I18nFile.SERVER));

    Label label_1 = new Label(dataComposite, SWT.NONE);
    label_1.setText(server);

    label_2 = new Label(dataComposite, SWT.NONE);
    label_2.setText(RedisClient.i18nFile.getText(I18nFile.DATABASE));

    Label label_3 = new Label(dataComposite, SWT.NONE);
    label_3.setText(String.valueOf(db));

    lblKey = new Label(dataComposite, SWT.NONE);
    lblKey.setText(RedisClient.i18nFile.getText(I18nFile.KEY));
   
    inputKey = new Text(dataComposite, SWT.BORDER);
    inputKey.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
    inputKey.setText(key);
    inputKey.selectAll();
    inputKey.setFocus();
   
    return dataComposite;
  }
 
  protected void initTTLTabItem(TabFolder tabFolder){
    ttlTabItem = new TabItem(tabFolder, SWT.NONE);
    ttlTabItem.setText(RedisClient.i18nFile.getText(I18nFile.TTL));
   
    ttlComposite = new Composite(tabFolder, SWT.NONE);
    ttlTabItem.setControl(ttlComposite);
    ttlComposite.setLayout(new GridLayout(2, false));
   
    btnExpire = new Button(ttlComposite, SWT.CHECK);
   
    btnExpire.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));
    btnExpire.setText(RedisClient.i18nFile.getText(I18nFile.EXPIRE));
   
    labelTTL = new Label(ttlComposite, SWT.NONE);
    labelTTL.setEnabled(false);
    labelTTL.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    labelTTL.setText(RedisClient.i18nFile.getText(I18nFile.TTLS));
   
    ttl = new Text(ttlComposite, SWT.BORDER);
    ttl.setEnabled(false);
    ttl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
   
    btnExpire.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        if(btnExpire.getSelection()){
          labelTTL.setEnabled(true);
          ttl.setEnabled(true);
        }else {
          labelTTL.setEnabled(false);
          ttl.setEnabled(false);
        }
         
      }
    });
  }
 
  protected abstract void initData(Composite dataComposite);

  public int getTTL(){
    if(btnExpire.getSelection()){
      int ttl;
      try{
        ttl = Integer.parseInt(this.ttl.getText());
      }catch(NumberFormatException e){
        throw new RuntimeException(RedisClient.i18nFile.getText(I18nFile.TTLEXCEPTION));
      }
     
      if(ttl <= 0)
        throw new RuntimeException(RedisClient.i18nFile.getText(I18nFile.TTLEXCEPTION));
      return ttl;
    }else
      return -1;
  }
 
  public String getKey(){
    String key = inputKey.getText();
    if (key.length() == 0)
      throw new RuntimeException(RedisClient.i18nFile.getText(I18nFile.INPUTKEY));
    else if(key.endsWith(separator)){
      throw new RuntimeException(RedisClient.i18nFile.getText(I18nFile.KEYENDERROR)+ separator);
    }
   
    return key;
  }
 
  public Text getInputKey(){
    return inputKey;
  }
  public void refreshLangUI(){
    dataTabItem.setText(RedisClient.i18nFile.getText(dataTitle));
    label.setText(RedisClient.i18nFile.getText(I18nFile.SERVER));
    label_2.setText(RedisClient.i18nFile.getText(I18nFile.DATABASE));
    lblKey.setText(RedisClient.i18nFile.getText(I18nFile.KEY));
   
    ttlTabItem.setText(RedisClient.i18nFile.getText(I18nFile.TTL));
    btnExpire.setText(RedisClient.i18nFile.getText(I18nFile.EXPIRE));
    labelTTL.setText(RedisClient.i18nFile.getText(I18nFile.TTLS));
    shell.pack();
  }

  public int getId() {
    return id;
  }

  public int getDb() {
    return db;
  }
}
TOP

Related Classes of com.cxy.redisclient.presentation.component.NewDataContent

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.