| Index: chrome/browser/resources/print_preview/print_preview.html
|
| diff --git a/chrome/browser/resources/print_preview/print_preview.html b/chrome/browser/resources/print_preview/print_preview.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..45207ded29b741f55271be237a06f831cc3f72e9
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/print_preview/print_preview.html
|
| @@ -0,0 +1,228 @@
|
| +
|
| +<html i18n-values="dir:textdirection">
|
| +<head>
|
| +<title>Print Preview</title>
|
| +<link rel="stylesheet" href="chrome://resources/css/button.css">
|
| +<link rel="stylesheet" href="chrome://resources/css/list.css">
|
| +<link rel="stylesheet" href="chrome://resources/css/tree.css">
|
| +<link rel="stylesheet" href="chrome://resources/css/menu.css">
|
| +<link rel="stylesheet" href="print_preview.css">
|
| +<script src="chrome://resources/css/tree.css.js"></script>
|
| +<script src="chrome://resources/js/cr.js"></script>
|
| +<script src="chrome://resources/js/class_list.js"></script>
|
| +<script src="chrome://resources/js/cr/event_target.js"></script>
|
| +<script src="chrome://resources/js/cr/link_controller.js"></script>
|
| +<script src="chrome://resources/js/cr/promise.js"></script>
|
| +<script src="chrome://resources/js/cr/ui.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/array_data_model.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/list_selection_model.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/list_item.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/list.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/tree.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/splitter.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/command.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/menu_item.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/menu.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/position_util.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/menu_button.js"></script>
|
| +<script src="chrome://resources/js/cr/ui/context_menu_handler.js"></script>
|
| +
|
| +<script src="chrome://resources/js/util.js"></script>
|
| +<script src="chrome://resources/js/local_strings.js"></script>
|
| +<script src="chrome://resources/js/i18n_template.js"></script>
|
| +
|
| +<script src="chrome://resources/js/class_list.js"></script>
|
| +<script src="js/preview_list.js"></script>
|
| +</head>
|
| +<body i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize">
|
| +
|
| +<div style="display:-webkit-box;height:100%;with:100%;">
|
| + <div style="-webkit-box-flex:0;" class="bar left">
|
| + <div class="main-options">
|
| + <div>Destination</div>
|
| + <button class="dropdown" menu="#printer-menu" id="printer-chooser">Ironhorse</button>
|
| + <br />
|
| + <button id="print-button" class="action">Print</button>
|
| + <button id="cancel-button">Cancel</button>
|
| + </div>
|
| + <div id="more-options">
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Archive a copy to Docs
|
| + </div>
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Two-sided (duplex)
|
| + </div>
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Multiple Copies
|
| + </div>
|
| + <div id="hidden-options" class="closed">
|
| +
|
| + </div>
|
| + <div id="more-options-toggle">
|
| + More Options
|
| + </div>
|
| + </div>
|
| + </div>
|
| + <div class="page-layout">
|
| + <img id="bigpreview" class="placeholder" src="ss.png">
|
| + </div>
|
| + <div class="preview-list-container">
|
| + <list id=preview></list>
|
| + </div>
|
| +</div>
|
| +
|
| +
|
| +<menu id="printer-menu">
|
| +
|
| +</menu>
|
| +
|
| +<script>
|
| +const ArrayDataModel = cr.ui.ArrayDataModel;
|
| +const PreviewList = pp.PreviewList;
|
| +const List = cr.ui.List;
|
| +const ListItem = cr.ui.ListItem;
|
| +const Menu = cr.ui.Menu;
|
| +const MenuItem = cr.ui.MenuItem;
|
| +const MenuButton = cr.ui.MenuButton;
|
| +const Command = cr.ui.Command;
|
| +
|
| +cr.ui.decorate('menu', Menu);
|
| +cr.ui.decorate('button[menu]', MenuButton);
|
| +cr.ui.decorate('command', Command);
|
| +PreviewList.decorate(preview);
|
| +
|
| +var BigPreview = document.getElementById('bigpreview');
|
| +var PrinterMenuButton = document.getElementById("printer-chooser");
|
| +var PrintButton = document.getElementById('print-button');
|
| +var PrinterMenu = document.getElementById("printer-menu");
|
| +
|
| +var moreOptionsToggle = document.getElementById('more-options-toggle');
|
| +var hiddenOptions = document.getElementById('hidden-options');
|
| +
|
| +function getPreferredHeight(el) {
|
| + var oldHeight = el.style.height;
|
| + el.style.height = 'auto';
|
| + var height = el.offsetHeight;
|
| + el.style.height = oldHeight;
|
| + return height;
|
| +}
|
| +moreOptionsToggle.addEventListener('click', function(e) {
|
| + if (hiddenOptions.offsetHeight == 0) {
|
| + hiddenOptions.style.height = getPreferredHeight(hiddenOptions);
|
| + e.target.innerHTML = "Less Options";
|
| + } else {
|
| + hiddenOptions.style.height = 0;
|
| + e.target.innerHTML = "More Options";
|
| + }
|
| +});
|
| +
|
| +// TODO(feldstein): Why can't this listen to the button instead?
|
| +document.addEventListener('command', setActivePrinter);
|
| +
|
| +function setActivePrinter(e) {
|
| + var printer = e.command.printer;
|
| + PrinterMenuButton.innerHTML = printer.name;
|
| +}
|
| +
|
| +function setPages(pages) {
|
| + var model = new ArrayDataModel(pages);
|
| + preview.dataModel = model;
|
| +}
|
| +
|
| +function setPrinters(printers) {
|
| + printers.forEach(function(printer) {
|
| + var item;
|
| + if (!printer.name) {
|
| + item = document.createElement('hr');
|
| + } else {
|
| + item = new MenuItem();
|
| + item.className = printer.status;
|
| + item.printer = printer;
|
| + var command = new Command();
|
| + command.printer = printer;
|
| + command.disabled = (printer.status != 'online');
|
| + item.command = command;
|
| + item.innerHTML = printer.name + ' <span class="subtitle">' +
|
| + (printer.location || '') + '</span>';
|
| + }
|
| + PrinterMenu.appendChild(item);
|
| + });
|
| + PrinterMenu.decorate();
|
| +}
|
| +
|
| +function pageClicked(e) {
|
| + if (preview.selectedItem.thumb) {
|
| + BigPreview.src = preview.selectedItem.thumb;
|
| + }
|
| +}
|
| +preview.addEventListener('change', pageClicked);
|
| +
|
| +document.getElementById('cancel-button').addEventListener('click', function(){
|
| + chrome.windows.getCurrent(function(win) {
|
| + chrome.tabs.getSelected(win.id, function(obj) {
|
| + chrome.tabs.remove(obj.id);
|
| + });
|
| + });
|
| +});
|
| +
|
| +/*
|
| + * Mock Data
|
| + */
|
| +
|
| +var mockPages = [
|
| + {page: 1, thumb: 'page.png'},
|
| + {page: 2, thumb: 'page2.png'},
|
| + {page: 3},
|
| + {page: 4, thumb: 'page2.png'}
|
| +];
|
| +setPages(mockPages);
|
| +
|
| +var mockPrinters = [
|
| + {name: 'Ironhorse', location: 'MTV-1950-2', status: 'online'},
|
| + {name: 'acorn-color', location: 'MTV-1950-1', status: 'offline'},
|
| + {name: 'HP Office Jet 3600 Series With A Really Long Name Just For Testing Purposes',
|
| + location: 'Mountain View, CA', status: 'offline'},
|
| + {},
|
| + {name: 'Cloud Print', status: 'online'},
|
| +];
|
| +setPrinters(mockPrinters);
|
| +
|
| +</script>
|
| +
|
| +<div style="display:none" id="mock-hidden-options">
|
| + <hr />
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Archive a copy to Docs
|
| + </div>
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Two-sided (duplex)
|
| + </div>
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Multiple Copies
|
| + </div>
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Archive a copy to Docs
|
| + </div>
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Two-sided (duplex)
|
| + </div>
|
| + <div class="printer-option">
|
| + <input type="checkbox">
|
| + Multiple Copies
|
| + </div>
|
| +</div>
|
| +<script>
|
| + document.getElementById('hidden-options').innerHTML =
|
| + document.getElementById('mock-hidden-options').innerHTML;
|
| +</script>
|
| +
|
| +</body>
|
| +</html>
|
|
|