📄 tasknodepanel.java
字号:
gridBagLayout.setConstraints(toolbar,gbc);
rightPanel.add(toolbar);
gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = gbc.weighty = 1;
gbc.insets = new Insets(8,8,8,8);
gridBagLayout.setConstraints(postconditionsPanel,gbc);
rightPanel.add(postconditionsPanel);
}
protected class GroupToolBar extends JToolBar
implements ActionListener {
protected HelpWindow helpWin;
protected JToggleButton helpBtn;
protected JButton newBtn;
protected JButton deleteBtn;
protected JButton copyBtn;
protected GroupManager groupManager;
public GroupToolBar(GroupManager groupManager) {
this.groupManager = groupManager;
setBackground(Color.lightGray);
setBorder(new BevelBorder(BevelBorder.LOWERED));
setMargin(new Insets(0,0,0,0));
setFloatable(false);
String sep = System.getProperty("file.separator");
String path = SystemProps.getProperty("gif.dir") + "generator" + sep;
// New Button
newBtn = new JButton(new ImageIcon(path + "new1.gif"));
newBtn.setMargin(new Insets(0,0,0,0));
add(newBtn);
newBtn.setToolTipText("New group");
newBtn.addActionListener(this);
// Delete Button
deleteBtn = new JButton(new ImageIcon(path + "delete1.gif"));
deleteBtn.setMargin(new Insets(0,0,0,0));
add(deleteBtn);
deleteBtn.setToolTipText("Delete group");
deleteBtn.addActionListener(this);
// Clone Button
copyBtn = new JButton(new ImageIcon(path + "copy.gif"));
copyBtn.setMargin(new Insets(0,0,0,0));
add(copyBtn);
copyBtn.setToolTipText("Copy group");
copyBtn.addActionListener(this);
addSeparator();
// Help Button
helpBtn = new JToggleButton(new ImageIcon(path + "help.gif"));
helpBtn.setMargin(new Insets(0,0,0,0));
add(helpBtn);
helpBtn.setToolTipText("Help");
helpBtn.addActionListener(this);
}
public void setEnabled(boolean set) {
newBtn.setEnabled(set);
deleteBtn.setEnabled(set);
copyBtn.setEnabled(set);
helpBtn.setEnabled(set);
}
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if ( src == newBtn )
groupManager.newGroup();
else if ( src == deleteBtn )
groupManager.deleteGroup();
else if ( src == copyBtn )
groupManager.copyGroup();
else if ( src == helpBtn ) {
if ( helpBtn.isSelected() ) {
Point pt = getLocation();
helpWin = new HelpWindow(SwingUtilities.getRoot(this),
pt, "generator", "Task Node Conditions Group");
helpWin.setSource(helpBtn);
}
else
helpWin.dispose();
}
}
}
protected class SymRenameAction implements RenameListener {
public void nameChanged(RenameEvent e) {
Object src = e.getSource();
if ( src == leftGroupManager || src == rightGroupManager ) {
nameTable.put(e.getOriginal(),e.getCurrent());
}
}
}
protected class SymFocusAction implements FocusListener, ActionListener {
public void focusGained(FocusEvent e) {
}
public void focusLost(FocusEvent e) {
this.update(e);
}
public void actionPerformed(ActionEvent e) {
this.update(e);
}
public void update(AWTEvent e) {
Object src = e.getSource();
if ( src == namefield ) {
if ( previousName != null ) {
String name = namefield.getText();
if ( name == null ) {
errorMsg(0);
namefield.setText(previousName);
}
name = name.trim();
if ( name.equals("") ) {
errorMsg(0);
namefield.setText(previousName);
}
if ( !previousName.equals(name) ) {
nameTable.put(previousName,name);
fireRenameAction(namefield,previousName,name);
}
}
}
}
}
protected void errorMsg(int tag) {
JOptionPane.showMessageDialog(this,ERROR_MESSAGE[tag],
"Error", JOptionPane.ERROR_MESSAGE);
}
GroupManager getPostconditionsManager() { return rightGroupManager; }
GroupManager getPreconditionsManager() { return leftGroupManager; }
TaskNode getNode() {
TaskNode node;
if ( isConditionalNode )
node = new ConditionalNode(namefield.getText());
else
node = new TaskNode(namefield.getText());
node.setPreconditions(leftGroupManager.getManagerData());
node.setPostconditions(rightGroupManager.getManagerData());
return node;
}
Hashtable getNameTable() {
return nameTable;
}
void reset(TaskNode node) {
isConditionalNode = false;
previousName = node.getName();
namefield.setText(previousName);
factPanel.removeAll();
nameTable.clear();
leftGroupManager.removeRelatedModel(rightGroupManager);
rightGroupManager.removeRelatedModel(leftGroupManager);
leftGroupManager.removeFactModelListener(rightGroupManager);
leftGroupManager.resetManager(node.getAllPreconditions());
rightGroupManager.resetManager(node.getAllPostconditions());
postconditionsPanel.setToolBarState(true);
rightGroupManager.setEditable(true);
if ( node.isBeginNode() ) {
namefield.setEditable(false);
factPanel.add(rightPanel);
toolbar.setEnabled(false);
rightCombo.setEnabled(false);
postAttrTable.setFactModel(rightGroupManager);
}
else if ( node.isEndNode() ) {
namefield.setEditable(false);
factPanel.add(leftPanel);
preAttrTable.setFactModel(leftGroupManager);
}
else if ( node.isConditionalNode() ) {
isConditionalNode = true;
namefield.setEditable(true);
factPanel.add(leftPanel);
factPanel.add(rightPanel);
toolbar.setEnabled(true);
rightCombo.setEnabled(true);
postconditionsPanel.setToolBarState(false);
rightGroupManager.setEditable(false);
leftGroupManager.addFactModelListener(rightGroupManager);
preAttrTable.setFactModel(leftGroupManager);
postAttrTable.setFactModel(leftGroupManager);
rightGroupManager.resetManager(node.getAllPostconditions(),
node.getPreconditions());
}
else {
namefield.setEditable(true);
factPanel.add(leftPanel);
factPanel.add(rightPanel);
toolbar.setEnabled(false);
rightCombo.setEnabled(false);
leftGroupManager.addRelatedModel(rightGroupManager);
rightGroupManager.addRelatedModel(leftGroupManager);
preAttrTable.setFactModels(leftGroupManager,rightGroupManager);
postAttrTable.setFactModels(leftGroupManager,rightGroupManager);
}
}
public void addRenameListener(RenameListener x) {
nameListeners.add(RenameListener.class, x);
leftGroupManager.addRenameListener(x);
rightGroupManager.addRenameListener(x);
}
public void removeRenameListener(RenameListener x) {
nameListeners.remove(RenameListener.class, x);
leftGroupManager.removeRenameListener(x);
rightGroupManager.removeRenameListener(x);
}
protected void fireRenameAction(Object src, Object prev, Object curr) {
RenameEvent e = new RenameEvent(this,src,prev,curr);
Object[] listeners = nameListeners.getListenerList();
for(int i = listeners.length-2; i >= 0; i -= 2) {
if (listeners[i] == RenameListener.class) {
RenameListener l = (RenameListener)listeners[i+1];
l.nameChanged(e);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -