Package org.epic.perleditor.views

Source Code of org.epic.perleditor.views.ExplainErrorsView

/*
* Created on Jan 31, 2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.epic.perleditor.views;

import java.util.ArrayList;
import java.util.HashMap;

import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.epic.core.Constants;

/**
* @author luelljoc
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class ExplainErrorsView extends ViewPart {

  private StyledText explanationText;
  private Color red;
  private Color yellow;
  private Color black;
 
  private HashMap levels;
 

  public ExplainErrorsView() {
    levels = new HashMap();
    levels.put("(W)", "A warning (optional)");
    levels.put("(W once)", "A warning (optional)");
    levels.put("(D)", "A deprecation (optional)");
    levels.put("(S)", "A severe warning (default)");
    levels.put("(F)", "A fatal error (trappable)");
    levels.put("(P)", "An internal error you should never see (trappable)");
    levels.put("(X)", "A very fatal error (nontrappable)");
    levels.put("(A)", "An alien error message (not generated by Perl)");
  }
  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
   */
  public void createPartControl(Composite parent) {
    explanationText = new StyledText(parent, SWT.MULTI | SWT.V_SCROLL
        | SWT.H_SCROLL);
    explanationText.setEditable(false);
   
    red = new Color(parent.getDisplay(), 216, 60, 26);
    yellow = new Color(parent.getDisplay(), 211, 140, 29);
    black = new Color(parent.getDisplay(), 0, 0, 0);

  }
   
  public String getText()
    {
        return explanationText.getText();
    }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
   */
  public void setFocus() {
    explanationText.setFocus();
  }
 
  public void explain(ArrayList markers) {
    explanationText.setText("");
   
    for(int i=0; i<markers.size(); i++) {
      IMarker marker = (IMarker) markers.get(i);
      try {
        int pos = explanationText.getCharCount();
        explanationText.append((String) marker.getAttribute(IMarker.MESSAGE) +"\n");
       
        int severity = ((Integer) marker.getAttribute(IMarker.SEVERITY)).intValue();
       
        StyleRange styleRange = new StyleRange();
            styleRange.start = pos;
            styleRange.length = ((String) marker.getAttribute(IMarker.MESSAGE)).length();
            styleRange.fontStyle = SWT.BOLD;
            styleRange.foreground = severity == IMarker.SEVERITY_WARNING ? yellow : red;
            explanationText.setStyleRange(styleRange);
           
           
            String expStr = (String) marker.getAttribute(Constants.MARKER_ATTR_PERL_ERROR_EXPLANATION);
           
            String levelStr = null;
           
            if(expStr.length() > 0) {
              levelStr = (String) levels.get(expStr.substring(0,expStr.indexOf(")")+1));
            }
           
            if(levelStr != null) {
              pos = explanationText.getCharCount();
              explanationText.append(levelStr +"\n");
             
              styleRange = new StyleRange();
              styleRange.start = pos;
              styleRange.length = levelStr.length();
              styleRange.fontStyle = SWT.ITALIC;
              styleRange.foreground = black;
              explanationText.setStyleRange(styleRange);
            }

       
        explanationText.append(levelStr != null ? expStr.substring(expStr.indexOf(")")+2) : expStr);
        explanationText.append("\n");
      } catch (CoreException e) {
        e.printStackTrace();
      }
    }
  }

}
TOP

Related Classes of org.epic.perleditor.views.ExplainErrorsView

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.