Ejemplo n.º 1
0
 private bool inRange(IAC_Range range)
 {
     if (!(range.value is java.lang.annotation.Annotation))
     {
         return(true);
     }
     return(range.start >= begin && range.start < end &&
            range.end > begin && range.end <= end);
 }
Ejemplo n.º 2
0
 private System.Object currentValue(java.util.List <IAC_Range> ranges)
 {
     java.util.Iterator <IAC_Range> it = ranges.iterator();
     while (it.hasNext())
     {
         IAC_Range range = it.next();
         if (offset >= range.start && offset < range.end)
         {
             return(inRange(range) ? range.value : null);
         }
     }
     return(null);
 }
Ejemplo n.º 3
0
 private bool inRange(java.util.List <IAC_Range> ranges)
 {
     java.util.Iterator <IAC_Range> it = ranges.iterator();
     while (it.hasNext())
     {
         IAC_Range range = it.next();
         if (range.start >= begin && range.start < end)
         {
             return(!(range.value is java.lang.annotation.Annotation) ||
                    (range.end > begin && range.end <= end));
         }
         else if (range.end > begin && range.end <= end)
         {
             return(!(range.value is java.lang.annotation.Annotation) ||
                    (range.start >= begin && range.start < end));
         }
     }
     return(false);
 }
Ejemplo n.º 4
0
        private int runStart(java.util.List <IAC_Range> ranges)
        {
            int result = begin;

            java.util.Iterator <IAC_Range> it = ranges.iterator();
            while (it.hasNext())
            {
                IAC_Range range = it.next();
                if (range.start >= end)
                {
                    break;
                }
                if (offset >= range.start && offset < range.end)
                {
                    return(inRange(range) ? range.start : result);
                }
                else if (offset < range.start)
                {
                    break;
                }
                result = range.end;
            }
            return(result);
        }
Ejemplo n.º 5
0
        private int runLimit(java.util.List <IAC_Range> ranges)
        {
            int result = end;

            java.util.ListIterator <IAC_Range> it = ranges.listIterator(ranges.size());
            while (it.hasPrevious())
            {
                IAC_Range range = it.previous();
                if (range.end <= begin)
                {
                    break;
                }
                if (offset >= range.start && offset < range.end)
                {
                    return(inRange(range) ? range.end : result);
                }
                else if (offset >= range.end)
                {
                    break;
                }
                result = range.start;
            }
            return(result);
        }
Ejemplo n.º 6
0
        /**
         * Applies a given attribute to the given range of this string.
         *
         * @param attribute
         *            the attribute that will be applied to this string.
         * @param value
         *            the value of the attribute that will be applied to this
         *            string.
         * @param start
         *            the start of the range where the attribute will be applied.
         * @param end
         *            the end of the range where the attribute will be applied.
         * @throws IllegalArgumentException
         *             if {@code start < 0}, {@code end} is greater than the length
         *             of this string, or if {@code start >= end}.
         * @throws NullPointerException
         *             if {@code attribute} is {@code null}.
         */
        public void addAttribute(AttributedCharacterIteratorNS.Attribute attribute,
                                 System.Object value, int start, int end)
        {
            if (null == attribute)
            {
                throw new java.lang.NullPointerException();
            }
            if (start < 0 || end > text.Length || start >= end)
            {
                throw new java.lang.IllegalArgumentException();
            }

            if (value == null)
            {
                return;
            }

            java.util.List <IAC_Range> ranges = attributeMap.get(attribute);
            if (ranges == null)
            {
                ranges = new java.util.ArrayList <IAC_Range>(1);
                ranges.add(new IAC_Range(start, end, value));
                attributeMap.put(attribute, ranges);
                return;
            }
            java.util.ListIterator <IAC_Range> it = ranges.listIterator();
            while (it.hasNext())
            {
                IAC_Range range = it.next();
                if (end <= range.start)
                {
                    it.previous();
                    break;
                }
                else if (start < range.end ||
                         (start == range.end && value.Equals(range.value)))
                {
                    IAC_Range r1 = null, r3;
                    it.remove();
                    r1 = new IAC_Range(range.start, start, range.value);
                    r3 = new IAC_Range(end, range.end, range.value);

                    while (end > range.end && it.hasNext())
                    {
                        range = it.next();
                        if (end <= range.end)
                        {
                            if (end > range.start ||
                                (end == range.start && value.Equals(range.value)))
                            {
                                it.remove();
                                r3 = new IAC_Range(end, range.end, range.value);
                                break;
                            }
                        }
                        else
                        {
                            it.remove();
                        }
                    }

                    if (value.Equals(r1.value))
                    {
                        if (value.Equals(r3.value))
                        {
                            it.add(new IAC_Range(r1.start <start?r1.start : start,
                                                           r3.end> end ? r3.end : end, r1.value));
                        }
                        else
                        {
                            it.add(new IAC_Range(r1.start < start ? r1.start : start,
                                                 end, r1.value));
                            if (r3.start < r3.end)
                            {
                                it.add(r3);
                            }
                        }
                    }
                    else
                    {
                        if (value.Equals(r3.value))
                        {
                            if (r1.start < r1.end)
                            {
                                it.add(r1);
                            }
                            it.add(new IAC_Range(start, r3.end > end ? r3.end : end,
                                                 r3.value));
                        }
                        else
                        {
                            if (r1.start < r1.end)
                            {
                                it.add(r1);
                            }
                            it.add(new IAC_Range(start, end, value));
                            if (r3.start < r3.end)
                            {
                                it.add(r3);
                            }
                        }
                    }
                    return;
                }
            }
            it.add(new IAC_Range(start, end, value));
        }
Ejemplo n.º 7
0
 private bool inRange(IAC_Range range)
 {
     if (!(range.value is java.lang.annotation.Annotation)) {
         return true;
     }
     return range.start >= begin && range.start < end
             && range.end > begin && range.end <= end;
 }
Ejemplo n.º 8
0
        /**
         * Applies a given attribute to the given range of this string.
         *
         * @param attribute
         *            the attribute that will be applied to this string.
         * @param value
         *            the value of the attribute that will be applied to this
         *            string.
         * @param start
         *            the start of the range where the attribute will be applied.
         * @param end
         *            the end of the range where the attribute will be applied.
         * @throws IllegalArgumentException
         *             if {@code start < 0}, {@code end} is greater than the length
         *             of this string, or if {@code start >= end}.
         * @throws NullPointerException
         *             if {@code attribute} is {@code null}.
         */
        public void addAttribute(AttributedCharacterIteratorNS.Attribute attribute,
                System.Object value, int start, int end)
        {
            if (null == attribute) {
                throw new java.lang.NullPointerException();
            }
            if (start < 0 || end > text.Length || start >= end) {
                throw new java.lang.IllegalArgumentException();
            }

            if (value == null) {
                return;
            }

            java.util.List<IAC_Range> ranges = attributeMap.get(attribute);
            if (ranges == null) {
                ranges = new java.util.ArrayList<IAC_Range>(1);
                ranges.add(new IAC_Range(start, end, value));
                attributeMap.put(attribute, ranges);
                return;
            }
            java.util.ListIterator<IAC_Range> it = ranges.listIterator();
            while (it.hasNext()) {
                IAC_Range range = it.next();
                if (end <= range.start) {
                    it.previous();
                    break;
                } else if (start < range.end
                        || (start == range.end && value.Equals(range.value))) {
                    IAC_Range r1 = null, r3;
                    it.remove();
                    r1 = new IAC_Range(range.start, start, range.value);
                    r3 = new IAC_Range(end, range.end, range.value);

                    while (end > range.end && it.hasNext()) {
                        range = it.next();
                        if (end <= range.end) {
                            if (end > range.start
                                    || (end == range.start && value.Equals(range.value))) {
                                it.remove();
                                r3 = new IAC_Range(end, range.end, range.value);
                                break;
                            }
                        } else {
                            it.remove();
                        }
                    }

                    if (value.Equals(r1.value)) {
                        if (value.Equals(r3.value)) {
                            it.add(new IAC_Range(r1.start < start ? r1.start : start,
                                    r3.end > end ? r3.end : end, r1.value));
                        } else {
                            it.add(new IAC_Range(r1.start < start ? r1.start : start,
                                    end, r1.value));
                            if (r3.start < r3.end) {
                                it.add(r3);
                            }
                        }
                    } else {
                        if (value.Equals(r3.value)) {
                            if (r1.start < r1.end) {
                                it.add(r1);
                            }
                            it.add(new IAC_Range(start, r3.end > end ? r3.end : end,
                                    r3.value));
                        } else {
                            if (r1.start < r1.end) {
                                it.add(r1);
                            }
                            it.add(new IAC_Range(start, end, value));
                            if (r3.start < r3.end) {
                                it.add(r3);
                            }
                        }
                    }
                    return;
                }
            }
            it.add(new IAC_Range(start, end, value));
        }