/** Special start method for IzPanelLayout. Called from <code>startLayout</code>. */ private void startIzPanelLayout() { IzPanelLayout.setAnchor(getAnchor()); IzPanelLayout.setXStretchType(getXStretchType()); IzPanelLayout.setYStretchType(getYStretchType()); IzPanelLayout.setFullLineStretch(getFullLineStretch()); IzPanelLayout.setFullColumnStretch(getFullColumnStretch()); getXGap(LABEL_GAP); // This call triggers resolving external setting if not already done. getYGap(LABEL_GAP); // This call triggers resolving external setting if not already done. parent.setLayout(izPanelLayout); // parent.add(IzPanelLayout.createGap(TOP_GAP, VERTICAL)); }
/** * Returns the gap which should be used between the given gui objects for the y direction. The * value will be configurable by guiprefs modifiers. Valid values are all entries in the static * String array Y_GAP_NAME_LOOK_UP of this class. There are constant ints for the indexes of this * array. * * @param gapId index in array GAP_NAME_LOOK_UP for the needed gap * @return the gap depend on the xml-configurable guiprefs modifier */ public int getYGap(int gapId) { gapId = IzPanelLayout.verifyGapId(gapId); if (IzPanelLayout.getDefaultYGap(GAP_LOAD_MARKER) >= 0) { return (IzPanelLayout.getDefaultYGap(gapId)); } if (!(installData instanceof GUIInstallData)) { return (IzPanelLayout.getDefaultYGap(gapId)); } String var; GUIInstallData id = (GUIInstallData) installData; int commonDefault = -1; if (id.guiPrefs.modifier.containsKey(ALL_Y_GAP)) { try { commonDefault = Integer.parseInt(id.guiPrefs.modifier.get(ALL_Y_GAP)); } catch (NumberFormatException nfe) { // Do nothing else use the default value. // Need to set it again at this position?? } } for (int i = 0; i < Y_GAP_NAME_LOOK_UP.length; ++i) { int currentDefault = 0; if (commonDefault >= 0) { currentDefault = commonDefault; } else { var = id.guiPrefs.modifier.get(Y_GAP_NAME_LOOK_UP[i]); if (var != null) { try { currentDefault = Integer.parseInt(var); } catch (NumberFormatException nfe) { // Do nothing else use the default value. // Need to set it again at this position?? } } } IzPanelLayout.setDefaultYGap(currentDefault, i); } IzPanelLayout.setDefaultYGap(0, GAP_LOAD_MARKER); // Mark external settings allready // loaded. return (IzPanelLayout.getDefaultYGap(gapId)); }
/** * Creates a new HelloPanel object with the given layout manager. Valid layout manager are the * IzPanelLayout and the GridBagLayout. New panels should be use the IzPanelLaout. If lm is null, * no layout manager will be created or initialized. * * @param parent The parent IzPack installer frame. * @param idata The installer internal data. * @param layout layout manager to be used with this IzPanel */ public HelloPanel(InstallerFrame parent, InstallData idata, LayoutManager2 layout) { // Layout handling. This panel was changed from a mixed layout handling // with GridBagLayout and BoxLayout to IzPanelLayout. It can be used as an // example how to use the IzPanelLayout. For this there are some comments // which are excrescent for a "normal" panel. // Set a IzPanelLayout as layout for this panel. // This have to be the first line during layout if IzPanelLayout will be used. super(parent, idata, layout); // We create and put the labels String str; str = parent.langpack.getString("HelloPanel.welcome1") + idata.info.getAppName() + " " + idata.info.getAppVersion() + parent.langpack.getString("HelloPanel.welcome2"); JLabel welcomeLabel = LabelFactory.create(str, parent.icons.getImageIcon("host"), LEADING); // IzPanelLayout is a constraint orientated layout manager. But if no constraint is // given, a default will be used. It starts in the first line. // NEXT_LINE have to insert also in the first line!! add(welcomeLabel, NEXT_LINE); // Yes, there exist also a strut for the IzPanelLayout. // But the strut will be only used for one cell. A vertical strut will be use // NEXT_ROW, a horizontal NEXT_COLUMN. For more information see the java doc. // add(IzPanelLayout.createVerticalStrut(20)); // But for a strut you have to define a fixed height. Alternative it is possible // to create a paragraph gap which is configurable. add(IzPanelLayout.createParagraphGap()); ArrayList authors = idata.info.getAuthors(); int size = authors.size(); if (size > 0) { str = parent.langpack.getString("HelloPanel.authors"); JLabel appAuthorsLabel = LabelFactory.create(str, parent.icons.getImageIcon("information"), LEADING); // If nothing will be sad to the IzPanelLayout the position of an add will be // determined in the default constraint. For labels it is CURRENT_ROW, NEXT_COLUMN. // But at this point we would place the label in the next row. It is possible // to create an IzPanelConstraint with this options, but it is also possible to // use simple the NEXT_LINE object as constraint. Attention!! Do not use // LayoutConstants.NEXT_ROW else LayoutConstants.NEXT_LINE because NEXT_ROW is an // int and with it an other add method will be used without any warning (there the // parameter will be used as position of the component in the panel, not the // layout manager. add(appAuthorsLabel, LayoutConstants.NEXT_LINE); JLabel label; for (int i = 0; i < size; i++) { Info.Author a = (Info.Author) authors.get(i); String email = (a.getEmail() != null && a.getEmail().length() > 0) ? (" <" + a.getEmail() + ">") : ""; label = LabelFactory.create( " - " + a.getName() + email, parent.icons.getImageIcon("empty"), LEADING); add(label, NEXT_LINE); } add(IzPanelLayout.createParagraphGap()); } if (idata.info.getAppURL() != null) { str = parent.langpack.getString("HelloPanel.url") + idata.info.getAppURL(); JLabel appURLLabel = LabelFactory.create(str, parent.icons.getImageIcon("bookmark"), LEADING); add(appURLLabel, LayoutConstants.NEXT_LINE); } // At end of layouting we should call the completeLayout method also they do nothing. getLayoutHelper().completeLayout(); }