/*
* PanelServiceGroupEdit.java
*
* Created on 26 Июнь 2008 г., 17:18
*/
package clips.directory.editors.serviceGroup;
import cli_fmw.delegate.DelegateLine2;
import beans.directory.service.entity.ServiceGroupDetails;
import clips.contract.info.contractService.TreeModelServiceGroup;
import clips.delegate.directory.filtered.DirectoryCheckupType;
import clips.delegate.directory.filtered.DirectoryCheckupTypeItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.filtered.DirectoryService;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import clips.delegate.directory.complex.DirectoryServicesGroup;
import clips.delegate.directory.complex.DirectoryServicesGroupItem;
import clips.delegate.directory.filtered.ChildServiceData;
import cli_fmw.main.ClipsException;
import cli_fmw.directory.dialogs.DirectoryDialogDefault;
import cli_fmw.main.MainWindow;
import clips.directory.dialogs.DirectoryDialogService;
import cli_fmw.main.PageContainer;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PrintCreators;
import cli_fmw.main.Printable;
import cli_fmw.report.TableReportOptions;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.Selector;
import cli_fmw.utils.ModalDialog;
import cli_fmw.utils.SelectorEditableExceptional;
import cli_fmw.utils.table_config_states.StateSaver;
import cli_fmw.utils.table_config_states.TableState;
import clips.delegate.directory.simple.reqType.DirectoryReqType;
import clips.delegate.directory.simple.serviceClass.DirectoryServiceClass;
import clips.delegate.directory.simple.visitType.DirectoryVisitType;
import beans.directory.service.entity.ServiceToServiceDetails;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumn;
import javax.swing.tree.TreeSelectionModel;
/**
* редактор групп услуг и услуг
* @author lacoste
*/
public class PanelServiceGroupEdit extends PageGeneric implements Printable{
private DirectoryServicesGroupItem serviceGroup;
private Selector<DirectoryServiceItem> services;
private DirectoryServiceItem serviceItem;
private DirectoryServiceItem serviceItemToMove;
private String a[] = {"ОК", "Отмена"};
/** Creates new form PanelServiceGroupEdit */
public PanelServiceGroupEdit(PageContainer container) throws ClipsException {
super(container);
initComponents();
tabService.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
try {
int k = tabService.getSelectedRowSorted();
if (k < 0) {
btAddAccService.setEnabled(false);
btDelAccService.setEnabled(false);
btDelService.setEnabled(false);
btContentService.setEnabled(false);
} else {
serviceItem = services.get(k);
setAccServicesTable();
btDelService.setEnabled(true);
btContentService.setEnabled(true);
btAddAccService.setEnabled(true);
}
} catch(ClipsException ex) {
MessageBox.showException(ex);
}
}
});
tabAccServices.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
btDelAccService.setEnabled(tabAccServices.getSelectedRowCount() != 0);
}
});
setTree();
treeServiceGroup.setRootVisible(true);
treeServiceGroup.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tabService.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// DirectoryServiceClass dir = DirectoryLocator.getDirectory(DirectoryServiceClass.class);
// clItems = new DirectoryServiceClassItem[dir.getItems().size()];
// clItems = (DirectoryServiceClassItem[]) dir.toArray(clItems);
setTable();
resizeColumn();
StateSaver.attachTo(this);
}
private Selector<DirectoryServiceItem> getServiceList(DirectoryServicesGroupItem group) throws ClipsException {
DirectoryService svc = (DirectoryService)
DirectoryLocator.getDirectory(DirectoryService.class);
return svc.getFilteredItems(group);
}
private void setAccServicesTable() throws ClipsException {
tabAccServices.setModel(new TableModelAccServices(serviceItem));
}
private void setTable() throws ClipsException {
if (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem) {
serviceGroup = (DirectoryServicesGroupItem) treeServiceGroup.getLastSelectedPathComponent();
} else {
serviceGroup = null;
}
services = getServiceList(serviceGroup);
tabService.setModel(new TableModelServicesFromGroup(serviceGroup));
tabService.getColumnModel().getColumn(TableModelServicesFromGroup.COL_SERV_CLASS).
setCellEditor(new DefaultCellEditor(new JComboBox(DirectoryLocator.getDirectory(DirectoryServiceClass.class).toArray())));
tabService.getColumnModel().getColumn(TableModelServicesFromGroup.COL_REQ_TYPE).
setCellEditor(new DefaultCellEditor(new JComboBox(DirectoryLocator.getDirectory(DirectoryReqType.class).toArray())));
tabService.getColumnModel().getColumn(TableModelServicesFromGroup.COL_VISIT_TYPE).
setCellEditor(new DefaultCellEditor(new JComboBox(DirectoryLocator.getDirectory(DirectoryVisitType.class).toArray())));
}
private void setTree() throws ClipsException {
DirectoryServicesGroup grps = (DirectoryServicesGroup)
DirectoryLocator.getDirectory(DirectoryServicesGroup.class);
treeServiceGroup.setModel(new TreeModelServiceGroup(grps));
treeServiceGroup.setSelectionPath(null);
}
private void resizeColumn() {
TableState state = new TableState();
state.setPreferredWidth(TableModelServicesFromGroup.COL_SERVICE, 15);
state.setPreferredWidth(TableModelServicesFromGroup.COL_SERV_CLASS, 3);
state.setPreferredWidth(TableModelServicesFromGroup.COL_REQ_TYPE, 3);
state.setPreferredWidth(TableModelServicesFromGroup.COL_VISIT_TYPE, 3);
state.setPreferredWidth(TableModelServicesFromGroup.COL_DURATION, 3);
state.setPreferredWidth(TableModelServicesFromGroup.COL_DESCRIPTION, 6);
state.setPreferredWidth(TableModelServicesFromGroup.COL_CHECKUP, 3);
StateSaver.setDefaultState(this, tabService, state);
state = new TableState();
state.setPreferredWidth(TableModelAccServices.COL_SERVICE, 14);
state.setPreferredWidth(TableModelAccServices.COL_OBLIGATORY, 3);
state.setPreferredWidth(TableModelAccServices.COL_DESCRIPTION, 13);
StateSaver.setDefaultState(this, tabAccServices, state);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
pnlNewNode = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jPanel9 = new javax.swing.JPanel();
tfName = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jPanel8 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jPanel7 = new javax.swing.JPanel();
tfGroupCode = new javax.swing.JTextField();
tfGroupCodePref = new javax.swing.JTextField();
popupMenuTree = new javax.swing.JPopupMenu();
rename = new javax.swing.JMenuItem();
jSplitPane1 = new javax.swing.JSplitPane();
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
treeServiceGroup = new javax.swing.JTree();
jPanel3 = new javax.swing.JPanel();
btAddServiceGroup = new javax.swing.JButton();
btDelServiceGroup = new javax.swing.JButton();
jSplitPane2 = new javax.swing.JSplitPane();
panelServices = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
btAddService = new javax.swing.JButton();
btDelService = new javax.swing.JButton();
btContentService = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
tabService = new cli_fmw.utils.sorted_table.SortedTable();
panelAccSevices = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
btAddAccService = new javax.swing.JButton();
btDelAccService = new javax.swing.JButton();
jScrollPane3 = new javax.swing.JScrollPane();
tabAccServices = new cli_fmw.utils.sorted_table.SortedTable();
pnlNewNode.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
pnlNewNode.setLayout(new java.awt.BorderLayout());
jPanel10.setLayout(new java.awt.GridLayout(2, 1, 0, 5));
jPanel9.setLayout(new java.awt.BorderLayout());
jPanel9.add(tfName, java.awt.BorderLayout.CENTER);
jLabel2.setText("Название:");
jLabel2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 10));
jPanel9.add(jLabel2, java.awt.BorderLayout.WEST);
jPanel10.add(jPanel9);
jPanel8.setLayout(new java.awt.BorderLayout());
jLabel3.setText("Код:");
jLabel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 10));
jPanel8.add(jLabel3, java.awt.BorderLayout.WEST);
jPanel7.setLayout(new java.awt.BorderLayout());
jPanel7.add(tfGroupCode, java.awt.BorderLayout.CENTER);
tfGroupCodePref.setEditable(false);
jPanel7.add(tfGroupCodePref, java.awt.BorderLayout.LINE_START);
jPanel8.add(jPanel7, java.awt.BorderLayout.CENTER);
jPanel10.add(jPanel8);
pnlNewNode.add(jPanel10, java.awt.BorderLayout.NORTH);
rename.setText("Переименовать");
rename.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
renameActionPerformed(evt);
}
});
popupMenuTree.add(rename);
jSplitPane1.setDividerLocation(200);
jPanel1.setLayout(new java.awt.BorderLayout(0, 10));
treeServiceGroup.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
treeServiceGroupMouseClicked(evt);
}
});
treeServiceGroup.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
treeServiceGroupValueChanged(evt);
}
});
treeServiceGroup.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) {
treeServiceGroupMouseMoved(evt);
}
});
treeServiceGroup.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
treeServiceGroupKeyPressed(evt);
}
});
jScrollPane1.setViewportView(treeServiceGroup);
jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel3.setPreferredSize(new java.awt.Dimension(100, 50));
jPanel3.setLayout(new java.awt.GridLayout(1, 0, 5, 0));
btAddServiceGroup.setText("<html><center>Добавить <BR> группу</center></html>");
btAddServiceGroup.setActionCommand("<html>Добавить <BR> группу</html>");
btAddServiceGroup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btAddServiceGroupActionPerformed(evt);
}
});
jPanel3.add(btAddServiceGroup);
btDelServiceGroup.setText("<html><center>Удалить<br>группу</center></html>");
btDelServiceGroup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDelServiceGroupActionPerformed(evt);
}
});
jPanel3.add(btDelServiceGroup);
jPanel1.add(jPanel3, java.awt.BorderLayout.PAGE_END);
jSplitPane1.setLeftComponent(jPanel1);
jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane2.setResizeWeight(0.5);
panelServices.setBorder(javax.swing.BorderFactory.createTitledBorder("Список услуг группы"));
panelServices.setLayout(new java.awt.BorderLayout());
btAddService.setText("Добавить услугу");
btAddService.setEnabled(false);
btAddService.setPreferredSize(new java.awt.Dimension(150, 29));
btAddService.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btAddServiceActionPerformed(evt);
}
});
jPanel4.add(btAddService);
btDelService.setText("Удалить услугу");
btDelService.setEnabled(false);
btDelService.setPreferredSize(btAddService.getPreferredSize());
btDelService.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDelServiceActionPerformed(evt);
}
});
jPanel4.add(btDelService);
btContentService.setText("Состав услуги");
btContentService.setEnabled(false);
btContentService.setPreferredSize(btAddService.getPreferredSize());
btContentService.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btContentServiceActionPerformed(evt);
}
});
jPanel4.add(btContentService);
panelServices.add(jPanel4, java.awt.BorderLayout.PAGE_END);
jScrollPane2.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
jScrollPane2ComponentResized(evt);
}
});
tabService.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabServiceMouseClicked(evt);
}
});
tabService.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) {
tabServiceMouseMoved(evt);
}
});
tabService.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
tabServiceKeyPressed(evt);
}
});
jScrollPane2.setViewportView(tabService);
panelServices.add(jScrollPane2, java.awt.BorderLayout.CENTER);
jSplitPane2.setLeftComponent(panelServices);
panelAccSevices.setBorder(javax.swing.BorderFactory.createTitledBorder("Список включенных услуг"));
panelAccSevices.setLayout(new java.awt.BorderLayout());
btAddAccService.setText("Добавить");
btAddAccService.setEnabled(false);
btAddAccService.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btAddAccServiceActionPerformed(evt);
}
});
jPanel2.add(btAddAccService);
btDelAccService.setText("Удалить");
btDelAccService.setEnabled(false);
btDelAccService.setPreferredSize(btAddAccService.getPreferredSize());
btDelAccService.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDelAccServiceActionPerformed(evt);
}
});
jPanel2.add(btDelAccService);
panelAccSevices.add(jPanel2, java.awt.BorderLayout.PAGE_END);
jScrollPane3.setViewportView(tabAccServices);
panelAccSevices.add(jScrollPane3, java.awt.BorderLayout.CENTER);
jSplitPane2.setRightComponent(panelAccSevices);
jSplitPane1.setRightComponent(jSplitPane2);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 787, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
);
}// </editor-fold>//GEN-END:initComponents
private void treeServiceGroupValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_treeServiceGroupValueChanged
try {
setTable();
serviceItem = null;
setAccServicesTable();
tabService.getSelectionModel().setSelectionInterval(-1, -1);
if (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem) {
btAddService.setEnabled(true);
}
else {
btAddService.setEnabled(false);
btDelService.setEnabled(false);
}
fireContainerEventStateChanged();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_treeServiceGroupValueChanged
private void btAddServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddServiceActionPerformed
try {
DlgAddService dlg = new DlgAddService(MainWindow.mainWindow, serviceGroup);
dlg.setVisible(true);
if (dlg.getDlgResult() == ModalDialog.DLG_OK) {
DirectoryServiceItem service = dlg.getDlgService();
DirectoryService dirService = (DirectoryService) DirectoryLocator.getDirectory(DirectoryService.class);
dirService.getItems().append(service);
setTable();
serviceItem = null;
setAccServicesTable();
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btAddServiceActionPerformed
private void btDelServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelServiceActionPerformed
try {
DirectoryService svc = (DirectoryService)
DirectoryLocator.getDirectory(DirectoryService.class, false);
int[] sels = tabService.getSelectedRowsSorted();
for (int j = sels.length - 1; j > -1; j--) {
DirectoryServiceItem service = services.get(sels[j]);
svc.getItems().remove(service);
}
services = getServiceList(serviceGroup);
setTable();
serviceItem = null;
setAccServicesTable();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btDelServiceActionPerformed
private void btAddServiceGroupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddServiceGroupActionPerformed
try {
Object value = treeServiceGroup.getLastSelectedPathComponent();
DirectoryServicesGroupItem newItem = null;
if (value instanceof DirectoryServicesGroupItem) {
DirectoryServicesGroupItem selected = (DirectoryServicesGroupItem) value;
tfGroupCodePref.setText(selected.getFullCode());
tfName.setText("");
tfGroupCode.setText("");
int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Заполните поля", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE, null, a, -1);
if (res == JOptionPane.OK_OPTION) {
if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
MessageBox.showWarning(MessageBox.W_INCORRECT_DATA);
return;
} else {
ServiceGroupDetails details = new ServiceGroupDetails();
details.title = tfName.getText();
details.code = tfGroupCode.getText();
details.parentItem = selected.getID();
newItem = new DirectoryServicesGroupItem(details);
selected.getItems().append(newItem);
treeServiceGroup.updateUI();
treeServiceGroup.expandPath(treeServiceGroup.getSelectionPath());
}
}
} else {
tfGroupCodePref.setText("");
tfName.setText("");
tfGroupCode.setText("");
int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Заполните поля", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE, null, a, -1);
if (res == JOptionPane.OK_OPTION) {
if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
MessageBox.showWarning(MessageBox.W_INCORRECT_DATA);
return;
} else {
ServiceGroupDetails details = new ServiceGroupDetails();
details.title = tfName.getText();
details.code = tfGroupCode.getText();
newItem = new DirectoryServicesGroupItem(details);
DirectoryServicesGroup svc = (DirectoryServicesGroup)
DirectoryLocator.getDirectory(DirectoryServicesGroup.class);
svc.getItems().append(newItem);
treeServiceGroup.updateUI();
treeServiceGroup.expandPath(treeServiceGroup.getSelectionPath());
}
}
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btAddServiceGroupActionPerformed
private void btDelServiceGroupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelServiceGroupActionPerformed
try {
if (treeServiceGroup.getLastSelectedPathComponent() == treeServiceGroup.getModel().getRoot() || treeServiceGroup.getLastSelectedPathComponent() == null) {
return;
}
DirectoryServicesGroupItem item = (DirectoryServicesGroupItem) treeServiceGroup.getLastSelectedPathComponent();
deleteServiceGroup(item);
setTree();
DirectoryLocator.getDirectory(DirectoryService.class);
} catch (ClipsException clipsException) {
MessageBox.showException(clipsException);
}
}//GEN-LAST:event_btDelServiceGroupActionPerformed
@SuppressWarnings("unchecked")
private void deleteServiceGroup(DirectoryServicesGroupItem serGroup) throws ClipsException {
DirectoryService svc = (DirectoryService)
DirectoryLocator.getDirectory(DirectoryService.class);
DirectoryServicesGroup grps = (DirectoryServicesGroup)
DirectoryLocator.getDirectory(DirectoryServicesGroup.class);
//удаляем услуги из группы
Selector<DirectoryServiceItem> list2del = getServiceList(serGroup);
for(int i=list2del.size() - 1; i > -1; i--) {
DirectoryServiceItem service = svc.getItemFromID(list2del.get(i).getID());
svc.getItems().remove(service);
System.out.println("service: " + service.getTitle());
}
SelectorEditableExceptional<DirectoryServicesGroupItem> iie = serGroup.getItems();
for (int i = iie.size() - 1; i > -1; i--) {
DirectoryServicesGroupItem item = iie.get(i);
deleteServiceGroup(item);
}
DirectoryServicesGroupItem parent = serGroup.getParent();
if (parent == null) {
iie = grps.getItems();
}
else {
iie = parent.getItems();
}
iie.remove(serGroup);
}
private void treeServiceGroupKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_treeServiceGroupKeyPressed
try {
int code = evt.getKeyCode();
if (evt.isControlDown() && code == 86 && serviceItemToMove != null) {
if (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem) {
DirectoryServicesGroupItem groupItem = (DirectoryServicesGroupItem) treeServiceGroup.getLastSelectedPathComponent();
serviceItemToMove.setGroup(groupItem);
setTable();
serviceItemToMove = null;
}
}
else if (evt.getKeyCode() == KeyEvent.VK_F2 && treeServiceGroup.getSelectionCount()>0){
rename();
}
} catch(ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_treeServiceGroupKeyPressed
private void btAddAccServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAddAccServiceActionPerformed
try {
DirectoryDialogService ddd = new DirectoryDialogService(true, null);
ddd.setVisible(true);
if (serviceItem != null) {
if (ddd.getDlgResult() == ModalDialog.DLG_OK) {
Selector s = ddd.getSelectedItems();
for (int i = 0; i < s.size(); i++) {
ServiceToServiceDetails details = new ServiceToServiceDetails(serviceItem.getID());
DirectoryServiceItem dsi = (DirectoryServiceItem) s.get(i);
details.pserviceId = serviceItem.getID();
details.cserviceId = dsi.getID();
details.description = "";
details.obligatory = false;
ChildServiceData dangerService = new ChildServiceData(details);
serviceItem.getChildServices().append(dangerService);
}
}
setAccServicesTable();
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btAddAccServiceActionPerformed
private void btDelAccServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDelAccServiceActionPerformed
try {
int[] selectedRows = tabAccServices.getSelectedRowsSorted();
for (int i = selectedRows.length-1; i>=0; i--) {
serviceItem.getChildServices().remove(selectedRows[i]);
}
setAccServicesTable();
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btDelAccServiceActionPerformed
private void renameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_renameActionPerformed
rename();
}//GEN-LAST:event_renameActionPerformed
private void treeServiceGroupMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeServiceGroupMouseClicked
if (evt.getButton() == MouseEvent.BUTTON3 && treeServiceGroup.getSelectionCount()>0){
Rectangle rect = treeServiceGroup.getPathBounds(treeServiceGroup.getSelectionPath());
if (rect.contains(evt.getPoint())) {
popupMenuTree.show(treeServiceGroup, evt.getX(), evt.getY());
}
}
}//GEN-LAST:event_treeServiceGroupMouseClicked
/**
* Переименовать
*/
private void rename() {
Object value = treeServiceGroup.getLastSelectedPathComponent();
try {
if (value instanceof DirectoryServicesGroupItem) {
DirectoryServicesGroupItem selected = (DirectoryServicesGroupItem) value;
tfGroupCodePref.setText(selected.getParent() != null?
selected.getParent().getFullCode(): "");
tfName.setText(selected.getTitle());
tfGroupCode.setText(selected.getCode());
int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Переименовать", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE, null, a, -1);
if (res == JOptionPane.OK_OPTION) {
if (tfName.getText().isEmpty()) {
MessageBox.showError(MessageBox.E_MAKE_FUCKING_EXCEPTION, "Данные некорректны");
return;
} else {
selected.rename(tfGroupCode.getText(), tfName.getText());
}
}
}
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}
private void jScrollPane2ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jScrollPane2ComponentResized
}//GEN-LAST:event_jScrollPane2ComponentResized
private void tabServiceKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tabServiceKeyPressed
int code = evt.getKeyCode();
if (evt.isControlDown() && code == 67) {
serviceItemToMove = services.get(tabService.getSelectedRowSorted());
System.out.println(serviceItemToMove.getTitle());
}
}//GEN-LAST:event_tabServiceKeyPressed
private void tabServiceMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabServiceMouseClicked
try {
int col = tabService.columnAtPoint(evt.getPoint());
TableColumn coll = tabService.getColumnModel().getColumn(col);
col = coll.getModelIndex();
int row = tabService.getSelectedRowSorted();
if (evt.getClickCount() < 2 || col < 0 || row < 0) {
return;
}
DirectoryServiceItem service = services.get(row);
if (col == TableModelServicesFromGroup.COL_SERVICE) {
tfGroupCodePref.setText(service.getGroup().getFullCode());
tfName.setText(service.getTitle());
tfGroupCode.setText(service.getCode());
int res = JOptionPane.showOptionDialog(this, pnlNewNode, "Переименовать", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE, null, a, -1);
if (res == JOptionPane.OK_OPTION) {
if (tfName.getText().isEmpty() || tfGroupCode.getText().isEmpty()) {
MessageBox.showError(MessageBox.E_MAKE_FUCKING_EXCEPTION, "Данные некорректны");
return;
} else {
service.setTitle(tfName.getText());
service.setCode(tfGroupCode.getText());
}
}
}
if (col == TableModelServicesFromGroup.COL_CHECKUP) {
DirectoryCheckupType dir = DirectoryLocator.getDirectory(DirectoryCheckupType.class);
DirectoryDialogDefault dialog = new DirectoryDialogDefault(false,
service.getCheckUpType(), "\\", dir);
dialog.setVisible(true);
if (dialog.getDlgResult() == ModalDialog.DLG_OK) {
Selector selectedItems = dialog.getSelectedItems();
if (selectedItems.size() > 0) {
DirectoryCheckupTypeItem checkupType = (DirectoryCheckupTypeItem) selectedItems.get(0);
if (!checkupType.isAnalyse()) {
MessageBox.showWarning("Должен быть выбран анализ");
} else {
service.setCheckUpType(checkupType);
}
}
}
}
} catch (Exception ex) {
MessageBox.showExceptionOnly(ex);
}
}//GEN-LAST:event_tabServiceMouseClicked
private void tabServiceMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabServiceMouseMoved
int col = tabService.columnAtPoint(evt.getPoint());
TableColumn coll = tabService.getColumnModel().getColumn(col);
col = coll.getModelIndex();
if (col == TableModelServicesFromGroup.COL_CHECKUP) {
tabService.setToolTipText("Двойной клик, чтобы редактировать анализ");
}
else {
tabService.setToolTipText(null);
}
}//GEN-LAST:event_tabServiceMouseMoved
private void btContentServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btContentServiceActionPerformed
int row = tabService.getSelectedRowSorted();
DirectoryServiceItem service = services.get(row);
DialogContentService dlg;
try {
dlg = new DialogContentService(MainWindow.mainWindow, service, getAuditManager());
dlg.setVisible(true);
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
}//GEN-LAST:event_btContentServiceActionPerformed
private void treeServiceGroupMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeServiceGroupMouseMoved
if (treeServiceGroup.getPathForLocation(evt.getX(), evt.getY()) == null) {
return;
}
Object obj = treeServiceGroup.getPathForLocation(evt.getX(), evt.getY()).getLastPathComponent();
if (obj instanceof DirectoryServicesGroupItem) {
DirectoryServicesGroupItem item = (DirectoryServicesGroupItem) obj;
treeServiceGroup.setToolTipText(item.getTitle());
}
else {
treeServiceGroup.setToolTipText(null);
}
}//GEN-LAST:event_treeServiceGroupMouseMoved
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btAddAccService;
private javax.swing.JButton btAddService;
private javax.swing.JButton btAddServiceGroup;
private javax.swing.JButton btContentService;
private javax.swing.JButton btDelAccService;
private javax.swing.JButton btDelService;
private javax.swing.JButton btDelServiceGroup;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JSplitPane jSplitPane2;
private javax.swing.JPanel panelAccSevices;
private javax.swing.JPanel panelServices;
private javax.swing.JPanel pnlNewNode;
private javax.swing.JPopupMenu popupMenuTree;
private javax.swing.JMenuItem rename;
private cli_fmw.utils.sorted_table.SortedTable tabAccServices;
private cli_fmw.utils.sorted_table.SortedTable tabService;
private javax.swing.JTextField tfGroupCode;
private javax.swing.JTextField tfGroupCodePref;
private javax.swing.JTextField tfName;
private javax.swing.JTree treeServiceGroup;
// End of variables declaration//GEN-END:variables
@Override
public String getPageTitle() {
return "Редактор групп услуг";
}
@Override
public DelegateLine2 getDelegate() {
return null;
}
@Override
public boolean readyForPrint() {
return (treeServiceGroup.getLastSelectedPathComponent() instanceof DirectoryServicesGroupItem);
}
@Override
public void print() {
if (readyForPrint()) {
if (tabService.isEditing()) {
tabService.getCellEditor().stopCellEditing();
}
String title = "Услуги группы:";
String group = "";
DirectoryServicesGroupItem parent = serviceGroup;
ArrayList<String> titles = new ArrayList<String>();
while (parent != null) {
titles.add(parent.getTitle()+ "\n");
parent = parent.getParent();
}
int k = titles.size() - 1;
for (int i = k; i > -1; i--) {
String iS = titles.get(i);
for (int j = i; j < k; j++) {
iS = " " + iS;
}
group += iS;
}
HashMap<String, Object> data = new LinkedHashMap<String, Object>();
data.put("groupFullTitle", group);
TableReportOptions ops = new TableReportOptions(TableReportOptions.PageOrentation.horizontal);
PrintCreators.createGeneratedReport(title, ops, data.entrySet(), null, tabService.getModel(), getClass());
}
}
}