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
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); |
|
} |
|
} |
|
}
|
|
|