单元格/组件背景接口demo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

119 lines
3.8 KiB

package com.tptj.demo.hg.background.quick.ui;
import com.fr.design.DesignerEnvManager;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane;
import com.fr.general.Background;
import com.fr.invoke.Reflect;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
public class DemoPane extends BackgroundQuickPane {
private UIComboBox w_theme;
private UIComboBox w_tag;
public DemoPane(){
w_theme = new UIComboBox( ThemeManager.getInstance().getThemes() );
w_tag = new UIComboBox( ThemeManager.getInstance().getTags() );
this.setLayout(FRGUIPaneFactory.createBorderLayout());
JPanel pane = TableLayoutHelper.createTableLayoutPane(
new Component[][]{{new UILabel("主题:"),w_theme},{new UILabel("标签:"),w_tag}},
new double[]{TableLayout.PREFERRED,TableLayout.PREFERRED},
new double[]{TableLayout.PREFERRED,TableLayout.PREFERRED}
);
ItemListener listener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
change(w_theme.getSelectedItem().toString(),w_tag.getSelectedItem().toString());
}
};
w_theme.addItemListener(listener);
w_tag.addItemListener(listener);
this.add(pane, BorderLayout.NORTH);
}
@Override
/**
*
* @param background
* @return 传入的background是否是DemoBackground
*/
public boolean accept(Background background) {
return background instanceof DemoBackground;
}
@Override
public void populateBean(Background background) {
DemoBackground item = (DemoBackground)background;
w_theme.setSelectedItem(item.getTheme());
w_tag.setSelectedItem(item.getTag());
}
@Override
public Background updateBean() {
DemoBackground item = new DemoBackground();
item.setTheme( w_theme.getSelectedItem().toString() );
item.setTag( w_tag.getSelectedItem().toString() );
return item;
}
@Override
public String title4PopupWindow() {
return "Theme背景";
}
@Override
public void reset() {
w_theme.setSelectedIndex(0);
w_tag.setSelectedIndex(0);
}
private ArrayList<ChangeListener> listeners = new ArrayList<ChangeListener>();
private void change(String theme,String tag){
if ( !listeners.isEmpty() ) {
ChangeEvent evn = new ChangeEvent(this);
for( ChangeListener listener : listeners ) {
listener.stateChanged(evn);
}
}
Color color = ThemeManager.getInstance().getColor( theme, tag );
if( null != color ){
DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color);
repaint();
}
}
@Override
public void registerChangeListener(UIObserverListener listener) {
listeners.add(new ChangeListenerImpl(listener));
System.out.println();
}
class ChangeListenerImpl implements ChangeListener {
private UIObserverListener listener;
public ChangeListenerImpl(UIObserverListener listener) {
this.listener = listener;
}
public void stateChanged(ChangeEvent event) {
Reflect.on(DemoPane.this).set("backgroundChange",true);
this.listener.doChange();
Reflect.on(DemoPane.this).set("backgroundChange",false);
}
}
}