예제 #1
0
 public void SelectDescriptionLine(int line)
  {
      UpdateState();
      if (line == -1) {
          ClearSelection();
      }
      else {
          DescriptionLineKind kind = activeDescription[line].kind;
          if (kind == DescriptionLineKind.Title)
              SetSelection(SelectionKind.Title, Id<CourseControl>.None, Id<CourseControl>.None, LegInsertionLoc.Normal, Id<ControlPoint>.None, Id<Special>.None, null, DescriptionLine.TextLineKind.None);
          else if (kind == DescriptionLineKind.SecondaryTitle)
              SetSelection(SelectionKind.SecondaryTitle, Id<CourseControl>.None, Id<CourseControl>.None, LegInsertionLoc.Normal, Id<ControlPoint>.None, Id<Special>.None, null, DescriptionLine.TextLineKind.None);
          else if (kind == DescriptionLineKind.Header2Box || kind == DescriptionLineKind.Header3Box)
              SetSelection(SelectionKind.Header, Id<CourseControl>.None, Id<CourseControl>.None, LegInsertionLoc.Normal, Id<ControlPoint>.None, Id<Special>.None, null, DescriptionLine.TextLineKind.None);
          else if (kind == DescriptionLineKind.Key)
              SetSelection(SelectionKind.Key, Id<CourseControl>.None, Id<CourseControl>.None, LegInsertionLoc.Normal, Id<ControlPoint>.None, Id<Special>.None, (Symbol) activeDescription[line].boxes[0], DescriptionLine.TextLineKind.None);
          else if (kind == DescriptionLineKind.Text)
              SetSelection(SelectionKind.TextLine, activeDescription[line].courseControlId, Id<CourseControl>.None, LegInsertionLoc.Normal, activeDescription[line].controlId, Id<Special>.None, null, activeDescription[line].textLineKind);
          else if (kind == DescriptionLineKind.Directive && ((Symbol)(activeDescription[line].boxes[0])).Id == "13.5control")
              SetSelection(SelectionKind.MapExchangeAtControl, activeDescription[line].courseControlId, Id<CourseControl>.None, LegInsertionLoc.Normal, activeDescription[line].controlId, Id<Special>.None, null, DescriptionLine.TextLineKind.None);
          else if (activeDescription[line].isLeg)
              SetSelection(SelectionKind.Leg, activeDescription[line].courseControlId, activeDescription[line].courseControlId2, LegInsertionLoc.Normal, activeDescription[line].controlId, Id<Special>.None, null, DescriptionLine.TextLineKind.None);
          else
              SetSelection(SelectionKind.Control, activeDescription[line].courseControlId, Id<CourseControl>.None, LegInsertionLoc.Normal, activeDescription[line].controlId, Id<Special>.None, null, DescriptionLine.TextLineKind.None);
      }
  }
예제 #2
0
        // Given the text, create descriptions line for a title line with that text. Lines are split by vertical bars.
        private DescriptionLine[] GetTitleLineFromText(DescriptionLineKind kind, string text)
        {
            string[] texts     = text.Split(new char[] { '|' });
            int      lineCount = texts.Length;

            DescriptionLine[] lines = new DescriptionLine[lineCount];
            for (int index = 0; index < lineCount; ++index)
            {
                DescriptionLine line = new DescriptionLine();

                line.kind     = kind;
                line.boxes    = new object[1];
                line.boxes[0] = texts[index];
                line.textual  = texts[index];

                lines[index] = line;
            }

            return(lines);
        }
예제 #3
0
        // Update the selected line in the active description.
        void UpdateSelectedLine()
        {
            bool titleFound = false;

            if (selectionKind == SelectionKind.None || selectionKind == SelectionKind.Special) {
                selectedDescriptionLineFirst = selectedDescriptionLineLast = -1;
                return;
            }

            // Go through each line and try to find one that matches the selection.
            for (int line = 0; line < activeDescription.Length; ++line) {
                DescriptionLineKind lineKind = activeDescription[line].kind;

                if (selectionKind == SelectionKind.Title && lineKind == DescriptionLineKind.Title) {
                    if (!titleFound)
                        selectedDescriptionLineFirst = line;
                    selectedDescriptionLineLast = line;
                    titleFound = true;
                }

                if (selectionKind == SelectionKind.SecondaryTitle && lineKind == DescriptionLineKind.SecondaryTitle) {
                    if (!titleFound)
                        selectedDescriptionLineFirst = line;
                    selectedDescriptionLineLast = line;
                    titleFound = true;
                }

                if (selectionKind == SelectionKind.TextLine && (lineKind == DescriptionLineKind.Text && activeDescription[line].textLineKind == selectedTextLineKind &&
                                                                                          selectedCourseControl == activeDescription[line].courseControlId && selectedControl == activeDescription[line].controlId)) {
                    if (!titleFound)
                        selectedDescriptionLineFirst = line;
                    selectedDescriptionLineLast = line;
                    titleFound = true;
                }

                if (selectionKind == SelectionKind.Header && (lineKind == DescriptionLineKind.Header2Box || lineKind == DescriptionLineKind.Header3Box)) {
                    selectedDescriptionLineFirst = selectedDescriptionLineLast = line;
                    return;
                }

                if (selectionKind == SelectionKind.Key && (lineKind == DescriptionLineKind.Key && activeDescription[line].boxes[0] == selectedKeySymbol)) {
                    selectedDescriptionLineFirst = selectedDescriptionLineLast = line;
                    return;
                }

                if (selectionKind == SelectionKind.MapExchangeAtControl && lineKind == DescriptionLineKind.Directive && (activeDescription[line].boxes[0] is Symbol) &&
                    (activeDescription[line].boxes[0] as Symbol).Id == "13.5control" && selectedCourseControl == activeDescription[line].courseControlId)
                {
                    selectedDescriptionLineFirst = selectedDescriptionLineLast = line;
                    return;
                }

                if (selectionKind == SelectionKind.Control && (lineKind == DescriptionLineKind.Normal || lineKind == DescriptionLineKind.Directive) && !activeDescription[line].isLeg) {
                    if (selectedCourseControl.IsNotNone && selectedCourseControl == activeDescription[line].courseControlId) {
                        selectedControl = activeDescription[line].controlId;
                        selectedDescriptionLineFirst = selectedDescriptionLineLast = line;
                        return;
                    }

                    if (selectedCourseControl.IsNone && selectedControl.IsNotNone && selectedControl == activeDescription[line].controlId) {
                        selectedDescriptionLineFirst = selectedDescriptionLineLast = line;
                        return;
                    }
                }

                if (selectionKind == SelectionKind.Leg && activeDescription[line].isLeg) {
                    if (selectedCourseControl.IsNotNone && selectedCourseControl == activeDescription[line].courseControlId &&
                        selectedCourseControl2.IsNotNone && selectedCourseControl2 == activeDescription[line].courseControlId2) {
                        selectedDescriptionLineFirst = selectedDescriptionLineLast = line;
                        return;
                    }
                }
            }

            if (titleFound)
                return;

            if (selectionKind == SelectionKind.Leg) {
                // Not all legs have a matching line.
                selectedDescriptionLineFirst = selectedDescriptionLineLast = -1;
                return;
            }

            // No matching line.
            selectedDescriptionLineFirst = selectedDescriptionLineLast = -1;

            if (selectionKind == SelectionKind.TextLine || selectionKind == SelectionKind.Key || selectionKind == SelectionKind.SecondaryTitle) {
                // no matching line found. The selection must be gone.
                ClearSelection();
            }
        }
예제 #4
0
        // Given the text, create descriptions line for a title line with that text. Lines are split by vertical bars.
        private DescriptionLine[] GetTitleLineFromText(DescriptionLineKind kind, string text)
        {
            string[] texts = text.Split(new char[] { '|' });
            int lineCount = texts.Length;

            DescriptionLine[] lines = new DescriptionLine[lineCount];
            for (int index = 0; index < lineCount; ++index) {
                DescriptionLine line = new DescriptionLine();

                line.kind = kind;
                line.boxes = new object[1];
                line.boxes[0] = texts[index];
                line.textual = texts[index];

                lines[index] = line;
            }

            return lines;
        }