/**
  * Look through the list of known error message strings, looking for a match, and return the
  * suggested solution.
  *
  * @param err an error message you want to look up the solution for
  * @param type the class of error (parser, validator, viewcompiler), or null for any match
  * @return a solution message if available, otherwise the empty string
  */
 static String findSolution(String err, String type) {
   for (int i = 0; i < errs.size(); i++) {
     SolutionMessage msg = (SolutionMessage) errs.get(i);
     // Look for match of the err message within our error string
     if ((type == null || msg.errType.equals(type)) && regexp(err, msg.errMessage)) {
       return msg.solution;
     }
   }
   return "";
 }
 public String[] getNames(boolean checkBoxState) {
   final ArrayList<String> result = new ArrayList<String>();
   collectActionIds(
       result, (ActionGroup) myActionManager.getActionOrStub(IdeActions.GROUP_MAIN_MENU));
   if (checkBoxState) {
     final Set<String> ids = ((ActionManagerImpl) myActionManager).getActionIds();
     for (String id : ids) {
       final AnAction anAction = myActionManager.getAction(id);
       if (!(anAction instanceof ActionGroup)) {
         result.add(id);
       }
     }
   }
   return ArrayUtil.toStringArray(result);
 }
 /** Parse a string of the form [x1,y1},[x2,y2},...,[xN,yN} into a list of Points ([int,int]) */
 public static List<Point> parseString(String str) throws NumberFormatException {
   if (StringUtil.isNullString(str)) {
     throw new IllegalArgumentException("Must supply non-empty string");
   }
   ArrayList<Point> res = new ArrayList<Point>();
   Perl5Matcher matcher = RegexpUtil.getMatcher();
   while (matcher.contains(str, ONE_POINT_PAT)) {
     MatchResult matchResult = matcher.getMatch();
     String xstr = matchResult.group(1);
     String ystr = matchResult.group(2);
     str = matchResult.group(3);
     try {
       int x = Integer.parseInt(xstr);
       int y = Integer.parseInt(ystr);
       res.add(new Point(x, y));
     } catch (NumberFormatException e) {
       throw new IllegalArgumentException("bad point [" + xstr + "," + ystr + "] in " + str);
     }
   }
   res.trimToSize();
   return res;
 }
  /**
   * Filters a collection according to the include and exclude parameters.
   *
   * @param c The collection to filter.
   * @return A filtered collection.
   */
  protected Collection filterCollection(Collection c) {
    ArrayList<Object> result = new ArrayList<Object>();

    PatternMatcher pm = new Perl5Matcher();

    for (Iterator i = c.iterator(); i.hasNext(); ) {
      String pageName = null;
      Object objectje = i.next();
      if (objectje instanceof WikiPage) {
        pageName = ((WikiPage) objectje).getName();
      } else {
        pageName = (String) objectje;
      }

      //
      //  If include parameter exists, then by default we include only those
      //  pages in it (excluding the ones in the exclude pattern list).
      //
      //  include='*' means the same as no include.
      //
      boolean includeThis = m_include == null;

      if (m_include != null) {
        for (int j = 0; j < m_include.length; j++) {
          if (pm.matches(pageName, m_include[j])) {
            includeThis = true;
            break;
          }
        }
      }

      if (m_exclude != null) {
        for (int j = 0; j < m_exclude.length; j++) {
          if (pm.matches(pageName, m_exclude[j])) {
            includeThis = false;
            break; // The inner loop, continue on the next item
          }
        }
      }

      if (includeThis) {
        if (objectje instanceof WikiPage) {
          result.add(objectje);
        } else {
          result.add(pageName);
        }
        //
        //  if we want to show the last modified date of the most recently change page, we keep a
        // "high watermark" here:
        WikiPage page = null;
        if (m_lastModified) {
          page = m_engine.getPage(pageName);
          if (page != null) {
            Date lastModPage = page.getLastModified();
            if (log.isDebugEnabled()) {
              log.debug("lastModified Date of page " + pageName + " : " + m_dateLastModified);
            }
            if (lastModPage.after(m_dateLastModified)) {
              m_dateLastModified = lastModPage;
            }
          }
        }
      }
    }

    return result;
  }
  static {
    errs.add(
        new SolutionMessage(
            PARSER,
            // This error message indicates a stray XML escape character
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="The content of elements must consist of well-formed character data or markup"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-101"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Look for stray or unmatched XML escape chars ( <, >, or & ) in your source code. When using '<' in a Script, XML requires wrapping the Script content with '<![CDATA[' and ']]>'. "
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-108")));

    errs.add(
        new SolutionMessage(
            PARSER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="entity name must immediately follow the '&' in the entity reference"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-117"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Look for unescaped '&' characters in your source code."
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-124")));

    errs.add(
        new SolutionMessage(
            VIEWCOMPILER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Was expecting one of: instanceof"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-133"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="The element and attribute names in .lzx files are case-sensitive; Look for a mistake in the upper/lower case spelling of attribute names, i.e., \"onClick\" instead of \"onclick\""
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-140")));

    errs.add(
        new SolutionMessage(
            PARSER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="\"\" is not a valid local name"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-150"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Make sure that every <class> and <attribute> tag element contains a non-empty 'name' attribute, and each <method> element contains a non-empty 'name' or 'event' attribute."
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-157")));

    errs.add(
        new SolutionMessage(
            PARSER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="The root element is required in a well-formed document"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-166"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Check for invalid UTF8 characters in your source file. LZX XML files may contain only legal UTF-8 character codes. If you see a character with an accent over it, it might be the problem."
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-173")));

    errs.add(
        new SolutionMessage(
            PARSER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Content is not allowed in prolog"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-182"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Some text editors may insert a Byte-Order Mark (the sequence of characters 0xEFBBBF) at the start of your source file without your knowledge. Please remove any non-whitespace characters before the start of the first '<' character."
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-189")));

    errs.add(
        new SolutionMessage(
            PARSER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="The reference to entity.*must end with the"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-198"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Look for a misplaced or unescaped ampersand ('&') character in your source code."
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-205")));

    errs.add(
        new SolutionMessage(
            VIEWCOMPILER,
            "unable to build font",
            "The font may be a bold or italic style, try adding style=\"bold\" or \"italic\" attribute to font tag"));

    errs.add(
        new SolutionMessage(
            VIEWCOMPILER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Lexical error.  The source location is for the element that contains the erroneous script"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-215"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Examine the compiler warnings for warnings about undefined class or attribute names."
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-222")));

    errs.add(
        new SolutionMessage(
            PARSER,
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Error in building"
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-231"),
            /* (non-Javadoc)
             * @i18n.test
             * @org-mes="Check for invalid UTF8 characters in your source file. LZX XML files may contain only legal UTF-8 character codes. If you see a character with an accent over it, it might be the problem."
             */
            org.openlaszlo.i18n.LaszloMessages.getMessage(
                SolutionMessages.class.getName(), "051018-238")));
  }