001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.vmd.midp.screen.display;
043:
044: import java.awt.Dimension;
045: import java.awt.Graphics;
046: import java.util.ArrayList;
047: import java.util.Collection;
048: import java.util.List;
049: import javax.swing.JPanel;
050: import org.netbeans.modules.vmd.api.model.PropertyValue;
051: import org.netbeans.modules.vmd.api.screen.display.ScreenDeviceInfo;
052: import org.netbeans.modules.vmd.api.screen.display.ScreenPropertyDescriptor;
053: import org.netbeans.modules.vmd.midp.components.MidpTypes;
054: import org.netbeans.modules.vmd.midp.components.items.GaugeCD;
055: import org.netbeans.modules.vmd.midp.screen.display.property.ResourcePropertyEditor;
056:
057: /**
058: *
059: * @author Anton Chechel
060: * @version 1.0
061: */
062: public class GaugeDisplayPresenter extends ItemDisplayPresenter {
063:
064: private JPanel panel;
065: private GaugeDisplayPresenterElement gauge;
066:
067: public GaugeDisplayPresenter() {
068: gauge = new GaugeDisplayPresenterElement();
069: panel = new JPanel() {
070: @Override
071: public void paint(Graphics g) {
072: super .paint(g);
073: gauge.setPanel(this );
074: gauge.paintGauge(g);
075: }
076: };
077: panel.setOpaque(false);
078: panel.setPreferredSize(new Dimension(200, 40)); // TODO compute it from fontSize
079: setContentComponent(panel);
080: panel.repaint();
081: panel.revalidate();
082: }
083:
084: @Override
085: public void reload(ScreenDeviceInfo deviceInfo) {
086: super .reload(deviceInfo);
087: gauge.setSize(panel.getSize());
088:
089: PropertyValue pv = getComponent().readProperty(
090: GaugeCD.PROP_INTERACTIVE);
091: if (PropertyValue.Kind.VALUE.equals(pv.getKind())) {
092: gauge.setInteractive(MidpTypes.getBoolean(pv));
093: }
094:
095: pv = getComponent().readProperty(GaugeCD.PROP_MAX_VALUE);
096: int maxValue = 1;
097: if (PropertyValue.Kind.VALUE.equals(pv.getKind())) {
098: maxValue = MidpTypes.getInteger(pv);
099: }
100: if (maxValue < 0) {
101: maxValue = 1;
102: }
103: gauge.setMaxValue(maxValue);
104:
105: pv = getComponent().readProperty(GaugeCD.PROP_VALUE);
106: int value = 0;
107: if (PropertyValue.Kind.VALUE.equals(pv.getKind())) {
108: value = MidpTypes.getInteger(pv);
109: }
110: if (value < 0) {
111: value = 0;
112: } else if (value > maxValue) {
113: value = maxValue;
114: }
115: gauge.setValue(value);
116:
117: panel.repaint();
118: }
119:
120: @Override
121: public Collection<ScreenPropertyDescriptor> getPropertyDescriptors() {
122: ResourcePropertyEditor gaugePropertyEditor = new ResourcePropertyEditor(
123: GaugeCD.PROP_VALUE, getComponent());
124: List<ScreenPropertyDescriptor> descriptors = new ArrayList<ScreenPropertyDescriptor>();
125: descriptors.addAll(super .getPropertyDescriptors());
126: descriptors.add(new ScreenPropertyDescriptor(getComponent(),
127: panel, gaugePropertyEditor));
128: return descriptors;
129: }
130: }
|