Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

constraint binding textbox

3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlink

Another new ZK fiddle

2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlink

Another new ZK fiddle

1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlink

Another new ZK fiddle

1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlink

tooltip example

2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlink

Another new ZK fiddle

1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlink

Another new ZK fiddle

1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlink

onClose

1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlink

Another new ZK fiddle

1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlink

ZK-5912-Suggestion

2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlink

Administracion de Memoria - SO 2016 - Prof Edgar Escobar

2lordedumax190.200.180.1099blipuSep 18, 2016 7:47:10 PMlink

resources

index.zulzul<zk> <style> .letraProcesoEspacio { transform: rotate(270deg); position: absolute; } .letraProceso { color: black; font-size: medium; position: relative; top: -18px; right: 35px; } .btn { height: 30px; background: #fff !important; border: 1px solid; border-radius: 5px; } .insertar { border-color: #9B59B6; color: #9B59B6; } .insertar:hover { background: #9B59B6 !important; color: #fff; } .continuar { border-color: #2C3E50; color: #2C3E50; } .continuar:hover { background: #2C3E50 !important; color: #fff; } .letra-medio { font-size: medium; } .letra-grande { font-size: x-large; } .letra-x-grande { font-size: xx-large; } .formulario { width: 90%; margin: 0 auto; } .z-listheader { background: #2980B9; } .z-listheader-content { color: #fff; text-align: center; } .z-listcell-content { text-align: center; } .ingresar_proceso_box { margin-right: 30px; padding: 10px 20px; background-color: rgb(242, 242, 242); } .mmu { border: 5px solid rgb(41, 128, 185); padding: 10px 30px; } .letra_mmu { font-size: medium; font-weight: bold; color: #2980B9; } .plus_mmu { font-size: x-large; position: relative; border: 1px solid; border-radius: 50px; padding: 0px 8px; right: -3px; } .flecha { width: 95px; height: auto; } .popDiv { position: relative; right: -15px; } </style> <div id="simulador" apply="pkg$.controladorSimulador" zclass="formulario"> <!-- TITULO --> <div align="center"> <label value="Administración de memoria bajo el esquema de segmentación" zclass="letra-x-grande"/> </div> <separator spacing="20px"/> <hbox> <!-- INGRESAR PROCESOS --> <div zclass="ingresar_proceso_box"> <vbox> <div align="center"> <label value="Ingresar Proceso" zclass="letra-grande"/> </div> <label value="Nombre del proceso (ID):" zclass="letra-medio"/> <textbox id="nombreProceso" maxlength="10" width="200px" onOK="tamannoProceso.focus()"/> <label value="Tamaño del proceso (k):" zclass="letra-medio"/> <intbox id="tamannoProceso" constraint="no zero, no negative" width="200px" onOK="tiempoProceso.focus()"/> <label value="Tiempo del proceso (Rafaga):" zclass="letra-medio"/> <intbox id="tiempoProceso" constraint="no zero, no negative" width="200px" onOK="insertarProceso.focus()"/> <button label="Insertar" id="insertarProceso" zclass="btn insertar" width="200px"/> <button label="Continuar" id="continuarProceso" zclass="btn continuar" width="200px"/> </vbox> </div> <!-- MEMORIA PRINCIPAL - GRAFICO --> <vbox> <label value="Memoria Principal" zclass="letra-medio"/> <div id="RAM"> <hbox spacing="0"/> <popup/> </div><separator spacing="22px"/> <!-- MEMORIA VIRTUAL - GRAFICO --> <label value="Memoria Virtual" zclass="letra-medio"/> <div id="MVirtual"> <hbox spacing="0"/> <popup/> </div> </vbox> </hbox><separator spacing="20px"/> <!-- TABLA SEGMENTACION --> <vbox> <div align="center"> <label value="Tabla de Segmentación" zclass="letra-grande"/> </div> <listbox id="tablaSegmentacion" emptyMessage="No hay procesos" width="1075px"> <listhead> <listheader label="Id" /> <listheader label="Base" /> <listheader label="Limite" /> <listheader label="Ráfaga" /> <listheader label="Dirección" /> <listheader label="RAM" /> </listhead> </listbox> </vbox><separator spacing="40px"/> <!-- TABLA MMU --> <div align="center" width="1075px"> <label value="Tabla de MMU" zclass="letra-grande"/> </div> <hbox> <listbox id="procesosMP" width="275px" emptyMessage="Ningun Proceso Trabajando" > <listhead> <listheader label="Procesos MP" /> <listheader label="Direccion Logica" /> </listhead> <template name="model"> <listitem> <listcell label="${each.id}" /> <listcell label="${each.direccion}"/> </listitem> </template> </listbox> <image src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Flecha_tesela.svg/1280px-Flecha_tesela.svg.png" zclass="flecha"/> <image src="https://alssl.askleomedia.com/wp-content/uploads/2009/01/cpu.jpg" width="100px" height="auto"/> <image src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Flecha_tesela.svg/1280px-Flecha_tesela.svg.png" zclass="flecha"/> <div zclass="mmu"> <vbox> <label value="MMU" zclass="letra_mmu"/> <label value="+" zclass="plus_mmu letra_mmu"/> <label value="5200" zclass="letra_mmu"/> </vbox> </div> <image src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Flecha_tesela.svg/1280px-Flecha_tesela.svg.png" zclass="flecha"/> <listbox id="procesosMPdirFis" width="275px" emptyMessage="Ningun Proceso Trabajando" > <listhead> <listheader label="Procesos MP" /> <listheader label="Direccion Fisica" /> </listhead> <template name="model"> <listitem> <listcell label="${each.id}" /> <listcell label="${each.direccion}"/> </listitem> </template> </listbox> </hbox> </div> </zk> controladorSimulador.javajava/* Integrantes: Daniela Brito Jose Duin Patricia Freitez Jonathan Rodriguez Ana Ruiz */ import org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; import java.util.ArrayList; import javax.swing.JOptionPane; import pkg$.Espacio; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Listen; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zul.Div; import org.zkoss.zul.Intbox; import org.zkoss.zul.ListModelList; import org.zkoss.zul.Listbox; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listhead; import org.zkoss.zul.Listitem; import org.zkoss.zul.Textbox; import pkg$.Simulador; public class controladorSimulador extends SelectorComposer<Component>{ private static final long serialVersionUID = 1L; private Simulador grafico = new Simulador(); @Wire private Textbox nombreProceso; @Wire private Intbox tamannoProceso; @Wire private Intbox tiempoProceso; @Wire private Listbox tablaSegmentacion; @Wire private Listbox procesosMP; @Wire private Listbox procesosMPdirFis; @Wire private Div RAM; @Wire private Div MVirtual; private int contMP; private int contMV; ArrayList<Espacio> listaProcesosMP = new ArrayList<Espacio>(); ArrayList<Espacio> ordenProcesosMP = new ArrayList<Espacio>(); ArrayList<Espacio> listaProcesosMV = new ArrayList<Espacio>(); ArrayList<Espacio> ordenProcesosMV = new ArrayList<Espacio>(); boolean ajustoMemoria=false; boolean insertoMP=false; boolean insertoMV=false; int redireccionFisica; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); nombreProceso.setFocus(true); redireccionFisica =5200; contMP=0; Espacio huecoInicial1= new Espacio("H"+contMP,50,0,0,0, true); for(int i=0;i<huecoInicial1.getTamanno();i++) listaProcesosMP.add(huecoInicial1); contMV=0; Espacio huecoInicial2= new Espacio("H"+contMV,200,0,0,0, true); for(int i=0;i<huecoInicial2.getTamanno();i++) { listaProcesosMV.add(huecoInicial2); } direccionesLogFis(); grafico.simularProcesos(RAM, listaProcesosMP, 1); grafico.simularProcesos(MVirtual, listaProcesosMV, 0); } @Listen("onClick = #insertarProceso") public void insertarProceso(){ if (validarCampos()) { Espacio procesoEntrada= new Espacio(); procesoEntrada.setId(nombreProceso.getText().toUpperCase()); procesoEntrada.setTamanno(tamannoProceso.getValue()); procesoEntrada.setTiempo(tiempoProceso.getValue()); procesoEntrada.setTiempoOriginal(tiempoProceso.getValue()); procesoEntrada.setHueco(false); if(ordenProcesosMP.size()!=0) disminuir(); insertarMP(procesoEntrada); if(insertoMP==false){ ajustoMemoria=false; boolean llenaMV=false; while(insertoMP==false && llenaMV==false){ int direccionLimpiar=ordenProcesosMP.get(0).getDireccion(); int tamannoLimpiar=ordenProcesosMP.get(0).getTamanno(); Espacio procesoEnviarMV=ordenProcesosMP.get(0); insertarMV(procesoEnviarMV); ajustoMemoria=false; if(insertoMV==true){ incrementarCont(0); Espacio hueco = new Espacio("H"+contMP,tamannoLimpiar,0,0,direccionLimpiar, true); for(int d=direccionLimpiar;d<direccionLimpiar+tamannoLimpiar;d++) listaProcesosMP.set(d, hueco); ordenProcesosMP.remove(0); insertarMP(procesoEntrada); ajustoMemoria=false; insertoMV=false; } else llenaMV=true; } if(llenaMV==true) JOptionPane.showMessageDialog(null,"No se pudo insertar el proceso de entrada "+procesoEntrada.getId()+" en la MP porque la MV no acepta mas procesos"); } direccionesLogFis(); grafico.simularProcesos(RAM, listaProcesosMP, 1); grafico.simularProcesos(MVirtual, listaProcesosMV, 0); tablaSegmentacion(); ajustoMemoria=false; insertoMP=false; insertoMV=false; limpiarCampos(); } }//Fin del metodo insertarProceso public void insertarMV(Espacio procesoEntrada){ int posicion=0; while(posicion<listaProcesosMV.size() && insertoMV==false){ if(listaProcesosMV.get(posicion).isHueco() && procesoEntrada.getTamanno()<=listaProcesosMV.get(posicion).getTamanno()){ Espacio hueco=listaProcesosMV.get(posicion); hueco.setDireccion(hueco.getDireccion()+procesoEntrada.getTamanno()); hueco.setTamanno(hueco.getTamanno()-procesoEntrada.getTamanno()); procesoEntrada.setDireccion(posicion); for(int a=posicion;a<posicion+procesoEntrada.getTamanno();a++) listaProcesosMV.set(a, procesoEntrada); if(hueco.getTamanno()>0) for(int b=hueco.getDireccion();b<hueco.getDireccion()+hueco.getTamanno();b++) listaProcesosMV.set(b, hueco); insertoMV=true; ordenProcesosMV.add(procesoEntrada); } else{ posicion=listaProcesosMV.get(posicion).getDireccion()+listaProcesosMV.get(posicion).getTamanno(); } } if(ajustoMemoria==false && insertoMV==false){ condensarMemoria(1); ajustoMemoria=true; insertarMV(procesoEntrada); } }//Fin del metodo insertarMV public void insertarMP(Espacio procesoEntrada){ if (validarIngresarMP(procesoEntrada) == false) { int posicion=0; while(posicion<listaProcesosMP.size() && insertoMP==false){ if(listaProcesosMP.get(posicion).isHueco() && procesoEntrada.getTamanno()<=listaProcesosMP.get(posicion).getTamanno()){ Espacio hueco=listaProcesosMP.get(posicion); hueco.setDireccion(hueco.getDireccion()+procesoEntrada.getTamanno()); hueco.setTamanno(hueco.getTamanno()-procesoEntrada.getTamanno()); procesoEntrada.setDireccion(posicion); for(int a=posicion;a<posicion+procesoEntrada.getTamanno();a++) listaProcesosMP.set(a, procesoEntrada); if(hueco.getTamanno()>0) for(int b=hueco.getDireccion();b<hueco.getDireccion()+hueco.getTamanno();b++) listaProcesosMP.set(b, hueco); insertoMP=true; ordenProcesosMP.add(procesoEntrada); } else { posicion=listaProcesosMP.get(posicion).getDireccion()+listaProcesosMP.get(posicion).getTamanno(); } } if(ajustoMemoria==false && insertoMP==false){ condensarMemoria(0); ajustoMemoria=true; insertarMP(procesoEntrada); } } else{ insertoMP=true; } }//Fin del metodo insertarMP @Listen("onClick = #continuarProceso") public void continuarProceso(){ if(ordenProcesosMP.size()!=0) disminuir(); if(ordenProcesosMV.size()!=0){ boolean llenaMP=false; ajustoMemoria=false; while(llenaMP==false && ordenProcesosMV.size()!=0){ int direccionLimpiar=ordenProcesosMV.get(0).getDireccion(); int tamannoLimpiar=ordenProcesosMV.get(0).getTamanno(); Espacio procesoEnviarMP= new Espacio(); procesoEnviarMP.setId(ordenProcesosMV.get(0).getId()); procesoEnviarMP.setTamanno(tamannoLimpiar); procesoEnviarMP.setTiempo(ordenProcesosMV.get(0).getTiempo()); procesoEnviarMP.setTiempoOriginal(ordenProcesosMV.get(0).getTiempoOriginal()); procesoEnviarMP.setHueco(ordenProcesosMV.get(0).isHueco()); insertarMP(procesoEnviarMP); if(insertoMP==true){ incrementarCont(1); Espacio hueco = new Espacio("H"+contMV,tamannoLimpiar,0,0,direccionLimpiar, true); for(int d=direccionLimpiar;d<direccionLimpiar+tamannoLimpiar;d++) listaProcesosMV.set(d, hueco); ordenProcesosMV.remove(0); insertoMP=false; } else llenaMP=true; } insertoMP=false; ajustoMemoria=false; } direccionesLogFis(); grafico.simularProcesos(RAM, listaProcesosMP, 1); grafico.simularProcesos(MVirtual, listaProcesosMV, 0); tablaSegmentacion(); }//Fin del metodo continuarProceso public void disminuir(){ int numP = ordenProcesosMP.size(); int posicion = 0; for(int i=0;i<numP;i++){ Espacio verificarP=ordenProcesosMP.get(posicion); verificarP.setTiempo(verificarP.getTiempo()-1); if(verificarP.getTiempo()==0){ incrementarCont(0); Espacio hueco=new Espacio("H"+contMP,verificarP.getTamanno(),0,0,verificarP.getDireccion(), true); for(int d=verificarP.getDireccion();d<verificarP.getDireccion()+verificarP.getTamanno();d++) listaProcesosMP.set(d, hueco); ordenProcesosMP.remove(posicion); solicitarProcesoMV(); } else posicion++; }//Fin for }//Fin del metodo disminuir public void solicitarProcesoMV(){ if(ordenProcesosMV.size()!=0){ Espacio procesoEnviarMP=ordenProcesosMV.get(0); int direccionLimpiar=ordenProcesosMV.get(0).getDireccion(); int tamannoLimpiar=ordenProcesosMV.get(0).getTamanno(); insertarMP(procesoEnviarMP); if(insertoMP==true){ incrementarCont(1); Espacio hueco = new Espacio("H"+contMV,tamannoLimpiar,0,0,direccionLimpiar, true); for(int d=direccionLimpiar;d<direccionLimpiar+tamannoLimpiar;d++) listaProcesosMV.set(d, hueco); ordenProcesosMV.remove(0); } } ajustoMemoria=false; insertoMP=false; }//Fin del metodo solicitarProcesoMV public void condensarMemoria(int tipo){ ArrayList<Espacio> memoria; if(tipo==0) memoria= listaProcesosMP; else memoria=listaProcesosMV; int posicion=0; boolean estoyEnElUltimo=false; while(posicion<memoria.size() && estoyEnElUltimo==false){ Espacio proceso=memoria.get(posicion); if(proceso.getDireccion()+proceso.getTamanno()==memoria.size()) estoyEnElUltimo=true; else{ Espacio procesoSig=memoria.get(proceso.getDireccion()+proceso.getTamanno()); if(proceso.isHueco() && procesoSig.isHueco()){ incrementarCont(tipo); int num; if(tipo==0) num=contMP; else num=contMV; Espacio hueco=new Espacio("H"+num,proceso.getTamanno()+procesoSig.getTamanno(),0,0,proceso.getDireccion(), true); for(int d=hueco.getDireccion();d<hueco.getDireccion()+hueco.getTamanno();d++) memoria.set(d, hueco); } else posicion=proceso.getDireccion()+proceso.getTamanno(); } } }//Fin del metodo condensarMemoria public void direccionesLogFis(){ procesosMP.setModel(new ListModelList<Espacio>(ordenProcesosMP)); ArrayList<Espacio> listadirFis = new ArrayList<Espacio>(); for(int i=0;i<ordenProcesosMP.size();i++){ Espacio proceso=new Espacio(); proceso.setId(ordenProcesosMP.get(i).getId()); proceso.setDireccion(ordenProcesosMP.get(i).getDireccion()+redireccionFisica); proceso.setTamanno(ordenProcesosMP.get(i).getTamanno()); proceso.setTiempo(ordenProcesosMP.get(i).getTiempo()); proceso.setTiempoOriginal(ordenProcesosMP.get(i).getTiempoOriginal()); proceso.setHueco(ordenProcesosMP.get(i).isHueco()); listadirFis.add(proceso); } procesosMPdirFis.setModel(new ListModelList<Espacio>(listadirFis)); }//Fin del metodo direccionesLogFis public void tablaSegmentacion() { for (int i = 0; i < tablaSegmentacion.getChildren().size(); i++) { if (!(tablaSegmentacion.getChildren().get(i) instanceof Listhead)) { grafico.removerComponente(tablaSegmentacion.getChildren().get(i)); } } tablaSegmentacionMemoria(listaProcesosMP, 1); tablaSegmentacionMemoria(listaProcesosMV, 0); }//Fin del metodo tablaSegmentacion private void tablaSegmentacionMemoria(ArrayList<Espacio> listaProceso, int ram) { for(int i = 0; i < listaProceso.size();) { Espacio proceso = listaProceso.get(i); if(!proceso.isHueco()) { Listitem listitem = new Listitem(); tablaSegmentacionProceso(listitem, proceso.getId()); tablaSegmentacionProceso(listitem, i + " k"); tablaSegmentacionProceso(listitem, grafico.calcularTamanoProceso(listaProceso, proceso) + " k"); tablaSegmentacionProceso(listitem, String.valueOf(proceso.getTiempoOriginal())); tablaSegmentacionProceso(listitem, String.valueOf(proceso.getDireccion())); tablaSegmentacionProceso(listitem, String.valueOf(ram)); tablaSegmentacion.appendChild(listitem); } i += grafico.calcularTamanoProceso(listaProceso, proceso); } }//Fin del metodo tablaSegmentacionMemoria private void tablaSegmentacionProceso(Listitem listitem, String valor) { Listcell listcell = new Listcell(valor); listitem.appendChild(listcell); }//Fin del metodo tablaSegmentacionProceso private void incrementarCont(int i){ if(i==0){ contMP++; if(contMP>50) contMP=0; } else{ contMV++; if(contMV>200) contMV=0; } }//Fin del metodo incrementarCont private void limpiarCampos() { nombreProceso.setText(""); tamannoProceso.setText(""); tiempoProceso.setText(""); nombreProceso.setFocus(true); }//Fin del metodo private boolean validarCampos() { if(nombreProceso.getText().trim().equals("") || tamannoProceso.getText().trim().equals("") || tiempoProceso.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "Debe llenar todos los campos!"); return false; } return true; }//Fin del metodo validarCampos private boolean validarIngresarMP(Espacio procesoEntrada) { boolean valor = false; if (procesoEntrada.getTamanno() <= 50) { for (Espacio pro : listaProcesosMP) { if (pro.getId().equalsIgnoreCase(procesoEntrada.getId())) { valor = true; break; } } if (valor == true) { JOptionPane.showMessageDialog(null,"Proceso " + procesoEntrada.getId() + " esta en memoria"); } } else { valor = true; JOptionPane.showMessageDialog(null,"Proceso " + procesoEntrada.getId() + " excede la capacidad de la RAM"); } return valor; }//Fin del metodo validarIngresarMP }//Fin del controladorSimulador Espacio.javajava/* Integrantes: Daniela Brito Jose Duin Patricia Freitez Jonathan Rodriguez Ana Ruiz */ public class Espacio { private String id; private int tamanno; private int tiempo; private int tiempoOriginal; private int direccion; private boolean hueco; public Espacio() { } public Espacio(String id, int tamanno, int tiempo, int tiempoOriginal, int direccion, boolean hueco) { super(); this.id = id; this.tamanno = tamanno; this.tiempo = tiempo; this.tiempoOriginal = tiempoOriginal; this.direccion = direccion; this.hueco = hueco; } public String getId() { return id; } public void setId(String id) { this.id = id; } public int getTamanno() { return tamanno; } public void setTamanno(int tamanno) { this.tamanno = tamanno; } public int getTiempo() { return tiempo; } public void setTiempo(int tiempo) { this.tiempo = tiempo; } public int getTiempoOriginal() { return tiempoOriginal; } public void setTiempoOriginal(int tiempoOriginal) { this.tiempoOriginal = tiempoOriginal; } public int getDireccion() { return direccion; } public void setDireccion(int direccion) { this.direccion = direccion; } public boolean isHueco() { return hueco; } public void setHueco(boolean hueco) { this.hueco = hueco; } } Simulador.javajava/* Integrantes: Daniela Brito Jose Duin Patricia Freitez Jonathan Rodriguez Ana Ruiz */ import org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; import java.util.ArrayList; import java.util.List; import pkg$.Espacio; import org.zkoss.zk.ui.Component; import org.zkoss.zul.Div; import org.zkoss.zul.Hbox; import org.zkoss.zul.Label; import org.zkoss.zul.Popup; import org.zkoss.zul.Vbox; import org.zkoss.zul.Separator; public class Simulador { public void simularProcesos(Div memoria, ArrayList<Espacio> listaProcesos, int ram) { Hbox hbox = (Hbox) memoria.getFirstChild(); removerComponente(hbox); Popup pop = (Popup) memoria.getChildren().get(1); removerComponente(pop); String mem = (ram == 1) ? "Memoria Principal" : "Memoria Virtual"; Label memo = new Label(mem); memo.setZclass("letra-medio"); pop.appendChild(memo); for(int i = 0; i < listaProcesos.size();) { Espacio pro = listaProcesos.get(i); int tamano = calcularTamanoProceso(listaProcesos, pro); String estilo = "height:100px;border: 1px solid black;width: "; estilo += (ram == 1) ? tamano * 8 + "px;" : tamano * 4 + "px;"; estilo += (pro.isHueco()) ? colorHueco() : colorProceso(); Label proId = new Label(pro.getId() + " - " + pro.getTamanno() + " k"); proId.setZclass("letraProceso"); Vbox vbox = new Vbox(); vbox.appendChild(proId); Div divAux = new Div(); divAux.setZclass("letraProcesoEspacio"); divAux.appendChild(vbox); Div div = new Div(); div.setStyle(estilo); Label popProcId = new Label(pro.getId()); Label popTamano = new Label("Tamaño: " + pro.getTamanno() + " k"); Label popRafagaOriginal = new Label("Rafaga: " + pro.getTiempoOriginal()); Label popRafaga = new Label("Falta: " + pro.getTiempo()); Vbox popVbox = new Vbox(); popVbox.appendChild(popTamano); if (!pro.isHueco()) { popVbox.appendChild(popRafagaOriginal); popVbox.appendChild(popRafaga); } Div popDiv = new Div(); popDiv.setZclass("popDiv"); popDiv.appendChild(popVbox); Separator separador = new Separator(); separador.setBar(true); pop.appendChild(separador); pop.appendChild(popProcId); pop.appendChild(popDiv); div.setPopup(pop); div.appendChild(divAux); hbox.appendChild(div); i += tamano; } } public int calcularTamanoProceso(ArrayList<Espacio> listaProcesos, Espacio proceso) { int cont = 0; for (Espacio pro : listaProcesos) { if (proceso.getId().equals(pro.getId())) { cont++; } } return cont; } /*private void crearComponente(Component component) { Selectors.wireComponents(component, this, false); Selectors.wireEventListeners(component, this); }*/ public void removerComponente(Component componente) { List<Component> componentes = componente.getChildren(); for (int i = componentes.size() - 1; i >= 0; i--) { componente.removeChild(componentes.get(i)); } } /* * Paleta de colores para PROCESOS y HUECOS * */ private String colorProceso() { return "background: #C0392B;"; } private String colorHueco() { return "background: #cccccc;"; } }