/** * Create Window Tabs * * @param mWindowVO Window Value Object * @return true if tabs were created */ private static boolean createTabs(GridWindowVO mWindowVO) { mWindowVO.Tabs = new ArrayList<GridTabVO>(); String sql = GridTabVO.getSQL(mWindowVO.ctx); int TabNo = 0; PreparedStatement pstmt = null; ResultSet rs = null; try { // create statement pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, mWindowVO.AD_Window_ID); rs = pstmt.executeQuery(); boolean firstTab = true; while (rs.next()) { if (mWindowVO.AD_Table_ID == 0) mWindowVO.AD_Table_ID = rs.getInt("AD_Table_ID"); // Create TabVO GridTabVO mTabVO = GridTabVO.create( mWindowVO, TabNo, rs, mWindowVO.WindowType.equals(WINDOWTYPE_QUERY), // isRO mWindowVO.WindowType.equals(WINDOWTYPE_TRX)); // onlyCurrentRows if (mTabVO == null && firstTab) break; // don't continue if first tab is null if (mTabVO != null) { if (!mTabVO.IsReadOnly && "N".equals(mWindowVO.IsReadWrite)) mTabVO.IsReadOnly = true; mWindowVO.Tabs.add(mTabVO); TabNo++; // must be same as mWindow.getTab(x) firstTab = false; } } } catch (SQLException e) { CLogger.get().log(Level.SEVERE, "createTabs", e); return false; } finally { DB.close(rs, pstmt); rs = null; pstmt = null; } // No Tabs if (TabNo == 0 || mWindowVO.Tabs.size() == 0) { CLogger.get() .log(Level.SEVERE, "No Tabs - AD_Window_ID=" + mWindowVO.AD_Window_ID + " - " + sql); return false; } // Put base table of window in ctx (for VDocAction) Env.setContext(mWindowVO.ctx, mWindowVO.WindowNo, "BaseTable_ID", mWindowVO.AD_Table_ID); return true; } // createTabs