This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 185586
Collapse All | Expand All

(-)a/editor.settings/src/org/netbeans/api/editor/settings/AttributesUtilities.java (+123 lines)
Lines 151-156 Link Here
151
                case 0: return SimpleAttributeSet.EMPTY;
151
                case 0: return SimpleAttributeSet.EMPTY;
152
                case 1: return all.get(0);
152
                case 1: return all.get(0);
153
                case 2: return new Composite2(all.get(0), all.get(1));
153
                case 2: return new Composite2(all.get(0), all.get(1));
154
                case 3: return new Composite4(all.get(0), all.get(1), all.get(2), null);
155
                case 4: return new Composite4(all.get(0), all.get(1), all.get(2), all.get(4));
154
                default: return new BigComposite(all);
156
                default: return new BigComposite(all);
155
            }
157
            }
156
        }
158
        }
Lines 517-520 Link Here
517
            return allKeys;
519
            return allKeys;
518
        }
520
        }
519
    } // End of Composite2 class
521
    } // End of Composite2 class
522
523
    private static final class Composite4 implements AttributeSet, CompositeAttributeSet {
524
525
        private final AttributeSet delegate0;
526
        private final AttributeSet delegate1;
527
        private final AttributeSet delegate2;
528
        private final AttributeSet delegate3;
529
530
        public Composite4(AttributeSet delegate0, AttributeSet delegate1, AttributeSet delegate2, AttributeSet delegate3) {
531
            this.delegate0 = delegate0;
532
            this.delegate1 = delegate1;
533
            this.delegate2 = delegate2;
534
            this.delegate3 = delegate3;
535
        }
536
537
        @Override
538
        public Collection<? extends AttributeSet> getDelegates() {
539
            if (delegate3 == null) {
540
                return Arrays.asList(delegate0, delegate1, delegate2);
541
            } else {
542
                return Arrays.asList(delegate0, delegate1, delegate2, delegate3);
543
            }
544
        }
545
546
        @Override
547
        public boolean isEqual(AttributeSet attr) {
548
            return containsAttributes(attr) && attr.containsAttributes(this);
549
        }
550
551
        @Override
552
        public boolean containsAttributes(AttributeSet attributes) {
553
            for(Enumeration<?> keys = attributes.getAttributeNames(); keys.hasMoreElements(); ) {
554
                Object key = keys.nextElement();
555
                Object value = attributes.getAttribute(key);
556
557
                if (!containsAttribute(key, value)) {
558
                    return false;
559
                }
560
            }
561
562
            return true;
563
        }
564
565
        @Override
566
        public boolean isDefined(Object key) {
567
            return delegate0.isDefined(key) || delegate1.isDefined(key) || delegate2.isDefined(key) || delegate3 != null && delegate3.isDefined(key);
568
        }
569
570
        @Override
571
        public Object getAttribute(Object key) {
572
            if (key instanceof String && key.equals(ATTR_DISMANTLED_STRUCTURE)) {
573
                return dismantle(this);
574
            }
575
            AttributeSet[] set;
576
            if (delegate3 == null) {
577
                set = new AttributeSet[] {delegate0, delegate1, delegate2};
578
            } else {
579
                set = new AttributeSet[] {delegate0, delegate1, delegate2, delegate3};
580
            }
581
582
            for(AttributeSet delegate : set) {
583
            	AttributeSet current = delegate;
584
            	while (current != null) {
585
            		if (current.isDefined(key)) {
586
                            return current.getAttribute(key);
587
            		}
588
            		current = current.getResolveParent();
589
            	}
590
            }
591
592
            return null;
593
        }
594
595
        @Override
596
        public AttributeSet getResolveParent() {
597
            return null;
598
        }
599
600
        @Override
601
        public Enumeration<?> getAttributeNames() {
602
            return Collections.enumeration(getAllKeys());
603
        }
604
605
        @Override
606
        public int getAttributeCount() {
607
            return getAllKeys().size();
608
        }
609
610
        @Override
611
        public AttributeSet copyAttributes() {
612
            if (delegate3 == null) {
613
                return createImmutable(delegate0, delegate1, delegate2);
614
            } else {
615
                return createImmutable(delegate0, delegate1, delegate2, delegate3);
616
            }
617
        }
618
619
        @Override
620
        public boolean containsAttribute(Object key, Object value) {
621
            return delegate0.containsAttribute(key, value) || delegate1.containsAttribute(key, value) ||
622
                   delegate2.containsAttribute(key, value) || delegate3 != null && delegate3.containsAttribute(key, value);
623
        }
624
625
        private Collection<?> getAllKeys() {
626
            HashSet<Object> allKeys = new HashSet<Object>();
627
            AttributeSet[] set;
628
            if (delegate3 == null) {
629
                set = new AttributeSet[] {delegate0, delegate1, delegate2};
630
            } else {
631
                set = new AttributeSet[] {delegate0, delegate1, delegate2, delegate3};
632
            }
633
            for(AttributeSet delegate : set) {
634
                for(Enumeration<?> keys = delegate.getAttributeNames(); keys.hasMoreElements(); ) {
635
                    Object key = keys.nextElement();
636
                    allKeys.add(key);
637
                }
638
            }
639
640
            return allKeys;
641
        }
642
    } // End of Composite4 class
520
}
643
}

Return to bug 185586