Package com.onpositive.gae.baseviewer

Source Code of com.onpositive.gae.baseviewer.BlobStoreViewPart

package com.onpositive.gae.baseviewer;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabFolder2Listener;
import org.eclipse.swt.custom.CTabFolderEvent;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.ui.part.PageBook;

import com.onpositive.commons.elements.RootElement;
import com.onpositive.commons.elements.UniversalUIElement;
import com.onpositive.gae.tools.GaeBridge;
import com.onpositive.gae.tools.UIUtils;
import com.onpositive.gae.tools.core.CheckLaunchJob;
import com.onpositive.gae.tools.license.LicenseChecker;
import com.onpositive.semantic.model.api.command.ICommand;
import com.onpositive.semantic.model.api.command.ICommitListener;
import com.onpositive.semantic.model.api.property.IValueListener;
import com.onpositive.semantic.model.api.property.adapters.ITextLabelProvider;
import com.onpositive.semantic.model.binding.Binding;
import com.onpositive.semantic.model.realm.Realm;
import com.onpositive.semantic.model.ui.property.editors.DisposeBindingListener;
import com.onpositive.semantic.model.ui.property.editors.OneLineTextElement;
import com.onpositive.semantic.model.ui.property.editors.structured.ComboEnumeratedValueSelector;

public class BlobStoreViewPart extends DataViewPart {
  {
    tableUi = new BlobStoreTableUI();
  }

 
  public void createPartControl(Composite parent) {
    creation = true;
    tableUi = new BlobStoreTableUI();
    try {
      com.onpositive.gae.tools.license.LicenseChecker.checkLicense(true);

      GridLayout layout2 = new GridLayout(1, false);
      layout2.marginHeight = 0;
      layout2.marginWidth = 0;
      parent.setLayout(layout2);
      Composite owner = new Composite(parent, SWT.NONE);
      pageBook = new PageBook(parent, SWT.NONE);
      final Browser lm = new Browser(pageBook, SWT.NONE);
      lm.setText("<h3>No open tabs</h3> <p>To show Blobs from Blob Storage, please:<br>1) Choose connection configuration between 'manipulate with local server' or 'manipulate with development server';<br>2) click either 'add view'.");
      viewHolder = new CTabFolder(pageBook, SWT.NONE | SWT.CLOSE
          | SWT.BORDER);
      pageBook.showPage(lm);
      owner.setLayoutData(GridDataFactory.fillDefaults()
          .grab(true, false).create());
      pageBook.setLayoutData(GridDataFactory.fillDefaults()
          .grab(true, true).create());
      viewHolder.setLayoutData(GridDataFactory.fillDefaults()
          .grab(true, true).create());
      toolBarManager = new ToolBarManager();
      dAction = tableUi.createActions(toolBarManager, false);
      Composite mn = new Composite(viewHolder, SWT.NONE);
      for (IContributionItem i : toolBarManager.getItems()) {
        if (i instanceof ActionContributionItem) {
          ActionContributionItem b = (ActionContributionItem) i;
          b.getAction().setEnabled(false);
        }
      }
      mn.setLayout(new FillLayout());
      ToolBar localToolbar = toolBarManager.createControl(owner);

      viewHolder.setTopRight(mn);
      viewHolder.layout(true, true);
      viewHolder.addCTabFolder2Listener(new CTabFolder2Listener() {

        public void showList(CTabFolderEvent event) {

        }

        public void restore(CTabFolderEvent event) {

        }

        public void minimize(CTabFolderEvent event) {

        }

        public void maximize(CTabFolderEvent event) {

        }

        public void close(CTabFolderEvent event) {
          Widget item = event.item;
          item.dispose();
          if (viewHolder.getItems().length == 0) {
            statLabel.setText("");
          }
        }
      });
      // viewHolder.setTopRight(owner);
      GridLayout layout = new GridLayout(3, false);
      layout.marginHeight = 0;

      // layout.marginHeight=0;
      owner.setLayout(layout);

      // Link la = new Link(owner, SWT.NONE);
      // la.setText("Add view of kind:");
      RootElement r = new RootElement(owner);
      r.setLayoutData(GridDataFactory.fillDefaults().grab(true, false)
          .create());
      GridLayout layout32 = new GridLayout(7, false);
      r.setLayout(layout32);
      layout32.marginHeight = 3;

      Binding bnd = new Binding("");

      // //\\\\
      // bnd.setValue(kind, null);
      // //\\\\\

      // bnd.setName("");
      // bnd.setRequired(true);

      Binding b = new Binding(this);
      b.setAutoCommit(true);
      OneLineTextElement<String> l = new OneLineTextElement<String>();
      l.setCaption("Display not more then:");
      Binding binding2 = b.getBinding("limit");
      binding2.setRealm(new Realm<String>("All", "10", "100", "500",
          "1000", "10000"));
      binding2.addCommitListener(new ICommitListener() {

        public void commitPerformed(ICommand command) {
          CTabItem selection = viewHolder.getSelection();
          if (selection != null) {
            BaseDataFacade bf = (BaseDataFacade) selection
                .getData();
            try {
              bf.setLimit(Integer.parseInt(limit));
            } catch (NumberFormatException e1) {
              bf.setLimit(-1);
            }
          }
        }
      });
      l.setBinding(binding2);
      l.setLayoutData(GridDataFactory.fillDefaults().hint(50, -1)
          .create());
      ComboEnumeratedValueSelector<IProject> v = new ComboEnumeratedValueSelector<IProject>();
      DisposeBindingListener.linkBindingLifeCycle(b, l);
      binding = new Binding("");
      binding.setRequired(true);

      binding.setName("Project:");
      projects = new Realm<IProject>();
      initProjects(projects);
      binding.setRealm(projects);
      v.setBinding(binding);
      if (projectString != null) {
        for (IProject p : projects) {
          if (p.getName().equals(projectString)) {
            setProject(JavaCore.create(p));
          }
        }
      }
      DisposeBindingListener.linkBindingLifeCycle(binding, v);
      binding.addValueListener(new IValueListener<Object>() {

        public void valueChanged(Object oldValue, Object newValue) {
          IProject pr = null;
          if (newValue instanceof String) {
            pr = ResourcesPlugin.getWorkspace().getRoot()
                .getProject(newValue.toString());
          }
          if (newValue instanceof IProject) {
            pr = (IProject) newValue;
          }
          if (pr != null) {
            IJavaProject create = JavaCore.create(pr);
            if (project == null
                || !create.getElementName().equals(
                    project.getElementName())) {
              setProject(create);
            }
          } else {
            setProject(null);
          }
        }
      });
      binding.setAdapter(ITextLabelProvider.class,
          new ITextLabelProvider() {

            public String getText(Object object) {
              if (object == null) {
                return "";
              }
              IProject p = (IProject) object;
              return p.getName();
            }

            public String getDescription(Object object) {
              return "";
            }
          });
      r.add(l);
      r.add(v);
      r.add(new UniversalUIElement<ToolBar>(ToolBar.class, SWT.NONE) {

        protected ToolBar createControl(Composite conComposite) {
          ToolBarManager tm = new ToolBarManager();

          tm.add(new Action("Add view") { // Add view from development
            // server

            {
              /*
               * ToolBarManager tm = new ToolBarManager(); boolean
               * isLocal =
               * Activator.getDefault().getPreferenceStore()
               * .getDefaultBoolean("CONNECTION_MODE");
               */

              /*
               * if(isLocal){
               * setText("Add view from local server");
               * setToolTipText("Add view from local server");
               */
              setImageDescriptor(Activator
                  .imageDescriptorFromPlugin(
                      Activator.PLUGIN_ID,
                      "/icons/exec_view_obj.gif"));
              // setT
              /*
               * }else{
               * setText("Add view from production server");
               * setToolTipText
               * ("Add view from production server");
               *
               * setImageDescriptor(Activator
               * .imageDescriptorFromPlugin( Activator.PLUGIN_ID,
               * "/icons/locale.png"));
               *
               * }
               */
            }

            public void run() {
              boolean isLocal = isDebug();
              if (isLocal) {
                addView(true);
              } else {
                addView(false);
              }
            }

          });
          /*
           * tm.add(new Action("Add view from production server") {
           *
           * { setImageDescriptor(Activator
           * .imageDescriptorFromPlugin( Activator.PLUGIN_ID,
           * "/icons/locale.png")); }
           *
           * public void run() { addView(false); }
           *
           * });
           */
          return tm.createControl(conComposite);
        }

      });
      viewHolder.addSelectionListener(new SelectionListener() {

        public void widgetSelected(SelectionEvent e) {
          CTabItem selection = viewHolder.getSelection();
          // BaseDataFacade bf = (BaseDataFacade) selection.getData();
          BlobStoreDataFacade bf = (BlobStoreDataFacade) selection
              .getData();
          try {
            bf.setLimit(Integer.parseInt(limit));
          } catch (NumberFormatException e1) {
            bf.setLimit(-1);
          }
          tableUi.setFacade(bf);
          String text = bf.getStatus();
          statLabel.setText(text);
          status.layout(true);
        }

        public void widgetDefaultSelected(SelectionEvent e) {

        }
      });
      status = new Composite(viewHolder, SWT.NONE);
      GridLayout layout3 = new GridLayout();
      layout3.marginHeight = 2;
      status.setLayout(layout3);
      statLabel = new Label(status, SWT.RIGHT);
      statLabel.setText("Status");
      statLabel.setLayoutData(GridDataFactory.fillDefaults()
          .align(GridData.END, GridData.CENTER).grab(true, false)
          .create());
      statLabel.setForeground(Display.getCurrent().getSystemColor(
          SWT.COLOR_LIST_SELECTION));
      viewHolder.setTopRight(status, SWT.FILL);
      viewHolder.addCTabFolder2Listener(new CTabFolder2Listener() {

        public void showList(CTabFolderEvent event) {
        }

        public void restore(CTabFolderEvent event) {

        }

        public void minimize(CTabFolderEvent event) {

        }

        public void maximize(CTabFolderEvent event) {

        }

        public void close(CTabFolderEvent event) {
          CTabItem widget = (CTabItem) event.item;
          widget.getControl().dispose();
          if (viewHolder.getItemCount() == 1) {
            pageBook.showPage(lm);
            for (IContributionItem i : toolBarManager.getItems()) {
              ActionContributionItem b = (ActionContributionItem) i;
              b.getAction().setEnabled(false);
            }
          }
        }
      });
    } finally {
      creation = false;
    }
  }

  protected void addView(boolean debug) {
    if (!LicenseChecker.checkLicense(debug)) {
      return;
    }
    if (project == null) {
      IJavaProject javaGaeProject = UIUtils.getJavaGaeProject();

      if (javaGaeProject != null) {
        setProject(javaGaeProject);
      } else {
        return;
      }
    }
    String appId = GaeBridge.getAppId(project.getProject());
    if (appId == null || appId.trim().length() == 0) {
      if (!debug) {
        MessageDialog.openError(
            Display.getCurrent().getActiveShell(),
            "Application id is not specified",
            "Application id is not specified for "
                + project.getElementName()
                + ".\n\nSpecify application id and try again");
        return;
      }
    }

    if (debug) {
      CheckLaunchJob d = new CheckLaunchJob("Checking launch", project,
          false);
      d.schedule();

      //int a = 0;
      long l1 = System.currentTimeMillis();
      long l2 = System.currentTimeMillis();
      while (d.getResult() == null && (l2 - l1) <= 30000) {

        Thread.yield();
        Display.getCurrent().readAndDispatch();
        l2 = System.currentTimeMillis();
        //a++;
      }

      if (d.getPort() == -1) {
        return;
      }
    }

    final CTabItem cTabItem = new CTabItem(viewHolder, SWT.CLOSE);
    cTabItem.setText("BlobStorage" + " (" + project.getElementName() + ")");
    cTabItem.setShowClose(true);

    Composite owner = new Composite(viewHolder, SWT.NONE);
    owner.setLayout(new FillLayout());
    for (IContributionItem i : toolBarManager.getItems()) {
      if (i instanceof ActionContributionItem) {
        ActionContributionItem b = (ActionContributionItem) i;
        b.getAction().setEnabled(true);
      }
    }

    BaseViewer bd = new BaseViewer(dAction, tableUi, project.getProject(),
        "");
    bd.createControl(owner);
    final BlobStoreDataFacade facade = new BlobStoreDataFacade("", project,
        isDebug(), bd.getRefreshCallback(), bd.getSingleCallback());
    try {
      int parseInt = Integer.parseInt(limit);
      facade.setLimit(parseInt);
    } catch (NumberFormatException e) {

    }
    facade.setStatusCallback(new IStatusCallback() {

      public void statusChanged(final String newStatus) {
        Display.getDefault().asyncExec(new Runnable() {

          public void run() {
            if (viewHolder.getSelection() == cTabItem) {

              statLabel.setText(newStatus);
              status.layout(true, true);
            }
          }
        });
      }
    });
    bd.setDataFacade(facade);
    cTabItem.setData(facade);
    cTabItem.setControl(owner);
    cTabItem.setImage(debug ? DataViewPart.debug : production);
    viewHolder.setSelection(cTabItem);
    tableUi.setFacade(facade);
    pageBook.showPage(viewHolder);
  }

  public void setProject(final IJavaProject project) {
    this.project = project;
    binding.setValue(project.getProject(), null);

  }
}
TOP

Related Classes of com.onpositive.gae.baseviewer.BlobStoreViewPart

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.