⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propertypanel.java.rej

📁 拥有图形界面的
💻 REJ
字号:
****************** 1,123 ****- /**-  * $ $ License.-  *-  * Copyright $ L2FProd.com-  *-  * Licensed under the Apache License, Version 2.0 (the "License");-  * you may not use this file except in compliance with the License.-  * You may obtain a copy of the License at-  *-  *     http://www.apache.org/licenses/LICENSE-2.0-  *-  * Unless required by applicable law or agreed to in writing, software-  * distributed under the License is distributed on an "AS IS" BASIS,-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.-  * See the License for the specific language governing permissions and-  * limitations under the License.-  */- package org.joone.edit;- - import com.l2fprod.common.propertysheet.Property;- import com.l2fprod.common.propertysheet.PropertySheet;- import com.l2fprod.common.propertysheet.PropertySheetPanel;- import com.l2fprod.common.swing.LookAndFeelTweaks;- import java.awt.BorderLayout;- import java.awt.Dimension;- - import java.beans.BeanInfo;- import java.beans.IntrospectionException;- import java.beans.Introspector;- import java.beans.PropertyChangeEvent;- import java.beans.PropertyChangeListener;- import java.beans.PropertyDescriptor;- import java.lang.reflect.Method;- import java.util.ArrayList;- import javax.swing.JComponent;- import javax.swing.JPanel;- import javax.swing.JScrollPane;- - /**-  * PropertyPanel. <br>-  */- public class PropertyPanel extends JPanel {-     final PropertySheetPanel sheet;-     Wrapper source;-     -     public PropertyPanel() {-         setLayout(new BorderLayout());-         sheet = new PropertySheetPanel();-         sheet.setMode(PropertySheet.VIEW_AS_FLAT_LIST);-         sheet.setToolBarVisible(false);-         sheet.setDescriptionVisible(false);-         sheet.setPreferredSize(new Dimension(60,170));-         JScrollPane scroll = new JScrollPane(sheet);-         add(scroll, BorderLayout.CENTER);-     }-     -     public void setTarget(Wrapper wrapper) {-         source = wrapper;-         final Object target = wrapper.getBean();-         // Remove the old listener-         PropertyChangeListener listener = (PropertyChangeListener)sheet.getClientProperty("listener");-         if (listener != null)-             sheet.removePropertySheetChangeListener(listener);-         -         try {-             BeanInfo beanInfo =  Introspector.getBeanInfo(target.getClass());-             sheet.setMode(PropertySheet.VIEW_AS_FLAT_LIST);-             PropertyDescriptor[] props = beanInfo.getPropertyDescriptors();-             sheet.setProperties(getFilteredProperties(props));-             // Initialize the properties with the value from the object.-             Property[] properties = sheet.getProperties();-             for (int i = 0, c = properties.length; i < c; i++) {-                 try {-                     properties[i].readFromObject(target);-                 } catch (Exception doNothing) { /* Left intentionally empty */ }-             }-             setListener(target, sheet);-         } catch (IntrospectionException ex) {-             ex.printStackTrace();-         }-         -     }-     -     public void update() {-         source.updateFigure();-     }-     -     /**-      * This utility class filters the properties of an object-      * in order to include only the properties that are not hidden,-      * not expert, and have declared both the getter and setter methods.-      * Used to display the correct properties in the PropertySheetPanel.-      */-     private PropertyDescriptor[] getFilteredProperties(PropertyDescriptor[] origin) {-         ArrayList props = new ArrayList();-         for (int i=0; i < origin.length; ++i) {-             PropertyDescriptor prop = origin[i];-             Method getter = prop.getReadMethod();-             Method setter = prop.getWriteMethod();-             if ((!prop.isHidden()) && (!prop.isExpert()) &&-                     (setter != null) && (getter != null))-                 props.add(prop);-         }-         return (PropertyDescriptor[])props.toArray(new PropertyDescriptor[props.size()]);-     }-     -     private void setListener(final Object theObject, PropertySheetPanel sheet) {-         // everytime a property change, update the component with it-         PropertyChangeListener listener = new PropertyChangeListener() {-             public void propertyChange(PropertyChangeEvent evt) {-                 Property prop = (Property)evt.getSource();-                 prop.writeToObject(theObject);-                 if (theObject instanceof JComponent)-                     ((JComponent)theObject).repaint();-                 source.updateFigure();-             }-         };-         sheet.addPropertySheetChangeListener(listener);-         sheet.putClientProperty("listener", listener);-         sheet.repaint();-     }-     - }--- 1,114 ----+ /**+  * $ $ License.+  *+  * Copyright $ L2FProd.com+  *+  * Licensed under the Apache License, Version 2.0 (the "License");+  * you may not use this file except in compliance with the License.+  * You may obtain a copy of the License at+  *+  *     http://www.apache.org/licenses/LICENSE-2.0+  *+  * Unless required by applicable law or agreed to in writing, software+  * distributed under the License is distributed on an "AS IS" BASIS,+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+  * See the License for the specific language governing permissions and+  * limitations under the License.+  */+ package org.joone.edit;+ + import java.awt.*;+ import java.beans.*;+ import java.lang.reflect.*;+ import java.util.*;+ + import javax.swing.*;+ + import com.l2fprod.common.propertysheet.*;+ import com.l2fprod.common.propertysheet.PropertySheet;+ + /**+  * PropertyPanel. <br>+  */+ public class PropertyPanel extends JPanel {+     final PropertySheetPanel sheet;+     Wrapper source;+     +     public PropertyPanel() {+         setLayout(new BorderLayout());+         sheet = new PropertySheetPanel();+         sheet.setMode(PropertySheet.VIEW_AS_FLAT_LIST);+         sheet.setToolBarVisible(false);+         sheet.setDescriptionVisible(false);+         sheet.setPreferredSize(new Dimension(60,170));+         JScrollPane scroll = new JScrollPane(sheet);+         add(scroll, BorderLayout.CENTER);+     }+     +     public void setTarget(Wrapper wrapper) {+         source = wrapper;+         final Object target = wrapper.getBean();+         // Remove the old listener+         PropertyChangeListener listener = (PropertyChangeListener)sheet.getClientProperty("listener");+         if (listener != null)+             sheet.removePropertySheetChangeListener(listener);+         +         try {+             BeanInfo beanInfo =  Introspector.getBeanInfo(target.getClass());+             sheet.setMode(PropertySheet.VIEW_AS_FLAT_LIST);+             PropertyDescriptor[] props = beanInfo.getPropertyDescriptors();+             sheet.setProperties(getFilteredProperties(props));+             // Initialize the properties with the value from the object.+             Property[] properties = sheet.getProperties();+             for (int i = 0, c = properties.length; i < c; i++) {+                 try {+                     properties[i].readFromObject(target);+                 } catch (Exception doNothing) { /* Left intentionally empty */ }+             }+             setListener(target, sheet);+         } catch (IntrospectionException ex) {+             ex.printStackTrace();+         }+         +     }+     +     public void update() {+         source.updateFigure();+     }+     +     /**+      * This utility class filters the properties of an object+      * in order to include only the properties that are not hidden,+      * not expert, and have declared both the getter and setter methods.+      * Used to display the correct properties in the PropertySheetPanel.+      */+     private PropertyDescriptor[] getFilteredProperties(PropertyDescriptor[] origin) {+         ArrayList props = new ArrayList();+         for (int i=0; i < origin.length; ++i) {+             PropertyDescriptor prop = origin[i];+             Method getter = prop.getReadMethod();+             Method setter = prop.getWriteMethod();+             if ((!prop.isHidden()) && (!prop.isExpert()) &&+                     (setter != null) && (getter != null))+                 props.add(prop);+         }+         return (PropertyDescriptor[])props.toArray(new PropertyDescriptor[props.size()]);+     }+     +     private void setListener(final Object theObject, PropertySheetPanel sheet) {+         // everytime a property change, update the component with it+         PropertyChangeListener listener = new PropertyChangeListener() {+             public void propertyChange(PropertyChangeEvent evt) {+                 Property prop = (Property)evt.getSource();+                 prop.writeToObject(theObject);+                 if (theObject instanceof JComponent)+                     ((JComponent)theObject).repaint();+                 source.updateFigure();+             }+         };+         sheet.addPropertySheetChangeListener(listener);+         sheet.putClientProperty("listener", listener);+         sheet.repaint();+     }+     + }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -