/*
  This file is a part of Angry IP Scanner source code,
  see http://www.angryip.org/ for more information.
  Licensed under GPLv2.
 */
package net.azib.ipscan.gui.fetchers;

import net.azib.ipscan.config.Labels;
import net.azib.ipscan.fetchers.Fetcher;
import net.azib.ipscan.fetchers.FetcherPrefs;
import net.azib.ipscan.fetchers.MACFetcher;
import net.azib.ipscan.gui.AbstractModalDialog;
import net.azib.ipscan.gui.util.LayoutHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.widgets.*;

public class MACFetcherPrefs extends AbstractModalDialog implements FetcherPrefs {
	private MACFetcher fetcher;
	private Text separator;

	public void openFor(Fetcher fetcher) {
		this.fetcher = (MACFetcher) fetcher;
		open();
	}

	@Override
	protected void populateShell() {
		shell = new Shell(Display.getCurrent().getActiveShell(), SWT.DIALOG_TRIM);
		shell.setText(fetcher.getName());
		shell.setLayout(LayoutHelper.formLayout(10, 10, 5));

		var separatorLabel = new Label(shell, SWT.NONE);
		separatorLabel.setText(Labels.getLabel("fetcher.mac.separator"));
		separator = new Text(shell, SWT.BORDER);
		separator.setText(fetcher.getSeparator());
		separator.setLayoutData(LayoutHelper.formData(new FormAttachment(0), new FormAttachment(100), new FormAttachment(separatorLabel), null));

		var okButton = new Button(shell, SWT.NONE);
		okButton.setText(Labels.getLabel("button.OK"));

		var cancelButton = new Button(shell, SWT.NONE);
		cancelButton.setText(Labels.getLabel("button.cancel"));

		positionButtonsInFormLayout(okButton, cancelButton, separator);

		okButton.addListener(SWT.Selection, e -> {
			savePreferences();
			close();
		});
		cancelButton.addListener(SWT.Selection, e -> close());

		shell.pack();
	}

	void savePreferences() {
		var text = separator.getText();
		fetcher.setSeparator(text);
		fetcher.getPreferences().put("separator", text);
	}
}
