1 23 24 package com.izforge.izpack.panels; 25 26 import java.awt.Component ; 27 import java.awt.Dimension ; 28 import java.awt.GridBagConstraints ; 29 import java.awt.GridBagLayout ; 30 import java.awt.Insets ; 31 import java.net.URL ; 32 import java.util.ArrayList ; 33 import java.util.Iterator ; 34 35 import javax.swing.BorderFactory ; 36 import javax.swing.Box ; 37 import javax.swing.ImageIcon ; 38 import javax.swing.JLabel ; 39 import javax.swing.JScrollPane ; 40 import javax.swing.event.ListSelectionEvent ; 41 42 import com.izforge.izpack.installer.InstallData; 43 import com.izforge.izpack.installer.InstallerFrame; 44 import com.izforge.izpack.installer.ResourceManager; 45 import com.izforge.izpack.util.IoHelper; 46 47 57 public class ImgPacksPanel extends PacksPanelBase 58 { 59 60 63 private static final long serialVersionUID = 3977858492633659444L; 64 65 66 private ArrayList images; 67 68 69 private JLabel imgLabel; 70 71 77 public ImgPacksPanel(InstallerFrame parent, InstallData idata) 78 { 79 super(parent, idata); 80 } 81 82 87 protected void createNormalLayout() 88 { 89 preLoadImages(); 90 GridBagLayout layout = new GridBagLayout (); 91 GridBagConstraints gbConstraints = new GridBagConstraints (); 92 setLayout(layout); 93 94 parent.buildConstraints(gbConstraints, 0, 0, 1, 1, 0.25, 0.0); 96 gbConstraints.insets = new Insets (5, 5, 5, 5); 97 gbConstraints.anchor = GridBagConstraints.WEST; 98 createLabel("PacksPanel.info", "preferences", layout, gbConstraints); 100 101 parent.buildConstraints(gbConstraints, 1, 0, 1, 1, 0.50, 0.0); 103 createLabel("ImgPacksPanel.snap", "tip", layout, gbConstraints); 104 105 tableScroller = new JScrollPane (); 107 parent.buildConstraints(gbConstraints, 0, 1, 1, 2, 0.50, 0.0); 108 gbConstraints.fill = GridBagConstraints.BOTH; 109 packsTable = createPacksTable(250, tableScroller, layout, gbConstraints); 110 111 imgLabel = new JLabel ((ImageIcon ) images.get(0)); 113 JScrollPane imgScroller = new JScrollPane (imgLabel); 114 imgScroller.setPreferredSize(getPreferredSizeFromImages()); 115 parent.buildConstraints(gbConstraints, 1, 1, 1, 1, 0.5, 1.0); 116 layout.addLayoutComponent(imgScroller, gbConstraints); 117 add(imgScroller); 118 119 121 Component strut = Box.createVerticalStrut(20); 122 parent.buildConstraints(gbConstraints, 1, 2, 1, 3, 0.0, 0.0); 123 layout.addLayoutComponent(strut, gbConstraints); 124 add(strut); 125 126 if (dependenciesExist) 128 { 129 JScrollPane depScroller = new JScrollPane (); 130 depScroller.setPreferredSize(new Dimension (250, 40)); 131 parent.buildConstraints(gbConstraints, 0, 3, 1, 1, 0.50, 0.50); 132 dependencyArea = createTextArea("ImgPacksPanel.dependencyList", depScroller, layout, 133 gbConstraints); 134 } 135 136 JScrollPane descriptionScroller = new JScrollPane (); 138 descriptionScroller.setPreferredSize(new Dimension (200, 60)); 139 descriptionScroller.setBorder(BorderFactory.createEmptyBorder()); 140 141 parent.buildConstraints(gbConstraints, 1, 3, 1, 1, 0.50, 0.50); 142 descriptionArea = createTextArea("PacksPanel.description", descriptionScroller, layout, 143 gbConstraints); 144 parent.buildConstraints(gbConstraints, 0, 4, 2, 1, 0.0, 0.0); 146 createLabel("PacksPanel.tip", "tip", layout, gbConstraints); 147 parent.buildConstraints(gbConstraints, 0, 5, 2, 1, 0.0, 0.0); 149 spaceLabel = createPanelWithLabel("PacksPanel.space", layout, gbConstraints); 150 if (IoHelper.supported("getFreeSpace")) 151 { parent.buildConstraints(gbConstraints, 0, 6, 2, 1, 0.0, 0.0); 153 freeSpaceLabel = createPanelWithLabel("PacksPanel.freespace", layout, gbConstraints); 154 } 155 156 } 157 158 159 private void preLoadImages() 160 { 161 int size = idata.availablePacks.size(); 162 images = new ArrayList (size); 163 for (int i = 0; i < size; i++) 164 try 165 { 166 URL url = ResourceManager.getInstance().getURL("ImgPacksPanel.img." + i); 167 ImageIcon img = new ImageIcon (url); 168 images.add(img); 169 } 170 catch (Exception err) 171 { 172 err.printStackTrace(); 173 } 174 } 175 176 180 private Dimension getPreferredSizeFromImages() 181 { 182 int maxWidth = 80; 183 int maxHeight = 60; 184 ImageIcon icon; 185 186 for (Iterator it = images.iterator(); it.hasNext();) 187 { 188 icon = (ImageIcon ) it.next(); 189 maxWidth = Math.max(maxWidth, icon.getIconWidth()); 190 maxHeight = Math.max(maxHeight, icon.getIconHeight()); 191 } 192 193 maxWidth = Math.min(maxWidth + 20, idata.guiPrefs.width - 150); 194 maxHeight = Math.min(maxHeight + 20, idata.guiPrefs.height - 150); 195 196 return new Dimension (maxWidth, maxHeight); 197 } 198 199 204 public void valueChanged(ListSelectionEvent e) 205 { 206 super.valueChanged(e); 207 int i = packsTable.getSelectedRow(); 208 if (i >= 0) imgLabel.setIcon((ImageIcon ) images.get(i)); 209 210 } 211 212 } 213 | Popular Tags |