/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.security.support; import com.eviware.soapui.config.MaliciousAttachmentConfig; import com.eviware.soapui.config.MaliciousAttachmentElementConfig; import com.eviware.soapui.config.MaliciousAttachmentSecurityScanConfig; import com.eviware.soapui.model.iface.Attachment; import com.eviware.soapui.security.tools.AttachmentElement; import com.eviware.soapui.security.ui.MaliciousAttachmentMutationsPanel.MutationTables; import com.eviware.soapui.support.UISupport; import javax.swing.DefaultListModel; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.BorderLayout; import java.awt.Dimension; public class MaliciousAttachmentFilesListForm extends JPanel { private DefaultListModel listModel; private JList list; private AttachmentElement oldSelection; private AttachmentElement currentSelection; private MaliciousAttachmentSecurityScanConfig config; final MaliciousAttachmentListToTableHolder holder; public MaliciousAttachmentFilesListForm(MaliciousAttachmentSecurityScanConfig config, MaliciousAttachmentListToTableHolder holder) { super(new BorderLayout()); this.config = config; this.holder = holder; JPanel p = UISupport.createEmptyPanel(3, 3, 3, 3); p.add(new JLabel("<html><b>Existing Attachments</b></html>"), BorderLayout.WEST); add(p, BorderLayout.NORTH); listModel = new DefaultListModel(); list = new JList(listModel); list.setToolTipText("Choose file"); JScrollPane scrollPane = new JScrollPane(list); scrollPane.setPreferredSize(new Dimension(30, 50)); add(scrollPane, BorderLayout.CENTER); list.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { currentSelection = (list.getSelectedIndex() == -1) ? null : (AttachmentElement) listModel.get(list .getSelectedIndex()); MaliciousAttachmentFilesListForm.this.holder.refresh(oldSelection, currentSelection); oldSelection = currentSelection; } }); setBorder(null); } public AttachmentElement getFirstItem() { if (list.getModel().getSize() != 0) { list.setSelectedIndex(0); return (AttachmentElement) list.getSelectedValue(); } return null; } public JList getList() { return list; } public AttachmentElement[] getData() { AttachmentElement[] result = new AttachmentElement[listModel.size()]; for (int c = 0; c < result.length; c++) { result[c] = (AttachmentElement) listModel.get(c); } return result; } public void setData(Attachment[] attachments) { MaliciousAttachmentSecurityScanConfig copy = (MaliciousAttachmentSecurityScanConfig) config.copy(); listModel.clear(); config.getElementList().clear(); holder.getGenerateTableModel().clear(); holder.getReplaceTableModel().clear(); holder.getTablesDialog().setBooleanValue(MutationTables.REMOVE_FILE, new Boolean(false)); if (attachments != null) { for (Attachment att : attachments) { AttachmentElement attEl = new AttachmentElement(att, att.getId()); listModel.addElement(attEl); holder.getGenerateTableModel().clear(); holder.getReplaceTableModel().clear(); holder.getTablesDialog().setBooleanValue(MutationTables.REMOVE_FILE, new Boolean(false)); // add empty element MaliciousAttachmentElementConfig newElement = config.addNewElement(); newElement.setKey(attEl.getId()); for (MaliciousAttachmentElementConfig element : copy.getElementList()) { if (attEl.getId().equals(element.getKey())) { newElement.setRemove(element.getRemove()); holder.getTablesDialog().setBooleanValue(MutationTables.REMOVE_FILE, element.getRemove()); for (MaliciousAttachmentConfig el : element.getGenerateAttachmentList()) { MaliciousAttachmentConfig newEl = newElement.addNewGenerateAttachment(); newEl.setFilename(el.getFilename()); newEl.setSize(el.getSize()); newEl.setContentType(el.getContentType()); newEl.setEnabled(el.getEnabled()); newEl.setCached(el.getCached()); holder.addResultToGenerateTable(newEl); } for (MaliciousAttachmentConfig el : element.getReplaceAttachmentList()) { MaliciousAttachmentConfig newEl = newElement.addNewReplaceAttachment(); newEl.setFilename(el.getFilename()); newEl.setSize(el.getSize()); newEl.setContentType(el.getContentType()); newEl.setEnabled(el.getEnabled()); newEl.setCached(el.getCached()); holder.addResultToReplaceTable(newEl); } holder.refresh(attEl, null); break; } } } } } public void updateConfig(MaliciousAttachmentSecurityScanConfig config) { this.config = config; } public void release() { list = null; config = null; } }