@SuppressWarnings("serial") public class PanelAdquirirHabilidades extends Panel { private LanternCorpsAcademyApp app = (LanternCorpsAcademyApp) // LanternCorpsAcademyApp.getActive(); private Desktop d = app.getDesktop(); private Atributos atrib = app.getAtributos(); private TestTableModel tableDtaModel; private List<Integer> seleccion = new ArrayList<Integer>(); public PanelAdquirirHabilidades() { Column col = new Column(); col.setInsets(new Insets(10, 10, 10, 10)); col.setCellSpacing(new Extent(10)); Row row = new Row(); row.setCellSpacing(new Extent(10)); row.setAlignment(Alignment.ALIGN_CENTER); // ---------------------------------------- // Carga las Habilidades Disponibles // ---------------------------------------- tableDtaModel = new TestTableModel(); try { tableDtaModel = HabilidadesAnillo.obtenerHabilidadesCompra( // atrib.getPersonaje(), tableDtaModel); } catch (Exception e) { e.printStackTrace(); } col.add(PanelConstructor.initTopRow("Habilidades Disponibles")); col.add(PanelConstructor.initTable(tableDtaModel, initTableColModel(), true)); Button btnAtras = new Button("Atrás"); btnAtras.setStyle(Estilo.getStyleColor(app.getAtributos())); btnAtras.setWidth(new Extent(160)); btnAtras.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { btnAtrasClicked(); } }); row.add(btnAtras); Button btnAdquirirHabilidad = new Button("Adquirir Habilidad"); btnAdquirirHabilidad.setStyle(Estilo.getStyleColor(app.getAtributos())); btnAdquirirHabilidad.setWidth(new Extent(160)); btnAdquirirHabilidad.setAlignment(Alignment.ALIGN_CENTER); btnAdquirirHabilidad.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { btnAdquirirHabilidadClicked(); } }); row.add(btnAdquirirHabilidad); col.add(row); add(col); } // -------------------------------------------------------------------------------- private TableColModel initTableColModel() { TableColModel tableColModel = new TableColModel(); TableColumn tableColumn; tableColumn = new TableColumn() { @Override public Object getValue(ETable table, Object element) { IHabilidadDO habilidad = (IHabilidadDO) element; return habilidad.getNombre(); } }; tableColumn.setWidth(new Extent(100)); tableColumn.setHeadValue("Nombre"); tableColumn.setHeadCellRenderer(new LabelCellRenderer()); tableColumn.setDataCellRenderer(new LabelCellRenderer()); tableColModel.getTableColumnList().add(tableColumn); tableColumn = new TableColumn() { @Override public Object getValue(ETable table, Object element) { IHabilidadDO habilidad = (IHabilidadDO) element; try { return HabilidadesAnillo.obtenerNivel( // atrib.getPersonaje().getId(), habilidad); } catch (Exception e) { e.printStackTrace(); } return 0; } }; tableColumn.setWidth(new Extent(25)); tableColumn.setHeadValue("Nivel"); tableColumn.setHeadCellRenderer(new LabelCellRenderer()); tableColumn.setDataCellRenderer(new LabelCellRenderer()); tableColModel.getTableColumnList().add(tableColumn); tableColumn = new TableColumn() { @Override public Object getValue(ETable table, Object element) { IHabilidadDO habilidad = (IHabilidadDO) element; return HabilidadesAnillo.determinarTipo(habilidad.getTipo()); } }; tableColumn.setWidth(new Extent(80)); tableColumn.setHeadValue("Tipo"); tableColumn.setHeadCellRenderer(new LabelCellRenderer()); tableColumn.setDataCellRenderer(new LabelCellRenderer()); tableColModel.getTableColumnList().add(tableColumn); tableColumn = new TableColumn() { @Override public Object getValue(ETable table, Object element) { IHabilidadDO habilidad = (IHabilidadDO) element; return habilidad.getCosto_de_aprendizaje(); } }; tableColumn.setWidth(new Extent(80)); tableColumn.setHeadValue("Costo de Adquisición"); tableColumn.setHeadCellRenderer(new LabelCellRenderer()); tableColumn.setDataCellRenderer(new LabelCellRenderer()); tableColModel.getTableColumnList().add(tableColumn); tableColumn = new TableColumn(); tableColumn.setWidth(new Extent(20)); tableColumn.setHeadValue(""); tableColumn.setHeadCellRenderer(new LabelCellRenderer()); tableColumn.setDataCellRenderer(initNestedCellRenderer()); tableColModel.getTableColumnList().add(tableColumn); return tableColModel; } // -------------------------------------------------------------------------------- // Setup command bar renderer // -------------------------------------------------------------------------------- private NestedCellRenderer initNestedCellRenderer() { NestedCellRenderer nestedCellRenderer = new NestedCellRenderer(); nestedCellRenderer .getCellRendererList() .add( new BaseCellRenderer() { @Override public Component getCellRenderer( // final ETable table, final Object value, // final int col, final int row) { boolean editable = ((TestTableModel) // table.getTableDtaModel()) .getEditable(); CheckBox checkBox = new CheckBox(); checkBox.setEnabled(editable); checkBox.setToolTipText("Selección"); checkBox.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { btnRadioClicked(row); } }); return checkBox; } }); return nestedCellRenderer; } // -------------------------------------------------------------------------------- private void btnRadioClicked(int row) { Integer e = new Integer(row); for (int pos = 0; pos < seleccion.size(); pos++) { if (seleccion.get(pos).equals(e)) { seleccion.remove(pos); return; } } seleccion.add(e); } protected void btnAtrasClicked() { PanelVerHabilidadesAnillo pnlMain = new PanelVerHabilidadesAnillo(); d.setPanelCentral(pnlMain); } protected void btnAdquirirHabilidadClicked() { if (seleccion.isEmpty()) { d.setWindowPaneEmergente( // "No ha seleccionado ninguna hablidad para adquirir, No se adquiere nada"); return; } IPersonajeDO personaje = atrib.getPersonaje(); try { if (HabilidadesAnillo.adquirirHabilidades(seleccion, personaje)) { d.setWindowPaneEmergente( // "No se poseen suficientes puntos de entrenamiento, No se adquiere nada"); return; } } catch (Exception e) { e.printStackTrace(); } atrib.setPersonaje(personaje); d.setWindowPaneEmergente("Se han adquirido las habilidades con éxito"); return; } }