帆软报表设计器源代码。
 
 
 
 

116 lines
3.2 KiB

package com.fr.design.designer;
import com.fr.design.event.TargetModifiedEvent;
import com.fr.design.event.TargetModifiedListener;
import com.fr.design.mainframe.AuthorityEditPane;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef;
import com.fr.third.javax.annotation.Nullable;
import javax.swing.JComponent;
import javax.swing.JPanel;
/**
* 模板设计界面
*/
public abstract class TargetComponent<T> extends JComponent {
private T target;
public TargetComponent(T t) {
this.target = t;
}
public TargetComponent() {
}
// TODO ALEX_SEP JWorkBook不想有copy, paste, cut的操作,怎么办?
public abstract void copy();
public abstract boolean paste();
public abstract boolean cut();
public abstract void stopEditing();
public T getTarget() {
return target;
}
public abstract AuthorityEditPane createAuthorityEditPane();
/**
* 提供默认空实现。大部分子类不需要这个方法,覆写的莫名其妙的
*/
@Nullable
public ToolBarMenuDockPlus getToolBarMenuDockPlus() {
return null;
}
public abstract int getMenuState();
public abstract JPanel getEastUpPane();
public abstract JPanel getEastDownPane();
public abstract void cancelFormat();
public void setTarget(T t) {
if (t != null) {
this.target = t;
}
}
///////////////////////////////////////Event Listener//////////////
/**
* Adds a <code>TargetModifiedListener</code> to the listener list.
*/
public void addTargetModifiedListener(TargetModifiedListener targetModifiedListener) {
this.listenerList.add(TargetModifiedListener.class, targetModifiedListener);
}
/**
* Removes a <code>TargetModifiedListener</code> from the listener list.
*/
public void removeTargetModifiedListener(TargetModifiedListener targetModifiedListener) {
this.listenerList.remove(TargetModifiedListener.class, targetModifiedListener);
}
/**
* Fire template modified listeners.
*/
public void fireTargetModified() {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == TargetModifiedListener.class) {
((TargetModifiedListener) listeners[i + 1]).targetModified(new TargetModifiedEvent(this));
}
}
this.repaint(30);
}
///////////////////////////////////////ToolBarMenuDock//////////////
public abstract ToolBarDef[] toolbars4Target();
public abstract MenuDef[] menus4Target();
public abstract ShortCut[] shortcut4TemplateMenu();
public abstract ShortCut[] shortCuts4Authority();
public abstract JComponent[] toolBarButton4Form();
///////////////////////////////////////EditingState//////////////
public EditingState createEditingState() {
return EditingState.NULL;
}
}