/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.main;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.main.ClipsException;
import cli_fmw.main.MainWindow;
import cli_fmw.main.PageGeneric;
import cli_fmw.main.PageException;
import cli_fmw.main.audit.AuditManager;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.Selector;
import clips.Main;
import clips.delegate.directory.complex.DirectoryCollaboratorFunctions;
import clips.delegate.directory.complex.DirectoryCollaboratorFunctionsItem;
import clips.delegate.directory.ro.DirectoryCollaboratorItem;
import clips.login.UserInfo;
import clips.userseach.PanelUserSearch;
import java.awt.Image;
import java.util.ArrayList;
import java.util.Date;
import javax.smartcardio.CardException;
import org.infotechservice.smartcard.service.SmartCard;
import org.infotechservice.smartcard.smartcard.NewSocialCardListener;
import org.infotechservice.smartcard.smartcard.NewSocialCardService;
/**
*
* @author axe
*/
public class AppMainWindow extends MainWindow {
private static final long serialVersionUID = 1l;
private Main main;
private CardInfo cardInfo = null;
/*private CardListenerClientID cardClientID = new CardListenerClientID() {
@Override
public void acceptID(final int id) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
ClientLocal client = new ClientLocal(id);
client.getDetails();
addNewPage(new PanelClientEdit(mainWindow, client), null);
}
catch (ClipsException ex) {
MessageBox.showException(ex);
return;
}
}
});
}
};*/
private NewSocialCardListener socialCard = new NewSocialCardListener() {
private AuditManager am = new AuditManager();
@Override
public void onCardInsert(SmartCard smartcard){
try {
NewSocialCardService service = new NewSocialCardService(smartcard);
service.getSerial();
final String id = service.getSerial();
String fio = service.getFIO();
Date birthDay = service.getBirthDay();
String inn = service.getInn();
String sex = service.getSex();
String snils = service.getSnils();
cardInfo = new CardInfo(service.getSerial(), fio, inn, snils, birthDay, sex);
try {
PanelUserSearch addNewPage = (PanelUserSearch) mainWindow.addNewPage(new PanelUserSearch(mainWindow), null);
addNewPage.setFIO(fio);
} catch (ClipsException ex) {
MessageBox.showException(ex);
}
} catch (CardException ex) {
ex.printStackTrace();
}
}
@Override
public void onCardRemove(SmartCard smartcard) {
cardInfo = null;
}
};
public CardInfo getCardInfo() {
return cardInfo;
}
public AppMainWindow(Main main) {
super(main);
this.main = main;
ArrayList<Image> icons = new ArrayList<Image>();
icons.add(UserPanelsEnum.iconIC12.getImage());
icons.add(UserPanelsEnum.iconIC16.getImage());
icons.add(UserPanelsEnum.iconIC24.getImage());
icons.add(UserPanelsEnum.iconIC32.getImage());
setIconImages(icons);
main.getSmartCardService().addCardListener(socialCard);
// EventQueue.invokeLater(new Runnable() {
//
// @Override
// public void run() {
// //AppMainWindow.this.main.getSmartCardService().addCardListener(CardListenerClientID.CARD_FIND, cardClientID);
// //AppMainWindow.this.main.getSmartCardService().addCardListener(NewSocialCardListener.CARD_FIND, socialCard);
// //TODO
// }
// });
}
@Override
public void dispose() {
//this.main.getSmartCardService().removeCardListener(cardClientID);
this.main.getSmartCardService().removeCardListener(socialCard);
super.dispose();
}
@Override
public PageGeneric addNewPage(PageGeneric pageToAdd, PageGeneric afterPage) throws PageException {
if (pageToAdd instanceof PanelUserSearch) {
//Панель исключение - игнорируем делегат, панель единственная
for (int i = 0; i < getPageCount(); i++) {
PageGeneric page = getPage(i);
if (page.getClass() == pageToAdd.getClass()) {
activatePage(page);
return page;
}
}
}
return super.addNewPage(pageToAdd, afterPage);
}
@Override
protected String makeTitle() throws ClipsException {
UserInfo user = UserInfo.get();
String spec = "";
DirectoryCollaboratorItem collaborator = user.getCollaborator();
DirectoryCollaboratorFunctions dcf = DirectoryLocator.getDirectory(DirectoryCollaboratorFunctions.class);
Selector<DirectoryCollaboratorFunctionsItem> s = dcf.getFilteredItems(collaborator);
if (s.size() == 0) {
spec = "";
} else {
int i = 0;
spec += s.get(i).getSpeciality();
for (i = 1; i < s.size(); i++) {
String title = s.get(i).getSpeciality().getTitle();
if (spec.indexOf(title) < 0) {
spec += ", " + title;
}
}
}
return user.getCollaborator().getLpu().getTitle() + ", " + user.getUserName() + (user.isSuperUser() ? " [СУПЕР-ПОЛЬЗОВАТЕЛЬ] " : " [" + spec + "]");
}
@Override
public Main getApplication() {
return (Main) super.getApplication();
}
public static AppMainWindow getMainWindow() {
return (AppMainWindow) MainWindow.getMainWindow();
}
}