initial commit

This commit is contained in:
2020-11-04 16:30:07 +01:00
parent a1df198632
commit e6a0b9a8a3
12 changed files with 703 additions and 81 deletions
+41
View File
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.zkoss.zk:zkbind:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.18.2-GA" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.zk:zul:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.zk:zk:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.common:zweb:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.common:zcommon:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.3" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.common:zel:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.apache-extras.beanshell:bsh:2.0b6" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.slf4j:slf4j-jdk14:1.7.5" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.8" level="project" />
<orderEntry type="library" name="Maven: com.google.javascript:closure-compiler-unshaded:v20170626" level="project" />
<orderEntry type="library" name="Maven: com.google.javascript:closure-compiler-externs:v20170626" level="project" />
<orderEntry type="library" name="Maven: args4j:args4j:2.33" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.0.18" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.7" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.jsinterop:jsinterop-annotations:1.0.0" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.zk:zkwebfragment:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.zk:zkplus:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.zkoss.zk:zhtml:9.0.0-Eval" level="project" />
<orderEntry type="library" name="Maven: org.zkoss:zsoup:1.8.2.5" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.17" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
</component>
</module>
@@ -13,6 +13,7 @@ class serie
private boolean m_seriesCliffhanger;
private String m_seriesStatus;
private String m_seriesDownload;
private String m_seriesLocalPath;
private String m_seriesPoster;
private String m_seriesBackdrop;
private String m_seriesOverview;
@@ -27,24 +28,25 @@ class serie
{
}
public serie(int seriesID, String seriesName, int seriesFirstAired, String seriesResolution, boolean seriesCliffhanger, String seriesStatus, String seriesDownload, String seriesPoster, String seriesBackdrop, String seriesOverview, SortedMap<Integer, Integer> episodeState, int minSeason, int maxSeason, int stateInit, int stateProg, int stateDone)
public serie(int seriesID, String seriesName, int seriesFirstAired, String seriesResolution, boolean seriesCliffhanger, String seriesStatus, String seriesDownload, String localPath, String seriesPoster, String seriesBackdrop, String seriesOverview, SortedMap<Integer, Integer> episodeState, int minSeason, int maxSeason, int stateInit, int stateProg, int stateDone)
{
m_seriesID = seriesID;
m_seriesName = seriesName;
m_seriesFirstAired = seriesFirstAired;
m_seriesResolution = seriesResolution;
m_seriesID = seriesID;
m_seriesName = seriesName;
m_seriesFirstAired = seriesFirstAired;
m_seriesResolution = seriesResolution;
m_seriesCliffhanger = seriesCliffhanger;
m_seriesStatus = seriesStatus;
m_seriesDownload = seriesDownload;
m_seriesPoster = seriesPoster;
m_seriesBackdrop = seriesBackdrop;
m_seriesOverview = seriesOverview;
m_episodeState = episodeState;
m_minSeason = minSeason;
m_maxSeason = maxSeason;
m_stateInit = stateInit;
m_stateProg = stateProg;
m_stateDone = stateDone;
m_seriesStatus = seriesStatus;
m_seriesDownload = seriesDownload;
m_seriesLocalPath = localPath;
m_seriesPoster = seriesPoster;
m_seriesBackdrop = seriesBackdrop;
m_seriesOverview = seriesOverview;
m_episodeState = episodeState;
m_minSeason = minSeason;
m_maxSeason = maxSeason;
m_stateInit = stateInit;
m_stateProg = stateProg;
m_stateDone = stateDone;
}
public int getSeriesID()
@@ -117,6 +119,16 @@ class serie
m_seriesDownload = seriesDownload;
}
public String getSeriesLocalPath()
{
return m_seriesLocalPath;
}
public void setSeriesLocalPath(String seriesLocalPath)
{
m_seriesLocalPath = seriesLocalPath;
}
public String getSeriesPoster()
{
return m_seriesPoster;
@@ -4,22 +4,33 @@ import org.zkoss.image.AImage;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
import org.zkoss.zul.*;
import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.SortedMap;
import java.util.TreeMap;
public class serieDetailsForwardComposer extends GenericForwardComposer<Component>
{
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
private final serieDataSource ds = serieDataSource.INSTANCE;
private int opacity = 70;
@Wire
private Window detailsSerie;
@Wire
protected Groupbox overview;
@Wire
protected Label overviewLabel;
@Wire
protected Groupbox settings;
@Wire
protected Textbox downloadLink;
@@ -27,7 +38,22 @@ public class serieDetailsForwardComposer extends GenericForwardComposer<Componen
protected Textbox localPath;
@Wire
protected Textbox resolution;
protected Combobox resolution;
@Wire
protected Checkbox cliffhanger;
@Wire
protected Hbox buttons;
@Wire
protected Button saveButton;
@Wire
protected Button cancelButton;
@Wire
protected Button deleteButton;
private serie m_serie;
@@ -36,57 +62,199 @@ public class serieDetailsForwardComposer extends GenericForwardComposer<Componen
{
super.doAfterCompose(comp);
try
overview.setStyle("opacity: " + opacity + "%");
settings.setStyle("opacity: " + opacity + "%");
int hD = (int) self.getDesktop().getAttribute("desktopHeight");
int wD = (int) self.getDesktop().getAttribute("desktopWidth");
detailsSerie.setWidth(wD - 10 + "px");
detailsSerie.setHeight(hD - 10 + "px");
if(arg.containsKey("serie"))
m_serie = (serie) arg.get("serie");
else
detailsSerie.detach();
if(m_serie.getSeriesBackdrop() != null)
{
int hD = (int) self.getDesktop().getAttribute("desktopHeight");
int wD = (int) self.getDesktop().getAttribute("desktopWidth");
String uri = "http://image.tmdb.org/t/p/original" + m_serie.getSeriesBackdrop();
URL url = new URL(uri);
AImage img = new AImage(url);
detailsSerie.setWidth(wD - 10 + "px");
detailsSerie.setHeight(hD - 10 + "px");
int w = Integer.parseInt(detailsSerie.getWidth().replace("px", ""));
int h = Integer.parseInt(detailsSerie.getHeight().replace("px", ""));
int wI = img.getWidth();
int hI = img.getHeight();
int wR = w;
int hR = hI * w / wI;
if(arg.containsKey("serie"))
m_serie = (serie) arg.get("serie");
else
detailsSerie.detach();
if(m_serie.getSeriesBackdrop() != null)
if(hR < h)
{
String uri = "http://image.tmdb.org/t/p/original" + m_serie.getSeriesBackdrop();
URL url = new URL(uri);
AImage img = new AImage(url);
int w = Integer.parseInt(detailsSerie.getWidth().replace("px", ""));
int h = Integer.parseInt(detailsSerie.getHeight().replace("px", ""));
int wI = img.getWidth();
int hI = img.getHeight();
int wR = w;
int hR = hI * w / wI;
if(hR < h)
{
hR = h;
wR = wI * h / hI;
}
String size = String.valueOf(wR) + "px " + String.valueOf(hR) + "px";
String format = "background:url('%1$s') no-repeat center center fixed; -webkit-background-size: " + size + "; -moz-background-size: \" + size + \"; -o-background-size: \" + size + \"; background-size: \" + size + \";";
String style = String.format(format, uri);
detailsSerie.setContentStyle(style);
hR = h;
wR = wI * h / hI;
}
detailsSerie.setTitle(m_serie.getSeriesName() + " (" + m_serie.getSeriesFirstAired() + ")");
overviewLabel.setValue(m_serie.getSeriesOverview());
downloadLink.setValue(m_serie.getSeriesDownload());
localPath.setValue("blablabla");
resolution.setValue(m_serie.getSeriesResolution());
String size = String.valueOf(wR) + "px " + String.valueOf(hR) + "px";
String format = "overflow:auto; background:url('%1$s') no-repeat center center fixed; -webkit-background-size: " + size + "; -moz-background-size: \" + size + \"; -o-background-size: \" + size + \"; background-size: \" + size + \";";
String style = String.format(format, uri);
detailsSerie.setContentStyle(style);
}
catch(Exception e)
Statement stmt = ds.getStatement();
ResultSet rs = stmt.executeQuery(
"SELECT resolution" +
" FROM resolution" +
" ORDER BY sort;"
);
while(rs.next())
{
detailsSerie.detach();
e.printStackTrace();
resolution.appendItem(rs.getString("resolution"));
}
finally
detailsSerie.setTitle(m_serie.getSeriesName() + " (" + m_serie.getSeriesFirstAired() + ")");
overviewLabel.setValue(m_serie.getSeriesOverview());
downloadLink.setValue(m_serie.getSeriesDownload());
localPath.setValue(m_serie.getSeriesLocalPath());
resolution.setValue(m_serie.getSeriesResolution());
cliffhanger.setChecked(m_serie.getSeriesCliffhanger());
for(int i = m_serie.getMinSeason(); i <= m_serie.getMaxSeason(); i++)
{
if(i < 1)
continue;
addSeasonPanel(i, m_serie.getEpisodeState());
}
}
protected void addSeasonPanel(int season, SortedMap<Integer, Integer> state)
{
int maxEpisode = 0;
String styleString = "display: grid; " +
"grid-template-columns: 4fr ";
Groupbox groupbox = new Groupbox();
groupbox.setId("groupboxSeason" + season);
Caption caption = new Caption();
caption.setLabel("Season " + season);
groupbox.insertBefore(caption, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radiogroup radiogroup = new Radiogroup();
radiogroup.setName("radiogroupSeason" + _season + "_" + _episode);
radiogroup.setId("radiogroupSeason" + _season + "_" + _episode);
groupbox.insertBefore(radiogroup, null);
maxEpisode = _episode;
}
else if(_season > season)
break;
}
NoDOM nodom = new NoDOM();
groupbox.insertBefore(nodom, null);
Div div = new Div();
//div.setWidth("100%");
nodom.insertBefore(div, null);
Label dummy = new Label();
div.insertBefore(dummy, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Label episodeLabel = new Label();
episodeLabel.setValue("" + _episode);
div.insertBefore(episodeLabel, null);
}
else if(_season > season)
break;
}
Button buttonInit = new Button();
buttonInit.setLabel("init");
buttonInit.setId("buttonInit" + season);
div.insertBefore(buttonInit, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radio radio = new Radio();
radio.setId("init" + _season + "_" + _episode);
radio.setRadiogroup("radiogroupSeason" + _season + "_" + _episode);
div.insertBefore(radio, null);
}
else if(_season > season)
break;
}
Button buttonProg = new Button();
buttonProg.setLabel("prog");
buttonProg.setId("buttonProg" + season);
div.insertBefore(buttonProg, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radio radio = new Radio();
radio.setId("prog" + _season + "_" + _episode);
radio.setRadiogroup("radiogroupSeason" + _season + "_" + _episode);
div.insertBefore(radio, null);
}
else if(_season > season)
break;
}
Button buttonDone = new Button();
buttonDone.setLabel("done");
buttonDone.setId("buttonDone" + season);
div.insertBefore(buttonDone, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radio radio = new Radio();
radio.setId("done" + _season + "_" + _episode);
radio.setRadiogroup("radiogroupSeason" + _season + "_" + _episode);
div.insertBefore(radio, null);
}
else if(_season > season)
break;
}
for(int i = 0;i < maxEpisode;i++)
{
styleString = styleString + "2fr ";
}
styleString = styleString + "; grid-gap: 10px; justify-items: center;";
div.setStyle(styleString);
detailsSerie.insertBefore(groupbox, buttons);
}
}
@@ -94,6 +94,7 @@ public class serieListForwardComposer extends GenericForwardComposer
" serie.cliffhanger seriesCliffhanger," +
" serie.status seriesStatus," +
" serie.download seriesDownload," +
" serie.localPath seriesLocalPath," +
" serie.posterPath seriesPoster," +
" serie.backdropPath seriesBackdrop," +
" serie.overview seriesOverview," +
@@ -151,6 +152,7 @@ public class serieListForwardComposer extends GenericForwardComposer
serie.setSeriesCliffhanger(rs.getBoolean("seriesCliffhanger"));
serie.setSeriesStatus(rs.getString("seriesStatus"));
serie.setSeriesDownload(rs.getString("seriesDownload"));
serie.setSeriesLocalPath(rs.getString("seriesLocalPath"));
serie.setSeriesPoster(rs.getString("seriesPoster"));
serie.setSeriesBackdrop(rs.getString("seriesBackdrop"));
serie.setSeriesOverview(rs.getString("seriesOverview"));
@@ -32,6 +32,7 @@ public class serieListSelectorComposer extends SelectorComposer<Component>
arguments.put("serie", s);
String template = "/serie/detailsSerie.zul";
// String template = "/testing/test.zul";
Window window = (Window) Executions.createComponents(template, null, arguments);
window.doModal();
@@ -0,0 +1,286 @@
package at.windesign.application.testing;
import at.windesign.application.serie.serieDataSource;
import org.zkoss.idom.Text;
import org.zkoss.image.AImage;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.SortedMap;
public class testForwardComposer extends GenericForwardComposer<Component>
{
private static final long serialVersionUID = 1L;
private final serieDataSource ds = serieDataSource.INSTANCE;
private int opacity = 70;
@Wire
private Window test;
@Wire
protected Groupbox overview;
@Wire
protected Label overviewLabel;
@Wire
protected Groupbox settings;
@Wire
protected Textbox downloadLink;
@Wire
protected Textbox localPath;
@Wire
protected Combobox resolution;
@Wire
protected Checkbox cliffhanger;
@Wire
protected Hbox buttons;
@Wire
protected Button saveButton;
@Wire
protected Button cancelButton;
@Wire
protected Button deleteButton;
// private serie m_serie;
@Override
public void doAfterCompose(Component comp) throws Exception
{
super.doAfterCompose(comp);
// overview.setStyle("opacity: " + opacity + "%");
// settings.setStyle("opacity: " + opacity + "%");
//
// try
// {
int hD = (int) self.getDesktop().getAttribute("desktopHeight");
int wD = (int) self.getDesktop().getAttribute("desktopWidth");
hD = 500;
test.setWidth(wD - 10 + "px");
test.setHeight(hD - 10 + "px");
//
// if(arg.containsKey("serie"))
// m_serie = (serie) arg.get("serie");
// else
// detailsSerie.detach();
//
// if(m_serie.getSeriesBackdrop() != null)
// {
// String uri = "http://image.tmdb.org/t/p/original" + m_serie.getSeriesBackdrop();
// URL url = new URL(uri);
// AImage img = new AImage(url);
//
// int w = Integer.parseInt(detailsSerie.getWidth().replace("px", ""));
// int h = Integer.parseInt(detailsSerie.getHeight().replace("px", ""));
// int wI = img.getWidth();
// int hI = img.getHeight();
// int wR = w;
// int hR = hI * w / wI;
//
// if(hR < h)
// {
// hR = h;
// wR = wI * h / hI;
// }
//
// String size = String.valueOf(wR) + "px " + String.valueOf(hR) + "px";
// String format = "background:url('%1$s') no-repeat center center fixed; -webkit-background-size: " + size + "; -moz-background-size: \" + size + \"; -o-background-size: \" + size + \"; background-size: \" + size + \";";
// String style = String.format(format, uri);
// detailsSerie.setContentStyle(style);
// }
//
// try
// {
// Statement stmt = ds.getStatement();
// ResultSet rs = stmt.executeQuery(
// "SELECT resolution" +
// " FROM resolution" +
// " ORDER BY sort;"
// );
//
// while(rs.next())
// {
// resolution.appendItem(rs.getString("resolution"));
// }
// }
// catch(SQLException e)
// {
// e.printStackTrace();
// }
// finally
// {
// ds.close();
// }
//
// detailsSerie.setTitle(m_serie.getSeriesName() + " (" + m_serie.getSeriesFirstAired() + ")");
// overviewLabel.setValue(m_serie.getSeriesOverview());
// downloadLink.setValue(m_serie.getSeriesDownload());
// localPath.setValue(m_serie.getSeriesLocalPath());
// resolution.setValue(m_serie.getSeriesResolution());
// cliffhanger.setChecked(m_serie.getSeriesCliffhanger());
// }
// catch(Exception e)
// {
// e.printStackTrace();
// test.detach();
// }
// finally
// {
// }
//
//
// for(int i = m_serie.getMinSeason(); i <= m_serie.getMaxSeason(); i++)
// {
// if(i < 1)
// continue;
//
// addSeasonPanel(i, m_serie.getEpisodeState());
// }
}
protected void addSeasonPanel(int season, SortedMap<Integer, Integer> state)
{
int maxEpisode = 0;
String styleString = "display: grid; " +
"grid-template-columns: 4fr ";
Groupbox groupbox = new Groupbox();
groupbox.setId("groupboxSeason" + season);
Caption caption = new Caption();
caption.setLabel("Season " + season);
groupbox.insertBefore(caption, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radiogroup radiogroup = new Radiogroup();
radiogroup.setName("radiogroupSeason" + _season + "_" + _episode);
radiogroup.setId("radiogroupSeason" + _season + "_" + _episode);
groupbox.insertBefore(radiogroup, null);
maxEpisode = _episode;
}
else if(_season > season)
break;
}
NoDOM nodom = new NoDOM();
groupbox.insertBefore(nodom, null);
Div div = new Div();
//div.setWidth("100%");
nodom.insertBefore(div, null);
Label dummy = new Label();
div.insertBefore(dummy, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Label episodeLabel = new Label();
episodeLabel.setValue("" + _episode);
div.insertBefore(episodeLabel, null);
}
else if(_season > season)
break;
}
Button buttonInit = new Button();
buttonInit.setLabel("init");
buttonInit.setId("buttonInit" + season);
div.insertBefore(buttonInit, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radio radio = new Radio();
radio.setId("init" + _season + "_" + _episode);
radio.setRadiogroup("radiogroupSeason" + _season + "_" + _episode);
div.insertBefore(radio, null);
}
else if(_season > season)
break;
}
Button buttonProg = new Button();
buttonProg.setLabel("prog");
buttonProg.setId("buttonProg" + season);
div.insertBefore(buttonProg, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radio radio = new Radio();
radio.setId("prog" + _season + "_" + _episode);
radio.setRadiogroup("radiogroupSeason" + _season + "_" + _episode);
div.insertBefore(radio, null);
}
else if(_season > season)
break;
}
Button buttonDone = new Button();
buttonDone.setLabel("done");
buttonDone.setId("buttonDone" + season);
div.insertBefore(buttonDone, null);
for(int key : state.keySet())
{
int _season = key >> 8;
int _episode = key & 0xFF;
if(_season == season)
{
Radio radio = new Radio();
radio.setId("done" + _season + "_" + _episode);
radio.setRadiogroup("radiogroupSeason" + _season + "_" + _episode);
div.insertBefore(radio, null);
}
else if(_season > season)
break;
}
for(int i = 0;i < maxEpisode;i++)
{
styleString = styleString + "2fr ";
}
styleString = styleString + "; grid-gap: 10px; justify-items: center;";
div.setStyle(styleString);
// detailsSerie.insertBefore(groupbox, buttons);
}
}
+39 -19
View File
@@ -1,39 +1,59 @@
<window id="detailsSerie"
title=""
contentStyle="overflow:auto"
border="normal"
apply="at.windesign.application.serie.serieDetailsForwardComposer, at.windesign.application.serie.serieDetailsSelectorComposer">
apply="at.windesign.application.serie.serieDetailsForwardComposer, at.windesign.application.serie.serieDetailsSelectorComposer"
width="500px"
height="500px"
>
<style>
.grid {
display: grid;
grid-template-columns: 4fr 4fr 1fr 1fr;
grid-gap: 10px;
justify-items: center;
}
</style>
<groupbox id="overview"
style="opacity: 0.65;"
>
<caption>Overview</caption>
<label id="overviewLabel"
value=""/>
</groupbox>
<groupbox id="settings"
style="opacity: 0.65;"
>
<caption>Settings</caption>
<hbox width="100%">
<vbox width="45%">
<nodom>
<div sclass="grid"
width="100%">
<label value="Download Link"/>
<textbox id="downloadLink"
tabindex="1"/>
</vbox>
<vbox width="45%">
<label value="Local Path"/>
<textbox id="localPath"
tabindex="2"/>
</vbox>
<vbox width="10%">
<label value="Resolution"/>
<textbox id="resolution"
tabindex="3"/>
</vbox>
</hbox>
<label value="Cliffhanger"/>
<textbox id="downloadLink"
width="100%"
tabindex="1"/>
<textbox id="localPath"
width="100%"
tabindex="2"/>
<combobox id="resolution"
width="100%"
tabindex="3"/>
<checkbox id="cliffhanger"
tabindex="4"/>
</div>
</nodom>
</groupbox>
<hbox width="100%" pack="center">
<hbox id="buttons"
width="100%"
pack="center">
<button id="saveButton" label="Save"/>
<button id="cancelButton" label="Cancel"/>
<button id="deleteButton" label="Delete"/>
</hbox>
</window>
</window>
+92
View File
@@ -0,0 +1,92 @@
<window id="test"
title="Hi"
contentStyle="overflow:auto"
border="normal"
apply="at.windesign.application.testing.testForwardComposer"
width="500px"
height="500px"
>
<style>
.grid {
display: grid;
grid-template-columns: 4fr 4fr 1fr 1fr;
grid-gap: 10px;
justify-items: center;
}
</style>
<groupbox id="overview"
>
<caption>Overview</caption>
<label id="overviewLabel"
value=""/>
</groupbox>
<groupbox id="settings"
>
<caption>Settings</caption>
<nodom>
<div sclass="grid"
width="100%">
<label value="Download Link"/>
<label value="Local Path"/>
<label value="Resolution"/>
<label value="Cliffhanger"/>
<textbox id="downloadLink"
width="100%"
tabindex="1"/>
<textbox id="localPath"
width="100%"
tabindex="2"/>
<combobox id="resolution"
width="100%"
tabindex="3"/>
<checkbox id="cliffhanger"
tabindex="4"/>
</div>
</nodom>
</groupbox>
<groupbox
>
<caption>Test</caption>
<vlayout>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
<label value="blablabla"/>
</vlayout>
</groupbox>
<hbox id="buttons"
width="100%"
pack="center">
<button id="saveButton" label="Save"/>
<button id="cancelButton" label="Cancel"/>
<button id="deleteButton" label="Delete"/>
</hbox>
</window>