package service;
import hibernateSwingApi.component.CTextField;
import java.awt.Checkbox;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import barcode.pojos.EtiketLabel;
public class LabelTasarimPaneli extends JPanel {
public LabelTasarimPaneli() {
}
FontMetrics metrics;
private static final long serialVersionUID = 1L;
private int labelWidth;
private int labelHeight;
private JButton bold;
private CTextField icerik;
private JButton italic;
private JSpinner size;
private JLabel labelTasarla;
private JComboBox<String> yazitipi;
private JButton color;
private JPanel cPanelLabelDuzenle;
private JPanel onizleme;
private JSlider gen;
private JSlider yuks;
private JButton reverseColor;
private Checkbox drawCross;
public JPanel panelOlustur(JPanel onizleme, EtiketLabel etiketLabel,
JSlider gen, JSlider yuks) {
this.onizleme = onizleme;
this.gen = gen;
this.yuks = yuks;
labelTasarla = etiketLabel.getLabel();
cPanelLabelDuzenle = new JPanel();
cPanelLabelDuzenle.setName("Label Tasarla");
cPanelLabelDuzenle.setBounds(0, 0, 340, 120);
cPanelLabelDuzenle.setBorder(new LineBorder(new Color(0, 0, 0), 2));
cPanelLabelDuzenle.setLayout(null);
icerik = new CTextField(30);
icerik.setName("icerik");
icerik.setFont(new Font("Arial", Font.PLAIN, 11));
icerik.setBounds(10, 11, 315, 39);
cPanelLabelDuzenle.add(icerik);
icerik.setColumns(10);
metrics = icerik.getFontMetrics(icerik.getFont());
size = new JSpinner();
size.setModel(new SpinnerNumberModel(11, 8, 72, 1));
size.setBounds(121, 62, 41, 20);
cPanelLabelDuzenle.add(size);
yazitipi = new JComboBox<String>();
yazitipi.setBounds(9, 62, 102, 20);
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
String[] fonts = ge.getAvailableFontFamilyNames();
for (int i = 0; i < fonts.length; i++) {
if (fonts[i].equals("Arial")) {
fonts[i] = "Arial Black";
}
}
yazitipi.setModel(new DefaultComboBoxModel<String>(fonts));
cPanelLabelDuzenle.add(yazitipi);
bold = new JButton();
bold.setText("K");
bold.setFont(new Font("Tahoma", Font.BOLD, 10));
bold.setBounds(168, 61, 41, 23);
cPanelLabelDuzenle.add(bold);
italic = new JButton();
italic.setText("T");
italic.setFont(new Font("Arial", Font.ITALIC, 10));
italic.setBounds(219, 61, 41, 23);
cPanelLabelDuzenle.add(italic);
color = new JButton();
color.setBackground(labelTasarla.getForeground());
color.setFont(new Font("Arial", Font.PLAIN, 7));
color.setBounds(270, 61, 55, 23);
cPanelLabelDuzenle.add(color);
reverseColor = new JButton();
reverseColor.setText("Ayna");
reverseColor.setFont(new Font("Tahoma", Font.BOLD, 10));
reverseColor.setBounds(9, 90, 70, 23);
cPanelLabelDuzenle.add(reverseColor);
drawCross = new Checkbox("Kampanya");
drawCross.setFont(new Font("Tahoma", Font.BOLD, 10));
drawCross.setBounds(90, 90, 70, 23);
cPanelLabelDuzenle.add(drawCross);
initLabelPanel();
cPanelLabelDuzenle.updateUI();
initListeners();
return cPanelLabelDuzenle;
}
private void initLabelPanel() {
if (labelTasarla.getText() != null) {
icerik.setText(labelTasarla.getText());
}
if (labelTasarla.getFont() != null) {
icerik.setFont(labelTasarla.getFont());
if (labelTasarla.getFont().getStyle() == 1) {
selectedBoldButton();
} else if (labelTasarla.getFont().getStyle() == 2) {
selectedItalicButton();
}
String fontFamily = labelTasarla.getFont().getFamily();
yazitipi.setSelectedItem(fontFamily);
size.setValue(labelTasarla.getFont().getSize());
}
if (labelTasarla.getForeground() != null) {
icerik.setForeground(labelTasarla.getForeground());
}
if (labelTasarla.getHeight() != 0) {
labelHeight = pxToMm(metrics.getHeight());
}
if (labelTasarla.getWidth() != 0) {
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
}
if (labelTasarla.isOpaque()) {
icerik.setBackground(labelTasarla.getBackground());
}
if (labelTasarla.getToolTipText() != null) {
if (labelTasarla.getToolTipText().equals("kampanya")) {
drawCross.setState(true);
reverseColor.setEnabled(false);
}
}
if (labelTasarla.getName().equals("pesinSatisFiyati")
|| labelTasarla.getName().equals("taksitliSatisFiyati")) {
drawCross.setEnabled(false);
}
}
private void initListeners() {
drawCross.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
if (drawCross.getState() == true) {
labelTasarla.setToolTipText("kampanya");
reverseColor.setEnabled(false);
} else {
labelTasarla.setToolTipText(null);
reverseColor.setEnabled(true);
}
}
});
reverseColor.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
reverseColorClicked();
uygulaClicked();
}
});
yazitipi.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
yazitipiChanged();
uygulaClicked();
}
});
bold.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectedBoldButton();
uygulaClicked();
}
});
italic.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectedItalicButton();
uygulaClicked();
}
});
color.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
colorChanged();
uygulaClicked();
}
});
icerik.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
labelHeight = pxToMm(metrics.getHeight() + 4);
uygulaClicked();
}
@Override
public void keyPressed(KeyEvent arg0) {
}
});
size.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
sizeChanged();
uygulaClicked();
}
});
}
protected void reverseColorClicked() {
if (labelTasarla.getName().equals("pesinSatisFiyati")
|| labelTasarla.getName().equals("taksitliSatisFiyati")) {
drawCross.setEnabled(false);
reverseColor.setEnabled(true);
} else {
if (drawCross.isEnabled()) {
drawCross.setEnabled(false);
} else {
drawCross.setEnabled(true);
}
}
Color foreGround = labelTasarla.getForeground();
Color backGround = labelTasarla.getBackground();
icerik.setBackground(foreGround);
icerik.setForeground(backGround);
labelTasarla.setOpaque(true);
labelTasarla.setBackground(foreGround);
labelTasarla.setForeground(backGround);
color.setBackground(backGround);
metrics = icerik.getFontMetrics(icerik.getFont());
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
labelHeight = pxToMm(metrics.getHeight() + 4);
final int mmXposition = labelTasarla.getX();
final int mmYposition = labelTasarla.getY();
final int mmWidth = mmToPx(labelWidth);
final int mmHeight = mmToPx(labelHeight);
labelTasarla.setText(icerik.getText());
labelTasarla.setBounds(mmXposition, mmYposition, mmWidth, mmHeight);
Component[] comp = onizleme.getComponents();
for (int i = 0; i < comp.length; i++) {
if (comp[i].getName().equals(labelTasarla.getName())) {
onizleme.remove(comp[i]);
onizleme.updateUI();
break;
}
}
gen.setValue(mmXposition);
yuks.setValue(yuks.getMaximum() - mmYposition);
onizleme.add(labelTasarla);
onizleme.updateUI();
}
protected void uygulaClicked() {
metrics = icerik.getFontMetrics(icerik.getFont());
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
labelHeight = pxToMm(metrics.getHeight() + 4);
final int mmXposition = labelTasarla.getX();
final int mmYposition = labelTasarla.getY();
final int mmWidth = mmToPx(labelWidth);
final int mmHeight = mmToPx(labelHeight);
labelTasarla.setText(icerik.getText());
labelTasarla.setFont(icerik.getFont());
labelTasarla.setForeground(icerik.getForeground());
labelTasarla.setBounds(mmXposition, mmYposition, mmWidth, mmHeight);
Component[] comp = onizleme.getComponents();
for (int i = 0; i < comp.length; i++) {
if (comp[i].getName().equals(labelTasarla.getName())) {
onizleme.remove(comp[i]);
break;
}
}
gen.setValue(mmXposition);
yuks.setValue(yuks.getMaximum() - mmYposition);
onizleme.add(labelTasarla);
}
protected void colorChanged() {
metrics = icerik.getFontMetrics(icerik.getFont());
Color colorChoosed = JColorChooser.showDialog(cPanelLabelDuzenle,
"Renk Se�", labelTasarla.getForeground());
if (colorChoosed != null) {
icerik.setForeground(colorChoosed);
color.setBackground(colorChoosed);
color.updateUI();
}
}
protected void sizeChanged() {
metrics = icerik.getFontMetrics(icerik.getFont());
int punto = (int) size.getValue();
int style = icerik.getFont().getStyle();
String family = icerik.getFont().getFamily();
icerik.setFont(new Font(family, style, punto));
metrics = icerik.getFontMetrics(icerik.getFont());
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
labelHeight = pxToMm(metrics.getHeight() + 4);
}
protected void yazitipiChanged() {
metrics = icerik.getFontMetrics(icerik.getFont());
int punto = icerik.getFont().getSize();
int style = icerik.getFont().getStyle();
String family = (String) yazitipi.getSelectedItem();
icerik.setFont(new Font(family, style, punto));
metrics = icerik.getFontMetrics(icerik.getFont());
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
labelHeight = pxToMm(metrics.getHeight() + 4);
}
protected void selectedItalicButton() {
metrics = icerik.getFontMetrics(icerik.getFont());
Color color = italic.getBackground();
String family = icerik.getFont().getFamily();
int punto = icerik.getFont().getSize();
int style = icerik.getFont().getStyle();
if (color.equals(UIManager.getColor("Button.background"))) {
if (bold.getBackground().equals(
UIManager.getColor("Button.background"))) {
icerik.setFont(new Font(family, style | Font.ITALIC, punto));
italic.setBackground(Color.LIGHT_GRAY);
} else {
icerik.setFont(new Font(family, Font.BOLD | Font.ITALIC, punto));
italic.setBackground(Color.LIGHT_GRAY);
}
italic.updateUI();
} else {
if (bold.getBackground().equals(
UIManager.getColor("Button.background"))) {
icerik.setFont(new Font(family, Font.PLAIN, punto));
italic.setBackground(UIManager.getColor("Button.background"));
} else {
icerik.setFont(new Font(family, Font.BOLD, punto));
italic.setBackground(UIManager.getColor("Button.background"));
}
italic.updateUI();
}
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
labelHeight = pxToMm(metrics.getHeight() + 4);
}
public void selectedBoldButton() {
metrics = icerik.getFontMetrics(icerik.getFont());
Color color = bold.getBackground();
String family = icerik.getFont().getFamily();
int punto = icerik.getFont().getSize();
int style = icerik.getFont().getStyle();
if (color.equals(UIManager.getColor("Button.background"))) {
if (italic.getBackground().equals(
UIManager.getColor("Button.background"))) {
icerik.setFont(new Font(family, style | Font.BOLD, punto));
bold.setBackground(Color.LIGHT_GRAY);
} else {
icerik.setFont(new Font(family, Font.ITALIC | Font.BOLD, punto));
bold.setBackground(Color.LIGHT_GRAY);
}
bold.updateUI();
} else {
if (italic.getBackground().equals(
UIManager.getColor("Button.background"))) {
icerik.setFont(new Font(family, Font.PLAIN, punto));
bold.setBackground(UIManager.getColor("Button.background"));
} else {
icerik.setFont(new Font(family, Font.ITALIC, punto));
bold.setBackground(UIManager.getColor("Button.background"));
}
bold.updateUI();
}
labelWidth = pxToMm(metrics.stringWidth(icerik.getText())) + 2;
labelHeight = pxToMm(metrics.getHeight() + 4);
}
public static int mmToPx(int mm) {
double px1 = mm * 3.77;
int px = doubleToInt(px1);
return px;
}
public static int pxToMm(int px) {
double mm1 = px / 3.77;
int mm = doubleToInt(mm1);
return mm;
}
private static int doubleToInt(double value) {
String[] parts = (String.valueOf(value)).split("\\.");
String splittedPart = parts[1].substring(0, 1);
int parts1 = Integer.parseInt(splittedPart);
int parts0 = Integer.parseInt(parts[0]);
if (parts1 >= 5) {
parts0 = parts0 + 1;
}
return parts0;
}
}