List of usage examples for com.jgoodies.looks Options setPopupDropShadowEnabled
public static void setPopupDropShadowEnabled(boolean b)
From source file:ambit2.ui.test.QueryBrowserTest.java
License:Open Source License
@Test public void test() throws Exception { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //UIManager.setLookAndFeel(Options.getSystemLookAndFeelClassName()); Options.setPopupDropShadowEnabled(true); Options.setUseSystemFonts(true);//from ww w. j a va 2s. com TestTableModel dataModel = new TestTableModel(); /* AbstractTableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 10; } public int getRowCount() { return 33; } public Object getValueAt(int row, int col) { return new Integer((row+1)*(col)); } }; */ //QueryBrowser<TestTableModel> browser = new QueryBrowser<TestTableModel>(); //QueryBrowser<BrowsableTableModel> browser = new QueryBrowser<BrowsableTableModel>(new BrowsableTableModel(dataModel)); QueryBrowser<BrowsableTableModel> browser = new QueryBrowser<BrowsableTableModel>() { protected int setRecord(int row, int col) { int record = super.setRecord(row, col); System.out.println("Record " + record); return record; } }; browser.setObject(new BrowsableTableModel(dataModel)); browser.setPreferredSize(new Dimension(800, 600)); JOptionPane.showMessageDialog(null, browser, "", JOptionPane.PLAIN_MESSAGE, null); }
From source file:com.prodp.apsim.APProcessHandler.java
License:Apache License
/** * // ww w . j a v a 2 s .co m * Sets up the whole game. * * Sets up things like the GUI, put through {@link APGUI}, the scene * objects, and other things in {@link APFinalData}. * * @throws AWTException * @throws ClassNotFoundException * @throws InstantiationException * @throws IllegalAccessException * @throws UnsupportedLookAndFeelException * @throws CloneNotSupportedException */ public void init() throws AWTException, ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException, CloneNotSupportedException { // Get the icon try { APFinalData.apIconImage = new ImageIcon( ImageIO.read(new APMain().getClass().getResource("icons/apsim.png"))).getImage(); } catch (IOException e) { e.printStackTrace(); } // For mouse control and screenshots center = new Robot(); // Set Graphics graphics.setSceneAntialiasing(GraphicsConfigTemplate.PREFERRED); graphics.setDoubleBuffer(GraphicsConfigTemplate.PREFERRED); graphicsConfig = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice() .getBestConfiguration(graphics); c3d = new APRenderer(graphicsConfig, (JComponent) APFinalData.mainFrame.getContentPane()); c3d.setVisible(true); // setLookAndFeel PlasticLookAndFeel.set3DEnabled(true); PlasticLookAndFeel.setTabStyle(Plastic3DLookAndFeel.TAB_STYLE_METAL_VALUE); PlasticLookAndFeel.setPlasticTheme(new DesertBluer()); UIManager.setLookAndFeel(new PlasticLookAndFeel()); Options.setPopupDropShadowEnabled(true); Options.setUseNarrowButtons(true); // This is the Processor initialization final APProcess firstProcess = new APProcess("Untitled" + untitled + ".aps"); APList.addProcess(firstProcess); APProcess process = APList.getCurrentProcess(); // The default position mainRoutineFinalTransform.setTranslation(new Vector3f(0, 0, 0)); // Set up the grass Transform3D grass3d = new Transform3D(); grass3d.setScale(50); TextureAttributes ta = new TextureAttributes(); ta.setTextureMode(TextureAttributes.MODULATE); ta.setPerspectiveCorrectionMode(TextureAttributes.FASTEST); ta.setTextureTransform(grass3d); Appearance floorapp = new Appearance(); floorapp.setTexture( new TextureLoader(new APRandImage(1024, 1024, BufferedImage.TYPE_3BYTE_BGR, new Color(111, 71, 40), new Color(50, 30, 7), new Color(104, 57, 23), new Color(22, 12, 6)), "RGB", null) .getTexture()); floorapp.setTextureAttributes(ta); // Referencing the position of the floor to floorcoord APFinalData.floor.setCoordRefFloat(APFinalData.floorcoord); APFinalData.floor.setTexCoordRefFloat(0, APFinalData.floortex); // Hide the cursor c3d.setCursor(APFinalData.transparentCursor); // Main geometry array cMain = new QuadArray(APFinalData.LIMIT * 24, QuadArray.COORDINATES | QuadArray.COLOR_4 | QuadArray.BY_REFERENCE | QuadArray.TEXTURE_COORDINATE_2); // Wind geometry array windLoc = new LineArray(2 * APFinalData.PRESSURE_COUNT, LineArray.COORDINATES | LineArray.COLOR_3 | LineArray.BY_REFERENCE); // Dynamic positioning cMain.setCapability(GeometryArray.ALLOW_REF_DATA_READ); cMain.setCapability(GeometryArray.ALLOW_REF_DATA_WRITE); windLoc.setCapability(GeometryArray.ALLOW_REF_DATA_READ); windLoc.setCapability(GeometryArray.ALLOW_REF_DATA_WRITE); // Set the reference of the geometry array to the coordinates and the // colors cMain.setCoordRefFloat(process.coords); cMain.setColorRefByte(process.colors); cMain.setTexCoordRefFloat(0, process.texturecoords); windLoc.setCoordRefFloat(process.windcoords); windLoc.setColorRefByte(process.windcolors); // Now add the reactionary components APRList.addReaction(new APReaction(new APPair(APMaterial.WOOD.getID(), APMaterial.LAVA.getID()), APMaterial.FIRE, 0.2f, APFinalData.CHANGE_BLOCK_FLAG)); APRList.addReaction(new APReaction(new APPair(APMaterial.WOOD.getID(), APMaterial.FIRE.getID()), APMaterial.FIRE, 0.1f, APFinalData.CHANGE_BLOCK_FLAG)); APRList.addReaction(new APReaction(new APPair(APMaterial.STONE.getID(), APMaterial.LAVA.getID()), APMaterial.LAVA, 0.1f, APFinalData.CHANGE_BLOCK_FLAG)); APRList.addReaction(new APReaction(new APPair(APMaterial.WATER.getID(), APMaterial.LAVA.getID()), APMaterial.STEAM, 0.4f, APFinalData.CHANGE_BLOCK_FLAG)); APRList.addReaction(new APReaction(new APPair(APMaterial.LAVA.getID(), APMaterial.WATER.getID()), APMaterial.STONE, 0.9f, APFinalData.CHANGE_BLOCK_FLAG)); APRList.addReaction(new APReaction(new APPair(APMaterial.FIRE.getID(), APMaterial.WATER.getID()), APMaterial.NULL, 0.9f, APFinalData.REMOVE_BLOCK_FLAG)); APRList.addReaction(new APReaction(new APPair(APMaterial.WATER.getID(), APMaterial.ICE.getID()), APMaterial.ICE, 0.01f, APFinalData.CHANGE_BLOCK_FLAG)); APRList.addReaction(new APReaction(new APPair(APMaterial.ICE.getID(), APMaterial.LAVA.getID()), APMaterial.WATER, 1, APFinalData.CHANGE_BLOCK_FLAG)); APFinalData.mainFrame.init(); // Set the canvas size c3d.setPreferredSize(new Dimension(550, 300)); c3d.setLocation(0, 0); // Don't let the geometry clip off final Appearance polyAppearance = new Appearance(); polyAppearance.setPolygonAttributes( new PolygonAttributes(PolygonAttributes.POLYGON_FILL, PolygonAttributes.CULL_NONE, 0)); polyAppearance.setTextureAttributes(new TextureAttributes()); polyAppearance.setTexture(APFinalData.textures); final Appearance lineAppearance = new Appearance(); lineAppearance.setLineAttributes(new LineAttributes(1, LineAttributes.PATTERN_SOLID, false)); TransparencyAttributes trans = new TransparencyAttributes(); trans.setTransparencyMode(TransparencyAttributes.BLENDED); polyAppearance.setTransparencyAttributes(trans); // Add the GeometryArray to the Shape3D aobjects.addGeometry(cMain); aobjects.setAppearance(polyAppearance); lobjects.addGeometry(windLoc); lobjects.setAppearance(lineAppearance); ground.addGeometry(APFinalData.floor); ground.setAppearance(floorapp); // Initialize the AmbientLight APFinalData.whiteLight.setInfluencingBounds(bounds); // Sky Background back = new Background(); back.setApplicationBounds(new BoundingSphere(new Point3d(0, 0, 0), 1)); skyTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); skyTrans.rotX(0); skyTG.setTransform(skyTrans); skyTG.addChild(sky); BranchGroup backgeom = new BranchGroup(); backgeom.addChild(skyTG); back.setGeometry(backgeom); // Add the brush selection.setCapability(QuadArray.ALLOW_REF_DATA_WRITE); selections.addGeometry(selection); selections.setAppearance(APFinalData.wireframe); APFinalData.brushes.addChild(selections); // Scene initialization scene = new APSceneGraph(c3d); scene.addChild(APFinalData.whiteLight, aobjects, lobjects, ground, back, APFinalData.brushes); // Add it to the world scene.addBranchGraph(); // Prepare the world scene.prepare(mainRoutineFinalTransform); // Make the Canvas draw right c3d.setDoubleBufferEnable(true); // Stereo Red-blue c3d.getView().getPhysicalBody().setLeftEyePosition(new Point3d(-0.01, 0, 0)); c3d.getView().getPhysicalBody().setRightEyePosition(new Point3d(0.01, 0, 0)); c3d.getView().setDepthBufferFreezeTransparent(false); // Note: c3d has no anaglyphs c3d.setStereoMode(StereoMode.OFF); // Add Canvas listeners c3d.addMouseListener(this); c3d.addMouseMotionListener(this); c3d.addKeyListener(this); // Add menubar listeners APFinalData.Exit.addActionListener(this); APFinalData.New.addActionListener(this); APFinalData.Open.addActionListener(this); APFinalData.Save.addActionListener(this); APFinalData.Save_As.addActionListener(this); APFinalData.Import.addActionListener(this); APFinalData.Export.addActionListener(this); APFinalData.Element.addActionListener(this); APFinalData.Exit.addActionListener(this); APFinalData.Join_Server.addActionListener(this); APFinalData.Create_Server.addActionListener(this); APFinalData.View_Options.addActionListener(this); APFinalData.Sound.addActionListener(this); APFinalData.Online_Help.addActionListener(this); APFinalData.About_Us.addActionListener(this); APFinalData.Update.addActionListener(this); APFinalData.View_Ok.addActionListener(this); APFinalData.View_Cancel.addActionListener(this); APFinalData.Element_Ok.addActionListener(this); APFinalData.Element_Cancel.addActionListener(this); APFinalData.antiaDisable.addActionListener(this); APFinalData.antiaEnable.addActionListener(this); APFinalData.anaglyphFull.addActionListener(this); APFinalData.anaglyphGray.addActionListener(this); APFinalData.anaglyphHalf.addActionListener(this); APFinalData.anaglyphNone.addActionListener(this); APFinalData.anaglyphOptim.addActionListener(this); APFinalData.anaglyphRedBlue.addActionListener(this); APFinalData.anaglyphRedGreen.addActionListener(this); APFinalData.senseSlider.addChangeListener(this); APFinalData.elementChooser.addActionListener(this); APFinalData.SprayVacuum.addActionListener(this); APFinalData.Wind.addActionListener(this); APFinalData.processSwitch.setBackground(Color.WHITE); APFinalData.processSwitch.addChangeListener(this); APFinalData.processSwitch.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); // APFinalData.mainFrame.setVisible(true); // Make the thread if (threedanim == null) threedanim = new Thread(new APMain(), "APThread"); // Make it the best thread threedanim.setPriority(APSceneGraph.getJ3DThreadPriority()); threedanim.setDaemon(false); threedanim.start(); // Make it live isRunning = true; APFinalData.mainFrame.setVisible(true); }
From source file:com.salas.bb.core.ApplicationLauncher.java
License:Open Source License
/** Configures GUI part. */ protected void configureUI() { if (LOG.isLoggable(Level.FINE)) LOG.fine("configureUI starting..."); // Configure displaying anti-aliased text (SHOULD BE RUN BEFORE SWING INIT) configureAntiAliasing();/*from w w w.jav a2 s .co m*/ // Configure Mac OS X dock icon (we had problems with JWS dock icon: ugly and cannot be badged) OSXSupport.setApplicationIcon(); // Images cache Cache imagesCache = new Cache(new File(getContextPath() + "cache"), 20000000); ImageFetcher.setCache(imagesCache); // Stylesheets try { URL baseStylesheetURL = new URL("http://www.blogbridge.com/bbstyles/"); StylesheetManager.init(new File(getContextPath() + "stylesheets"), baseStylesheetURL); } catch (MalformedURLException e) { // Impossible to have } Options.setDefaultIconSize(new Dimension(DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT)); UIManager.put("ToolBar.separatorSize", new DimensionUIResource(TOOLBAR_SEP_WIDTH, TOOLBAR_SEP_HEIGHT)); Options.setPopupDropShadowEnabled(true); // In Java Web Start, indicate where to find the l&f classes. Set the Swing class loader. UIManager.put("ClassLoader", LookUtils.class.getClassLoader()); // Make Swing update everything dynamically during resize operations. Toolkit.getDefaultToolkit().setDynamicLayout(true); super.configureUI(); configureFonts(); if (LOG.isLoggable(Level.FINE)) { LOG.fine("configureUI done..."); } OSXSupport.setupLAF(); // Custom icons UIManager.getLookAndFeelDefaults().put("html.missingImage", new UIDefaults.LazyValue() { /** * Creates the actual value retrieved from the <code>UIDefaults</code> table. When an object that implements * this interface is retrieved from the table, this method is used to create the real value, which is then * stored in the table and returned to the calling method. * * @param table a <code>UIDefaults</code> table * * @return the created <code>Object</code> */ public Object createValue(UIDefaults table) { return ResourceUtils.getIcon("application.icon"); } }); }
From source file:cytoscape.CyMain.java
License:Open Source License
protected void setupLookAndFeel() { try {//from w w w . j a va 2 s.c o m if (LookUtils.IS_OS_WINDOWS) { /* * For Windows: just use platform default look & feel. */ UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } else if (LookUtils.IS_OS_MAC) { /* * For Mac: move menu bar to OS X default bar (next to Apple * icon) */ System.setProperty("apple.laf.useScreenMenuBar", "true"); } else { final JavaVersion javaVersion = JavaVersion.getJavaVersion(); if (javaVersion.getMajor() >= 2 || javaVersion.getMinor() > 6 || (javaVersion.getMinor() == 6 && javaVersion.getUpdate() >= 10)) UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); else { /* * For Unix platforms, use JGoodies Looks */ UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); Plastic3DLookAndFeel.set3DEnabled(true); Plastic3DLookAndFeel.setCurrentTheme(new com.jgoodies.looks.plastic.theme.SkyBluer()); Plastic3DLookAndFeel.setTabStyle(Plastic3DLookAndFeel.TAB_STYLE_METAL_VALUE); Plastic3DLookAndFeel.setHighContrastFocusColorsEnabled(true); Options.setDefaultIconSize(new Dimension(18, 18)); Options.setHiResGrayFilterEnabled(true); Options.setPopupDropShadowEnabled(true); Options.setUseSystemFonts(true); UIManager.put("Button.defaultButtonFollowsFocus", Boolean.TRUE); UIManager.put(Options.USE_SYSTEM_FONTS_APP_KEY, Boolean.TRUE); } } } catch (Exception e) { logger.warn("Can't set look & feel:" + e.getMessage(), e); } }
From source file:de.xplib.xdbm.ui.Application.java
License:Open Source License
/** * Sets global user interface options.//from ww w . ja v a 2s . c o m */ private void configureUI() { Options.setDefaultIconSize(new Dimension(18, 18)); // Set font options UIManager.put(Options.USE_SYSTEM_FONTS_APP_KEY, settings.isUseSystemFonts()); Options.setGlobalFontSizeHints(settings.getFontSizeHints()); Options.setUseNarrowButtons(settings.isUseNarrowButtons()); Options.setPopupDropShadowEnabled(settings.isPopupDropShadowEnabled().booleanValue()); // Global options Options.setTabIconsEnabled(settings.isTabIconsEnabled()); UIManager.put(Options.POPUP_DROP_SHADOW_ENABLED_KEY, settings.isPopupDropShadowEnabled()); // Swing Settings LookAndFeel selectedLaf = settings.getSelectedLookAndFeel(); if (selectedLaf instanceof PlasticLookAndFeel) { PlasticLookAndFeel.setMyCurrentTheme(settings.getSelectedTheme()); PlasticLookAndFeel.setTabStyle(settings.getPlasticTabStyle()); PlasticLookAndFeel.setHighContrastFocusColorsEnabled(settings.isPlasticHighContrastFocusEnabled()); } else if (selectedLaf.getClass() == MetalLookAndFeel.class) { MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme()); } // Work around caching in MetalRadioButtonUI JRadioButton radio = new JRadioButton(); radio.getUI().uninstallUI(radio); JCheckBox checkBox = new JCheckBox(); checkBox.getUI().uninstallUI(checkBox); try { UIManager.setLookAndFeel(selectedLaf); } catch (Exception e) { System.out.println("Can't change L&F: " + e); } }
From source file:musite.MusiteMain.java
License:Open Source License
private static void setupLookAndFeel() { try {// w ww . j ava 2 s . c o m if (SystemUtils.IS_OS_WINDOWS) { /* * For Windows: just use platform default look & feel. */ UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } else if (SystemUtils.IS_OS_MAC) { /* * For Mac: move menue bar to OS X default bar (next to Apple * icon) */ System.setProperty("apple.laf.useScreenMenuBar", "true"); } else { /* * For Unix platforms, use JGoodies Looks */ UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); Plastic3DLookAndFeel.set3DEnabled(true); Plastic3DLookAndFeel.setCurrentTheme(new com.jgoodies.looks.plastic.theme.SkyBluer()); Plastic3DLookAndFeel.setTabStyle(Plastic3DLookAndFeel.TAB_STYLE_METAL_VALUE); Plastic3DLookAndFeel.setHighContrastFocusColorsEnabled(true); Options.setDefaultIconSize(new Dimension(18, 18)); Options.setHiResGrayFilterEnabled(true); Options.setPopupDropShadowEnabled(true); Options.setUseSystemFonts(true); UIManager.put("Button.defaultButtonFollowsFocus", Boolean.TRUE); UIManager.put(Options.USE_SYSTEM_FONTS_APP_KEY, Boolean.TRUE); } } catch (Exception e) { e.printStackTrace(); } }
From source file:net.sf.nmedit.nomad.core.NomadLoader.java
License:Open Source License
private void initLookAndFeel(String lafClassName, String themeClassName, String defaultLafOnPlatform) { EnumSet<Platform.OS> defaultLafPlatforms = EnumSet.noneOf(Platform.OS.class); {/*from ww w .jav a 2 s . c om*/ // remove whitespace + lowercase defaultLafOnPlatform = defaultLafOnPlatform.replaceAll("\\s", "").toLowerCase(); // split comma separated list String[] dlop = defaultLafOnPlatform.split(","); // check items for (String s : dlop) { if (s.equals("all")) { // on all platforms defaultLafPlatforms.addAll(EnumSet.allOf(Platform.OS.class)); break; } else if (s.equals("mac")) { defaultLafPlatforms.add(Platform.OS.MacOSFlavor); } else if (s.equals("unix")) { defaultLafPlatforms.add(Platform.OS.UnixFlavor); } else if (s.equals("windows")) { defaultLafPlatforms.add(Platform.OS.WindowsFlavor); } } } // jgoodies specific properties PlasticLookAndFeel.setTabStyle(PlasticLookAndFeel.TAB_STYLE_METAL_VALUE); //UIManager.put(Options.POPUP_DROP_SHADOW_ENABLED_KEY, Boolean.FALSE); Options.setPopupDropShadowEnabled(false); Options.setUseNarrowButtons(true); //UIManager.put(Options.PLASTIC_MENU_FONT_KEY, new FontUIResource("Verdana", Font.PLAIN, 9)); //PlasticLookAndFeel.setFontPolicy(FontPolicies.getDefaultWindowsPolicy()); /* UIManager.put("MenuItem.margin", new InsetsUIResource(2,2,1,2)); UIManager.put("Menu.margin", new InsetsUIResource(1,2,1,2)); */ // set the metal theme if (defaultLafPlatforms.contains(Platform.flavor())) { // use default LAF on current platform try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Throwable e) { Log log = LogFactory.getLog(getClass()); log.warn("could not set look and feel theme", e); } if (Platform.isFlavor(Platform.OS.MacOSFlavor)) { System.setProperty("apple.laf.useScreenMenuBar", "true"); } } else { // use LAF setting MetalTheme theme = null; if (themeClassName != null) { try { theme = (MetalTheme) Class.forName(themeClassName).newInstance(); UIManager.put("Plastic.theme", themeClassName); if (theme instanceof PlasticTheme) { PlasticLookAndFeel.setPlasticTheme((PlasticTheme) theme); // PlasticLookAndFeel.setTabStyle(settings.getPlasticTabStyle()); } else if (theme instanceof MetalTheme) { MetalLookAndFeel.setCurrentTheme(theme); } } catch (Throwable e) { Log log = LogFactory.getLog(getClass()); log.warn("could not set look and feel theme", e); } } // set the look and feel if (lafClassName != null) { try { LookAndFeel LAF = (LookAndFeel) Class.forName(lafClassName).newInstance(); // it is very important to set the classloader UIManager.getDefaults().put("ClassLoader", getClass().getClassLoader()); UIManager.setLookAndFeel(LAF); } catch (Throwable e) { Log log = LogFactory.getLog(getClass()); log.warn("could not set custom look and feel", e); } } } }
From source file:org.columba.core.gui.themes.plugin.PlasticLookAndFeelPlugin.java
License:Mozilla Public License
/** * @see org.columba.core.gui.themes.plugin.AbstractThemePlugin#setLookAndFeel() *//*from ww w.j a v a 2 s . c o m*/ public void setLookAndFeel() throws Exception { Options.setDefaultIconSize(new Dimension(16, 16)); Options.setUseNarrowButtons(false); Options.setPopupDropShadowEnabled(true); XmlElement options = Config.getInstance().get("options").getElement("/options"); XmlElement gui = options.getElement("gui"); XmlElement themeElement = gui.getElement("theme"); try { // UIManager.setLookAndFeel(lafName); String theme = themeElement.getAttribute("theme"); if (theme != null) { PlasticTheme t = getTheme(theme); LookUtils.setLookAndTheme(new PlasticXPLookAndFeel(), t); } else { PlasticTheme t = PlasticLookAndFeel.createMyDefaultTheme(); LookUtils.setLookAndTheme(new PlasticXPLookAndFeel(), t); } } catch (Exception e) { System.err.println("Can't set look & feel:" + e); } ; }
From source file:org.springframework.richclient.application.config.JGoodiesLooksConfigurer.java
License:Apache License
/** * @param enabled set to <code>true</true> if drop shadows should be used. * @see com.jgoodies.looks.Options#setPopupDropShadowEnabled(boolean) *///ww w . j ava 2 s. c om public void setPopupDropShadowEnabled(boolean enabled) { Options.setPopupDropShadowEnabled(enabled); }
From source file:org.tentackle.plaf.tlooks.TLooksLookAndFeel.java
License:Open Source License
public void configureTLooksLookAndFeel() { PlasticLookAndFeel.setTabStyle(PlasticLookAndFeel.TAB_STYLE_METAL_VALUE); PlasticLookAndFeel.set3DEnabled(true); Options.setPopupDropShadowEnabled(true); UIManager.put(Options.PLASTIC_MICRO_LAYOUT_POLICY_KEY, TLooksMicroLayoutPolicies.getDefaultPlasticPolicy()); }