⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vjpview.java

📁 AStar算法
💻 JAVA
字号:
/******************************************************************************* * Copyright © 2008 Sandro Badame. All Rights Reserved. *  * This software and the accompanying materials is available under the  * Eclipse Public License 1.0 (EPL), which accompanies this distribution, and is * available at http://visualjpf.sourceforge.net/epl-v10.html ******************************************************************************/package com.javapathfinder.vjp.verify.view;import org.eclipse.jface.viewers.ISelectionChangedListener;import org.eclipse.jface.viewers.IStructuredSelection;import org.eclipse.jface.viewers.SelectionChangedEvent;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.SashForm;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.layout.FormAttachment;import org.eclipse.swt.layout.FormData;import org.eclipse.swt.layout.FormLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Display;import org.eclipse.ui.PartInitException;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.part.ViewPart;import com.javapathfinder.vjp.VJP;import com.javapathfinder.vjp.verify.VerifyJob;import com.javapathfinder.vjp.verify.view.TraceTable.TransitionInfo;/** * This class represent the VJP view. * The view includes: * <ul> * <li>Control Panel - controls the execution of the verification</li> * <li>Trace Table - displays the current thread trace</li> * <li>Transition View - displays information about the selected transition</li> * <li>Error view - displays the errors found (if any) during the verification</li> * </ul> * @author Sandro Badame * */public class VJPView extends ViewPart implements ISelectionChangedListener{    private static VJPView view;  protected static final String id = "com.javapathfinder.vjp.vjpview";    /**   * Finds a currently opened VJP view or creates a new one.    * @return the VJPView found   */  public static VJPView getView() {    if (view == null || view.getTraceTable().getTable().isDisposed())      try {        view = (VJPView) PlatformUI.getWorkbench().getWorkbenchWindows()[0].getPages()[0].showView(id);      } catch (PartInitException e) {        VJP.logError(e.getMessage(),e);      }    view.reset();    return view;  }    private static final int[] left_right_sash_weights = new int[]{1,4};  private static final int[] transition_error_sash_weights = new int[]{5,2};  private TransitionView transitionView;  private TraceTable traceTable;  private ControlPanel controlPanel;  private ErrorViewer errorViewer;  private VerifyJob job;    /*    * Create all of this UI stuff   * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)   */  public void createPartControl(Composite parent) {    SashForm s = new SashForm(parent, SWT.HORIZONTAL );    createTraceComposite(s, SWT.NULL);    createDetailComposite(s, SWT.NULL);    s.setWeights(left_right_sash_weights);     addListeners();  }    private void createTraceComposite(Composite parent, int style){    Composite c = new Composite(parent, SWT.BORDER);    c.setLayout(new FormLayout());    FormData d = new FormData();    d.top = new FormAttachment(0, 0);    d.left = new FormAttachment(0, 0);    d.right = new FormAttachment(100, 0);        controlPanel = new ControlPanel(c, SWT.NULL);    controlPanel.setLayoutData(d);        Composite c2 = new Composite(c, SWT.NULL);    c2.setLayout(new FillLayout());    traceTable = new TraceTable(c2, SWT.BORDER);    FormData d2 = new FormData();    d2.top = new FormAttachment(controlPanel, 5);    d2.bottom = new FormAttachment(100, 0);    d2.left = new FormAttachment(0, 0);    d2.right = new FormAttachment(100, 0);    c2.setLayoutData(d2);      }    private void createDetailComposite(Composite parent, int style){    SashForm s = new SashForm(parent, style | SWT.VERTICAL );    transitionView = new TransitionView(s, SWT.BORDER | SWT.V_SCROLL);    errorViewer = new ErrorViewer(s, SWT.BORDER | SWT.V_SCROLL);    s.setWeights(transition_error_sash_weights);  }    private void addListeners(){    traceTable.addSelectionChangedListener(this);        final SelectionListener stepRunStart = new SelectionListener(){      public void widgetDefaultSelected(SelectionEvent e) {        widgetSelected(e);      }      public void widgetSelected(SelectionEvent e) {        if (e.getSource().equals(controlPanel.getRunButton()))          job.setStepRun(false);        else if (e.getSource().equals(controlPanel.getStepButton()))          job.setStepRun(true);        else{          VJP.logError("Unexpected if reached in setRunStartListener");          return;        }        controlPanel.getRunButton().removeSelectionListener(this);        controlPanel.getStepButton().removeSelectionListener(this);        job.schedule();      }          };        SelectionListener reset = new SelectionListener(){      public void widgetDefaultSelected(SelectionEvent e) {        widgetSelected(e);              }            public void widgetSelected(SelectionEvent e) {        if (!e.getSource().equals(controlPanel.getResetButton()))          return;                job.cancel();        reset();        controlPanel.getRunButton().addSelectionListener(stepRunStart);        controlPanel.getStepButton().addSelectionListener(stepRunStart);      }          };        getControlPanel().getResetButton().addSelectionListener(reset);    getControlPanel().getResetButton().setEnabled(false);  }      /**   *    * @return the trace table for this view   */  public TraceTable getTraceTable(){    return traceTable;  }    /**   * @return the control panel for this view   */  public ControlPanel getControlPanel(){    return controlPanel;  }    /**   * @return the error viewer for this view   */  public ErrorViewer getErrorViewer(){    return errorViewer;  }  /**   * Fires when the ExecutionTable selection changes   * @param event   */  public void selectionChanged(SelectionChangedEvent event) {     IStructuredSelection s = (IStructuredSelection)event.getSelection();     TransitionInfo t = (TransitionInfo) s.getFirstElement();     if (t != null)       transitionView.setTransitionInfo(t);  }  /*    * @see org.eclipse.ui.part.WorkbenchPart#setFocus()   */  public void setFocus() {}    /**   * Set the job that this view is associated with   * @param job   */  public void setVerifyJob(VerifyJob job){    this.job = job;  }    /**   * Clear all information in this view   *   */  public void reset() {    Runnable r = new Runnable(){      public void run(){        traceTable.clearAll();        traceTable.refresh();        transitionView.setTransitionInfo(null);        errorViewer.clearAll();      }    };    Display.getDefault().syncExec(r);  }  /**   * Run the Verify job   * @param job the Job to be run   */  public void runVerify(VerifyJob job) {    setFocus();    setVerifyJob(job);    job.schedule();  }  /**   * @return the transitionView   */  public TransitionView getTransitionView() {    return transitionView;  }  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -