yaroslavskiy@3955
|
1 |
/*
|
yaroslavskiy@3955
|
2 |
* The contents of this file are subject to the terms of the Common Development
|
yaroslavskiy@3955
|
3 |
* and Distribution License (the License). You may not use this file except in
|
yaroslavskiy@3955
|
4 |
* compliance with the License.
|
yaroslavskiy@3955
|
5 |
*
|
yaroslavskiy@3955
|
6 |
* You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
yaroslavskiy@3955
|
7 |
* or http://www.netbeans.org/cddl.txt.
|
yaroslavskiy@3955
|
8 |
*
|
yaroslavskiy@3955
|
9 |
* When distributing Covered Code, include this CDDL Header Notice in each file
|
yaroslavskiy@3955
|
10 |
* and include the License file at http://www.netbeans.org/cddl.txt.
|
yaroslavskiy@3955
|
11 |
* If applicable, add the following below the CDDL Header, with the fields
|
yaroslavskiy@3955
|
12 |
* enclosed by brackets [] replaced by your own identifying information:
|
yaroslavskiy@3955
|
13 |
* "Portions Copyrighted [year] [name of copyright owner]"
|
yaroslavskiy@3955
|
14 |
*
|
yaroslavskiy@3955
|
15 |
* The Original Software is NetBeans. The Initial Developer of the Original
|
yaroslavskiy@3955
|
16 |
* Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
|
yaroslavskiy@3955
|
17 |
* Microsystems, Inc. All Rights Reserved.
|
yaroslavskiy@3955
|
18 |
*/
|
yaroslavskiy@3955
|
19 |
package org.netbeans.modules.bpel.search;
|
yaroslavskiy@3955
|
20 |
|
yaroslavskiy@3955
|
21 |
import java.awt.Color;
|
yaroslavskiy@3955
|
22 |
import java.awt.Font;
|
yaroslavskiy@3955
|
23 |
import java.util.ArrayList;
|
yaroslavskiy@3955
|
24 |
import java.util.List;
|
yaroslavskiy@3955
|
25 |
|
yaroslavskiy@3955
|
26 |
import org.netbeans.modules.bpel.model.api.BpelEntity;
|
yaroslavskiy@3955
|
27 |
import org.netbeans.modules.bpel.design.DesignView;
|
yaroslavskiy@3955
|
28 |
import org.netbeans.modules.bpel.design.decoration.Decoration;
|
yaroslavskiy@3955
|
29 |
import org.netbeans.modules.bpel.design.decoration.DecorationProvider;
|
yaroslavskiy@3955
|
30 |
import org.netbeans.modules.bpel.design.decoration.DecorationProviderFactory;
|
yaroslavskiy@4891
|
31 |
import org.netbeans.modules.bpel.design.decoration.GlowDescriptor;
|
yaroslavskiy@3955
|
32 |
import org.netbeans.modules.bpel.design.decoration.LabelStyleDescriptor;
|
yaroslavskiy@3955
|
33 |
import org.netbeans.modules.bpel.design.model.elements.VisualElement;
|
yaroslavskiy@3955
|
34 |
|
yaroslavskiy@3955
|
35 |
/**
|
yaroslavskiy@3955
|
36 |
* @author Vladimir Yaroslavskiy
|
yaroslavskiy@3955
|
37 |
* @version 2006.12.06
|
yaroslavskiy@3955
|
38 |
*/
|
yaroslavskiy@3955
|
39 |
public final class Decorator extends DecorationProvider implements DecorationProviderFactory {
|
yaroslavskiy@3955
|
40 |
|
yaroslavskiy@4891
|
41 |
public Decorator() {}
|
yaroslavskiy@3955
|
42 |
|
yaroslavskiy@3955
|
43 |
public DecorationProvider createInstance(DesignView view) {
|
yaroslavskiy@3955
|
44 |
return new Decorator(view);
|
yaroslavskiy@3955
|
45 |
}
|
yaroslavskiy@3955
|
46 |
|
yaroslavskiy@3955
|
47 |
private Decorator(DesignView view) {
|
yaroslavskiy@3955
|
48 |
super(view);
|
yaroslavskiy@3955
|
49 |
myHighlightedEntities = new ArrayList<BpelEntity>();
|
yaroslavskiy@3955
|
50 |
}
|
yaroslavskiy@3955
|
51 |
|
yaroslavskiy@3955
|
52 |
@Override
|
yaroslavskiy@3955
|
53 |
public Decoration getDecoration(BpelEntity entity) {
|
yaroslavskiy@4891
|
54 |
if ( !myIsClearSelection && mySelectedEntity == entity) {
|
yaroslavskiy@4891
|
55 |
return new Decoration(new LabelStyleDescriptor(new Color(0x339900), element, Font.BOLD)); // glow
|
yaroslavskiy@4891
|
56 |
}
|
yaroslavskiy@4891
|
57 |
if ( !myIsClearHighlighting && myHighlightedEntities.contains(entity)) {
|
yaroslavskiy@4891
|
58 |
return new Decoration(new GlowDescriptor(new Color(255, 255, 0), 20.0)); // highlight
|
yaroslavskiy@3955
|
59 |
}
|
yaroslavskiy@3955
|
60 |
return null;
|
yaroslavskiy@3955
|
61 |
}
|
yaroslavskiy@3955
|
62 |
|
yaroslavskiy@3955
|
63 |
@Override
|
yaroslavskiy@3955
|
64 |
public void release() {
|
yaroslavskiy@3955
|
65 |
mySelectedEntity = null;
|
yaroslavskiy@3955
|
66 |
myHighlightedEntities = null;
|
yaroslavskiy@3955
|
67 |
}
|
yaroslavskiy@3955
|
68 |
|
yaroslavskiy@3955
|
69 |
void select(BpelEntity entity, VisualElement findedElement) {
|
yaroslavskiy@3955
|
70 |
if (mySelectedEntity != null) {
|
yaroslavskiy@3955
|
71 |
myIsClearSelection = true;
|
yaroslavskiy@3955
|
72 |
}
|
yaroslavskiy@3955
|
73 |
myIsClearSelection = false;
|
yaroslavskiy@3955
|
74 |
mySelectedEntity = entity;
|
yaroslavskiy@3955
|
75 |
element = findedElement;
|
yaroslavskiy@3955
|
76 |
fireDecorationChanged();
|
yaroslavskiy@3955
|
77 |
}
|
yaroslavskiy@3955
|
78 |
|
yaroslavskiy@3955
|
79 |
void clearHighlighting() {
|
yaroslavskiy@3955
|
80 |
myIsClearHighlighting = true;
|
yaroslavskiy@3955
|
81 |
myIsClearSelection = true;
|
yaroslavskiy@3955
|
82 |
|
yaroslavskiy@3955
|
83 |
fireDecorationChanged();
|
yaroslavskiy@3955
|
84 |
|
yaroslavskiy@3955
|
85 |
myHighlightedEntities = new ArrayList<BpelEntity>();
|
yaroslavskiy@3955
|
86 |
myIsClearHighlighting = false;
|
yaroslavskiy@3955
|
87 |
myIsClearSelection = false;
|
yaroslavskiy@3955
|
88 |
}
|
yaroslavskiy@3955
|
89 |
|
yaroslavskiy@3955
|
90 |
void doHighlight(BpelEntity entity, boolean highlighted) {
|
yaroslavskiy@3955
|
91 |
if (highlighted) {
|
yaroslavskiy@3955
|
92 |
myHighlightedEntities.add(entity);
|
yaroslavskiy@3955
|
93 |
} else {
|
yaroslavskiy@3955
|
94 |
myHighlightedEntities.remove(entity);
|
yaroslavskiy@3955
|
95 |
}
|
yaroslavskiy@3955
|
96 |
myIsClearSelection = !highlighted;
|
yaroslavskiy@3955
|
97 |
fireDecorationChanged();
|
yaroslavskiy@3955
|
98 |
}
|
yaroslavskiy@3955
|
99 |
|
yaroslavskiy@3955
|
100 |
static Decorator getDecorator(DesignView view) {
|
yaroslavskiy@3955
|
101 |
List<DecorationProvider> providers = view.getDecorationManager().getProviders();
|
yaroslavskiy@3955
|
102 |
|
yaroslavskiy@3955
|
103 |
for (DecorationProvider provider : providers) {
|
yaroslavskiy@3955
|
104 |
if (provider instanceof Decorator) {
|
yaroslavskiy@3955
|
105 |
return (Decorator) provider;
|
yaroslavskiy@3955
|
106 |
}
|
yaroslavskiy@3955
|
107 |
}
|
yaroslavskiy@3955
|
108 |
return null;
|
yaroslavskiy@4891
|
109 |
}
|
yaroslavskiy@3955
|
110 |
|
yaroslavskiy@4891
|
111 |
private VisualElement element;
|
yaroslavskiy@3955
|
112 |
private boolean myIsClearSelection;
|
yaroslavskiy@3955
|
113 |
private boolean myIsClearHighlighting;
|
yaroslavskiy@3955
|
114 |
private BpelEntity mySelectedEntity;
|
yaroslavskiy@3955
|
115 |
private List<BpelEntity> myHighlightedEntities;
|
yaroslavskiy@3955
|
116 |
}
|