@Override protected Component generateTopControls() { VerticalLayout controlsBtnWrap = new VerticalLayout(); controlsBtnWrap.setWidth("100%"); final SplitButton controlsBtn = new SplitButton(); controlsBtn.addStyleName(UIConstants.THEME_GREEN_LINK); controlsBtn.setCaption(AppContext.getMessage(OpportunityI18nEnum.BUTTON_NEW_OPPORTUNITY)); controlsBtn.setIcon(FontAwesome.PLUS); controlsBtn.addClickListener( new SplitButton.SplitButtonClickListener() { private static final long serialVersionUID = 1L; @Override public void splitButtonClick(SplitButton.SplitButtonClickEvent event) { fireNewRelatedItem(""); } }); controlsBtn.setSizeUndefined(); Button selectBtn = new Button( "Select from existing opportunities", new Button.ClickListener() { private static final long serialVersionUID = 1L; @Override public void buttonClick(Button.ClickEvent event) { ContactOpportunitySelectionWindow opportunitiesWindow = new ContactOpportunitySelectionWindow(ContactOpportunityListComp.this); OpportunitySearchCriteria criteria = new OpportunitySearchCriteria(); criteria.setSaccountid(new NumberSearchField(AppContext.getAccountId())); UI.getCurrent().addWindow(opportunitiesWindow); opportunitiesWindow.setSearchCriteria(criteria); controlsBtn.setPopupVisible(false); } }); selectBtn.setIcon(CrmAssetsManager.getAsset(CrmTypeConstants.OPPORTUNITY)); OptionPopupContent buttonControlsLayout = new OptionPopupContent(); buttonControlsLayout.addOption(selectBtn); controlsBtn.setContent(buttonControlsLayout); controlsBtn.setEnabled(AppContext.canWrite(RolePermissionCollections.CRM_OPPORTUNITY)); controlsBtnWrap.addComponent(controlsBtn); controlsBtnWrap.setComponentAlignment(controlsBtn, Alignment.MIDDLE_RIGHT); return controlsBtnWrap; }
@SuppressWarnings("serial") private void initUI() { final SplitButton controlsBtn = new SplitButton(); controlsBtn.setEnabled(AppContext.canWrite(RolePermissionCollections.CRM_CONTACT)); controlsBtn.addStyleName(UIConstants.THEME_BLUE_LINK); controlsBtn.setCaption("New Contact"); controlsBtn.setIcon(MyCollabResource.newResource("icons/16/addRecord.png")); controlsBtn.addClickListener( new SplitButton.SplitButtonClickListener() { @Override public void splitButtonClick(SplitButton.SplitButtonClickEvent event) { fireNewRelatedItem(""); } }); Button selectBtn = new Button( "Select from existing contacts", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { CaseContactSelectionWindow contactsWindow = new CaseContactSelectionWindow(CaseContactListComp.this); ContactSearchCriteria criteria = new ContactSearchCriteria(); criteria.setSaccountid(new NumberSearchField(AppContext.getAccountId())); UI.getCurrent().addWindow(contactsWindow); contactsWindow.setSearchCriteria(criteria); controlsBtn.setPopupVisible(false); } }); selectBtn.setIcon(MyCollabResource.newResource("icons/16/select.png")); selectBtn.setStyleName("link"); VerticalLayout buttonControlsLayout = new VerticalLayout(); buttonControlsLayout.addComponent(selectBtn); controlsBtn.setContent(buttonControlsLayout); controlsBtn.setEnabled(AppContext.canWrite(RolePermissionCollections.CRM_CONTACT)); this.addComponent(controlsBtn); tableItem = new ContactTableDisplay( Arrays.asList( ContactTableFieldDef.name, ContactTableFieldDef.email, ContactTableFieldDef.phoneOffice, ContactTableFieldDef.account, ContactTableFieldDef.action)); tableItem.addTableListener( new ApplicationEventListener<TableClickEvent>() { @Override public Class<? extends ApplicationEvent> getEventType() { return TableClickEvent.class; } @Override public void handle(TableClickEvent event) { SimpleContact contact = (SimpleContact) event.getData(); if ("contactName".equals(event.getFieldName())) { EventBus.getInstance() .fireEvent(new ContactEvent.GotoRead(CaseContactListComp.this, contact.getId())); } } }); tableItem.addGeneratedColumn( "id", new Table.ColumnGenerator() { @Override public Object generateCell(Table source, Object itemId, Object columnId) { final SimpleContact contact = (SimpleContact) tableItem.getBeanByIndex(itemId); HorizontalLayout controlLayout = new HorizontalLayout(); Button editBtn = new Button( null, new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { EventBus.getInstance() .fireEvent( new ContactEvent.GotoEdit(CaseContactListComp.this, contact)); } }); editBtn.setStyleName("link"); editBtn.setIcon(MyCollabResource.newResource("icons/16/edit.png")); controlLayout.addComponent(editBtn); Button deleteBtn = new Button( null, new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { ConfirmDialogExt.show( UI.getCurrent(), LocalizationHelper.getMessage( GenericI18Enum.DELETE_DIALOG_TITLE, SiteConfiguration.getSiteName()), LocalizationHelper.getMessage( CrmCommonI18nEnum.DIALOG_DELETE_RELATIONSHIP_TITLE), LocalizationHelper.getMessage(GenericI18Enum.BUTTON_YES_LABEL), LocalizationHelper.getMessage(GenericI18Enum.BUTTON_NO_LABEL), new ConfirmDialog.Listener() { private static final long serialVersionUID = 1L; @Override public void onClose(ConfirmDialog dialog) { if (dialog.isConfirmed()) { ContactService contactService = ApplicationContextUtil.getSpringBean(ContactService.class); ContactCase associateContact = new ContactCase(); associateContact.setCaseid(cases.getId()); associateContact.setContactid(contact.getId()); contactService.removeContactCaseRelationship( associateContact, AppContext.getAccountId()); CaseContactListComp.this.refresh(); } } }); } }); deleteBtn.setStyleName("link"); deleteBtn.setIcon(MyCollabResource.newResource("icons/16/delete.png")); controlLayout.addComponent(deleteBtn); return controlLayout; } }); this.addComponent(tableItem); }