Main.fxml 18.8 KB
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.chart.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.Font?>
<VBox xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1"
      fx:controller="org.code4everything.qiniu.controller.MainController">
    <BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="600.0"
                prefWidth="700.0" VBox.vgrow="ALWAYS">
        <center>
            <TabPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="50.0"
                     prefWidth="700.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
                <Tab text="文件上传">
                    <HBox>
                        <SplitPane dividerPositions="0.6" prefHeight="520.0" prefWidth="702.0" HBox.hgrow="ALWAYS">
                            <padding>
                                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
                            </padding>
                            <VBox>
                                <TextArea fx:id="uploadStatusTA" editable="false"
                                          maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
                                          prefHeight="504.0" prefWidth="336.0" promptText="文件上传状态" VBox.vgrow="ALWAYS">
                                    <contextMenu>
                                        <ContextMenu>
                                            <items>
                                                <MenuItem mnemonicParsing="false" onAction="#clearUploadStatus"
                                                          text="清空"/>
                                                <MenuItem mnemonicParsing="false" onAction="#saveUploadStatus"
                                                          text="另存为"/>
                                                <MenuItem mnemonicParsing="false" onAction="#copyUploadStatus"
                                                          text="复制"/>
                                            </items>
                                        </ContextMenu>
                                    </contextMenu>
                                    <VBox.margin>
                                        <Insets right="10.0"/>
                                    </VBox.margin>
                                </TextArea>
                            </VBox>
                            <VBox prefHeight="500.0" prefWidth="171.0">
                                <ComboBox fx:id="prefixCB" editable="true" maxHeight="1.7976931348623157E308"
                                          maxWidth="1.7976931348623157E308" prefHeight="35.0" prefWidth="277.0"
                                          promptText="文件前缀, 不设置则为空" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets left="10.0"/>
                                    </VBox.margin>
                                </ComboBox>
                                <HBox prefHeight="100.0" prefWidth="200.0" VBox.vgrow="NEVER">
                                    <padding>
                                        <Insets left="10.0" right="10.0" top="10.0"/>
                                    </padding>
                                    <CheckBox fx:id="recursiveCB" mnemonicParsing="false" text="文件夹递归"
                                              selected="true"/>
                                    <CheckBox fx:id="keepPathCB" mnemonicParsing="false" text="保持文件夹路径" selected="true">
                                        <HBox.margin>
                                            <Insets left="10.0"/>
                                        </HBox.margin>
                                    </CheckBox>
                                </HBox>
                                <TextArea fx:id="selectedFileTA" maxHeight="1.7976931348623157E308"
                                          maxWidth="1.7976931348623157E308" onDragDropped="#dragFileDropped"
                                          onDragOver="#dragFileOver" prefHeight="800.0" prefWidth="332.0"
                                          promptText="文件路径, 一个文件一行, 支持拖曳文件, 支持抓取网络文件" VBox.vgrow="ALWAYS">
                                    <VBox.margin>
                                        <Insets left="10.0" top="10.0"/>
                                    </VBox.margin>
                                </TextArea>
                                <HBox alignment="TOP_CENTER" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets left="10.0" top="10.0"/>
                                    </VBox.margin>
                                    <Button contentDisplay="CENTER" maxHeight="1.7976931348623157E308"
                                            maxWidth="1.7976931348623157E308" mnemonicParsing="false"
                                            onAction="#showOpenFileDialog" prefHeight="27.0" prefWidth="156.0"
                                            text="选择文件"
                                            HBox.hgrow="ALWAYS">
                                        <HBox.margin>
                                            <Insets right="10.0"/>
                                        </HBox.margin>
                                    </Button>
                                    <Button alignment="CENTER" maxHeight="1.7976931348623157E308"
                                            maxWidth="1.7976931348623157E308" mnemonicParsing="false"
                                            onAction="#uploadFile" prefHeight="27.0" prefWidth="156.0" text="开始上传"
                                            HBox.hgrow="ALWAYS">
                                        <HBox.margin>
                                            <Insets left="10.0"/>
                                        </HBox.margin>
                                    </Button>
                                </HBox>
                            </VBox>
                        </SplitPane>
                    </HBox>
                </Tab>
                <Tab text="资源管理">
                    <VBox>
                        <HBox alignment="CENTER_LEFT" prefHeight="52.0" prefWidth="700.0" VBox.vgrow="NEVER">
                            <padding>
                                <Insets left="10.0"/>
                            </padding>
                            <Label alignment="CENTER" text="空间域名" HBox.hgrow="NEVER">
                                <font>
                                    <Font size="14.0"/>
                                </font>
                            </Label>
                            <TextField fx:id="domainTF" editable="false" prefHeight="27.0"
                                       prefWidth="245.0" promptText="空间域名" HBox.hgrow="NEVER">
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </TextField>
                            <TextField fx:id="searchTF" onKeyReleased="#searchFile" prefHeight="27.0"
                                       prefWidth="275.0" promptText="搜索文件, 支持正则表达式" HBox.hgrow="NEVER">
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </TextField>
                            <HBox alignment="CENTER_RIGHT" HBox.hgrow="ALWAYS">
                                <HBox.margin>
                                    <Insets/>
                                </HBox.margin>
                                <padding>
                                    <Insets right="15.0"/>
                                </padding>
                                <Label fx:id="lengthLabel"/>
                            </HBox>
                        </HBox>
                        <HBox VBox.vgrow="ALWAYS">
                            <TableView fx:id="resTV" editable="true" prefHeight="479.0" prefWidth="602.0"
                                       HBox.hgrow="ALWAYS">
                                <columns>
                                    <TableColumn fx:id="nameTC" prefWidth="278.0" text="文件名"/>
                                    <TableColumn fx:id="typeTC" minWidth="5.0" prefWidth="81.0" text="文件类型"/>
                                    <TableColumn fx:id="sizeTC" prefWidth="90.0" text="文件大小"/>
                                    <TableColumn fx:id="timeTC" prefWidth="152.0" text="最后更新时间"/>
                                </columns>
                                <HBox.margin>
                                    <Insets bottom="10.0" left="10.0"/>
                                </HBox.margin>
                            </TableView>
                            <VBox alignment="TOP_CENTER" prefHeight="200.0" prefWidth="100.0" HBox.hgrow="NEVER">
                                <Button mnemonicParsing="false" onAction="#refreshResourceData" text="刷新列表"
                                        VBox.vgrow="NEVER"/>
                                <Button mnemonicParsing="false" onAction="#copyLink" text="复制链接" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#deleteFile" text="删除文件" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#showFileMovableDialog" text="移动到..."
                                        VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#setLife" text="生存时间" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#updateFile" text="更新镜像" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#publicDownload" text="公有下载"
                                        VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#privateDownload" text="私有下载"
                                        VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#openFile" text="打开文件" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#refreshFile" text="文件刷新" VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <Button mnemonicParsing="false" onAction="#downloadCdnLog" text="日志下载"
                                        VBox.vgrow="NEVER">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                </Button>
                                <VBox alignment="BOTTOM_CENTER" VBox.vgrow="ALWAYS">
                                    <VBox.margin>
                                        <Insets top="10.0"/>
                                    </VBox.margin>
                                    <padding>
                                        <Insets bottom="10.0"/>
                                    </padding>
                                    <Label fx:id="sizeLabel"/>
                                </VBox>
                            </VBox>
                        </HBox>
                    </VBox>
                </Tab>
                <Tab text="数据统计">
                    <VBox>
                        <HBox alignment="CENTER" minHeight="-Infinity" minWidth="-Infinity" prefHeight="40.0"
                              prefWidth="700.0" VBox.vgrow="NEVER">
                            <Label text="开始日期" HBox.hgrow="NEVER">
                                <font>
                                    <Font size="14.0"/>
                                </font>
                                <HBox.margin>
                                    <Insets/>
                                </HBox.margin>
                            </Label>
                            <DatePicker fx:id="startDP" onAction="#dateChange" prefWidth="125.0" promptText="开始日期"
                                        HBox.hgrow="NEVER">
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </DatePicker>
                            <Label text="结束日期">
                                <font>
                                    <Font size="14.0"/>
                                </font>
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </Label>
                            <DatePicker fx:id="endDP" onAction="#dateChange" prefWidth="125.0" promptText="结束日期"
                                        HBox.hgrow="NEVER">
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </DatePicker>
                            <ComboBox fx:id="fluxUnitCB" prefWidth="70.0" promptText="统计单位" HBox.hgrow="NEVER">
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </ComboBox>
                            <ComboBox fx:id="bandwidthUnitCB" prefWidth="70.0" promptText="统计单位">
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </ComboBox>
                            <Label text="时间跨度不超过31天" HBox.hgrow="NEVER">
                                <font>
                                    <Font size="14.0"/>
                                </font>
                                <HBox.margin>
                                    <Insets left="10.0"/>
                                </HBox.margin>
                            </Label>
                        </HBox>
                        <AreaChart fx:id="fluxAC" VBox.vgrow="ALWAYS">
                            <xAxis>
                                <CategoryAxis side="BOTTOM"/>
                            </xAxis>
                            <yAxis>
                                <NumberAxis side="LEFT"/>
                            </yAxis>
                        </AreaChart>
                        <AreaChart fx:id="bandwidthAC" VBox.vgrow="ALWAYS">
                            <xAxis>
                                <CategoryAxis side="BOTTOM"/>
                            </xAxis>
                            <yAxis>
                                <NumberAxis side="LEFT"/>
                            </yAxis>
                        </AreaChart>
                    </VBox>
                </Tab>
            </TabPane>
        </center>
        <top>
            <VBox BorderPane.alignment="CENTER">
                <BorderPane.margin>
                    <Insets/>
                </BorderPane.margin>
                <HBox VBox.vgrow="NEVER">
                    <padding>
                        <Insets top="10" bottom="10"/>
                    </padding>
                    <ComboBox fx:id="bucketCB" minHeight="-Infinity" minWidth="-Infinity" prefHeight="27.0"
                              prefWidth="205.0" promptText="还没有选择存储空间" HBox.hgrow="NEVER">
                        <HBox.margin>
                            <Insets left="10.0"/>
                        </HBox.margin>
                    </ComboBox>
                    <TextField fx:id="zoneTF" editable="false" promptText="存储区域" HBox.hgrow="NEVER">
                        <HBox.margin>
                            <Insets left="10.0"/>
                        </HBox.margin>
                    </TextField>
                    <Button mnemonicParsing="false" onAction="#showBucketDialog" text="添加存储空间"
                            HBox.hgrow="NEVER">
                        <HBox.margin>
                            <Insets left="10.0"/>
                        </HBox.margin>
                    </Button>
                    <Button mnemonicParsing="false" onAction="#showKeyDialog" text="重置密钥" HBox.hgrow="NEVER">
                        <HBox.margin>
                            <Insets left="10.0"/>
                        </HBox.margin>
                    </Button>
                    <Button mnemonicParsing="false" onAction="#openConfigFile" text="打开配置文件" HBox.hgrow="NEVER">
                        <HBox.margin>
                            <Insets left="10.0"/>
                        </HBox.margin>
                    </Button>
                </HBox>
            </VBox>
        </top>
    </BorderPane>
</VBox>